blob: 22d59eed5739ee08dca4cabcac37b5ce2b926f7c [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Srikant Kuppa17ef2a62013-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 Ma70627492013-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 Khannac0b992f2012-12-04 15:08:18 -0800130 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800131#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700132 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800136#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700137 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800138#else
139 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800140#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700141 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800142#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700143 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800144#else
145 ,FEATURE_NOT_SUPPORTED
146#endif
Ravi Joshi96d77342013-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
Yue Mae2e09da2013-08-26 10:59:03 -0700160 ,WOW //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700161#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Mae2e09da2013-08-26 10:59:03 -0700162 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700163#else
164 ,FEATURE_NOT_SUPPORTED
165#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700166 ,FEATURE_NOT_SUPPORTED //24
167 ,FEATURE_NOT_SUPPORTED //25
168 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Mae2e09da2013-08-26 10:59:03 -0700169 ,FEATURE_NOT_SUPPORTED //27
170 ,WLAN_PERIODIC_TX_PTRN //28
Mohit Khannac0b992f2012-12-04 15:08:18 -0800171 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700172
173/*--------------------------------------------------------------------------
174 WLAN DAL State Machine
175 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700176WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700177{
178 /*WDI_INIT_ST*/
179 {{
180 WDI_MainStart, /*WDI_START_EVENT*/
181 NULL, /*WDI_STOP_EVENT*/
182 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
183 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
184 WDI_MainClose, /*WDI_CLOSE_EVENT*/
185 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
186 }},
187
188 /*WDI_STARTED_ST*/
189 {{
190 WDI_MainStartStarted, /*WDI_START_EVENT*/
191 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
192 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
193 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
194 NULL, /*WDI_CLOSE_EVENT*/
195 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
196 }},
197
198 /*WDI_STOPPED_ST*/
199 {{
200 WDI_MainStart, /*WDI_START_EVENT*/
201 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
202 NULL, /*WDI_REQUEST_EVENT*/
203 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
204 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700205 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700206 }},
207
208 /*WDI_BUSY_ST*/
209 {{
210 WDI_MainStartBusy, /*WDI_START_EVENT*/
211 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
212 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
213 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
214 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
215 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
216 }}
217};
218
Jeff Johnsone7245742012-09-05 17:12:55 -0700219/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700220 DAL Request Processing Array - the functions in this table will only be
221 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700222 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700223 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700224WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700225{
226 /*INIT*/
227 WDI_ProcessStartReq, /* WDI_START_REQ */
228 WDI_ProcessStopReq, /* WDI_STOP_REQ */
229 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
230
231 /*SCAN*/
232 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
233 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
234 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
235 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
236
237 /*ASSOCIATION*/
238 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
239 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
240 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
241 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
242 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
243
244 /* Security */
245 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
246 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
247 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
248 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
249
250 /* QoS and BA APIs */
251 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
252 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
253 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
254 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
255 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
256
257 /* Miscellaneous Control APIs */
258 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
259 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
260 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
261 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
262 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
263
264 /*BA APIs*/
265 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
266 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
267
268 /*Beacon processing APIs*/
269 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
270 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
271
272 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
273 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
274 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
275 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700276 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700277 /* PowerSave APIs */
278 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
279 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
280 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
281 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
282 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
283 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
284 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
285 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
286 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
287 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
288 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
289 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
290 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
291 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
292 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
293 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
294 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
295 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
296 /*NV Download APIs*/
297 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
298 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
299 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
300#ifdef WLAN_FEATURE_VOWIFI_11R
301 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
302#else
303 NULL,
304#endif /* WLAN_FEATURE_VOWIFI_11R */
305 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
306 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700307 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700308
309#ifdef FEATURE_OEM_DATA_SUPPORT
310 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
311#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700313#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700314 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700315
316 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700317
318#ifdef FEATURE_WLAN_SCAN_PNO
319 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
320 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
321 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
322#else
323 NULL,
324 NULL,
325 NULL,
326#endif /* FEATURE_WLAN_SCAN_PNO */
327
328 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700329
Jeff Johnson295189b2012-06-20 16:38:30 -0700330#ifdef WLAN_FEATURE_PACKET_FILTERING
331 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700332 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700333 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700335 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700336 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700337 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700338 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700339#else
340 NULL,
341 NULL,
342 NULL,
343 NULL,
344#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700345 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700346 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
347 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
348
349 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
350#ifdef FEATURE_WLAN_CCX
351 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
352#else
353 NULL,
354#endif
355
356#ifdef WLAN_FEATURE_GTK_OFFLOAD
357 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
358 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
359#else
360 NULL,
361 NULL,
362#endif // WLAN_FEATURE_GTK_OFFLOAD
363
364 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
365 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700366#ifdef WLAN_FEATURE_11AC
367 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800368#else
369 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700370#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800371#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
372 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
373#else
schangd82195a2013-03-13 18:41:24 -0700374 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800375#endif
schangd82195a2013-03-13 18:41:24 -0700376 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700377#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700378 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700379#else
380 NULL,
381#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530382#ifdef FEATURE_WLAN_TDLS
383 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
384#else
385 NULL,
386#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700387#ifdef FEATURE_WLAN_LPHB
388 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
389#else
390 NULL,
391#endif /* FEATURE_WLAN_LPHB */
schangd82195a2013-03-13 18:41:24 -0700392 /*-------------------------------------------------------------------------
393 Indications
394 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700395 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800396 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530397 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
398 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700399#ifdef WLAN_FEATURE_11W
400 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
401#else
402 NULL,
403#endif
Yue Ma365933a2013-08-14 15:59:08 -0700404 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
405 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700406};
407
408
Jeff Johnsone7245742012-09-05 17:12:55 -0700409/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700410 DAL Request Processing Array - the functions in this table will only be
411 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700412 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700413 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700414WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700415{
416 /*INIT*/
417 WDI_ProcessStartRsp, /* WDI_START_RESP */
418 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
419 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
420
421 /*SCAN*/
422 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
423 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
424 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
425 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
426
427 /* ASSOCIATION*/
428 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
429 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
430 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
431 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
432 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
433
434 /* Security */
435 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
436 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
437 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
438 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
439
440 /* QoS and BA APIs */
441 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
442 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
443 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
444 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
445 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
446
447 /* Miscellaneous Control APIs */
448 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
449 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
450 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
451 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
452 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
453
454 /* BA APIs*/
455 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
456 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700457
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 /* IBSS APIs*/
459 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
460 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
461
462 /*Soft AP APIs*/
463 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
464 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
465 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
466 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
467
468 /* PowerSave APIs */
469 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
470 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
471 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
472 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
473 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
474 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
475 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
476 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
477 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
478 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
479 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
480 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
481 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
482 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
483 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
484 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
485 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
486 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700487
Jeff Johnson295189b2012-06-20 16:38:30 -0700488
489 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
490
491 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
492 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
493#ifdef WLAN_FEATURE_VOWIFI_11R
494 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
495#else
496 NULL,
497#endif /* WLAN_FEATURE_VOWIFI_11R */
498 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
499 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700500#ifdef FEATURE_OEM_DATA_SUPPORT
501 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
502#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700503 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700504#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700505 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
506
Jeff Johnson295189b2012-06-20 16:38:30 -0700507 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
Jeff Johnson295189b2012-06-20 16:38:30 -0700509 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700510
Jeff Johnsone7245742012-09-05 17:12:55 -0700511 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
512
Jeff Johnson295189b2012-06-20 16:38:30 -0700513#ifdef FEATURE_WLAN_SCAN_PNO
514 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
515 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
516 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
517#else
518 NULL,
519 NULL,
520 NULL,
521#endif // FEATURE_WLAN_SCAN_PNO
522
523 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
524
525 /*---------------------------------------------------------------------
526 Indications
527 ---------------------------------------------------------------------*/
528#ifdef WLAN_FEATURE_PACKET_FILTERING
529 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700530 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700531 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700532 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700533 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700534 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700535 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700536 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700537#else
538 NULL,
539 NULL,
540 NULL,
541 NULL,
542#endif // WLAN_FEATURE_PACKET_FILTERING
543
544 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
545 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
546
547 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
548#ifdef FEATURE_WLAN_CCX
549 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
550#else
551 NULL,
552#endif
553
554#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700555 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
556 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#else
558 NULL,
559 NULL,
560#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700561 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
562 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700563#ifdef WLAN_FEATURE_11AC
564 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700565#else
566 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700567#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800568#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
569 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
570#else
571 NULL,
572#endif
schangd82195a2013-03-13 18:41:24 -0700573 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700574#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700575 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700576#else
577 NULL,
578#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530579#ifdef FEATURE_WLAN_TDLS
580 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
581#else
582 NULL,
583#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700584#ifdef FEATURE_WLAN_LPHB
585 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
586#else
587 NULL,
588#endif /* FEATURE_WLAN_LPHB */
Jeff Johnson295189b2012-06-20 16:38:30 -0700589 /*---------------------------------------------------------------------
590 Indications
591 ---------------------------------------------------------------------*/
592 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
593 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
594 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
595 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
596 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
597 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
598
599 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
600
601 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
602
Jeff Johnson295189b2012-06-20 16:38:30 -0700603 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700604
605#ifdef FEATURE_WLAN_SCAN_PNO
606 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
607#else
608 NULL,
609#endif // FEATURE_WLAN_SCAN_PNO
610
611#ifdef WLAN_WAKEUP_EVENTS
612 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
613#else // WLAN_WAKEUP_EVENTS
614 NULL,
615#endif // WLAN_WAKEUP_EVENTS
616
617 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800618
Viral Modi9dc288a2012-12-10 13:09:21 -0800619 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530620#ifdef FEATURE_WLAN_TDLS
621 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
622#else
623 NULL,
624#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700625
626#ifdef FEATURE_WLAN_LPHB
627 WDI_ProcessLphbWaitTimeoutInd, /* WDI_HAL_LPHB_WAIT_TIMEOUT_IND */
628#else
629 NULL,
630#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700631
632 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700633
634 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700635};
636
637
Jeff Johnsone7245742012-09-05 17:12:55 -0700638/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700639 WLAN DAL Global Control Block
640 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700641WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700642static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
643
Jeff Johnsone7245742012-09-05 17:12:55 -0700644const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700645
646/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700647WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700648void* WDI_GET_PAL_CTX( void )
649{
Jeff Johnsone7245742012-09-05 17:12:55 -0700650 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700651}/*WDI_GET_PAL_CTX*/
652
Jeff Johnsone7245742012-09-05 17:12:55 -0700653/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700654 Helper inline converters
655 ============================================================================*/
656/*Convert WDI driver type into HAL driver type*/
657WPT_STATIC WPT_INLINE WDI_Status
658WDI_HAL_2_WDI_STATUS
659(
660 eHalStatus halStatus
661);
662
663/*Convert WDI request type into HAL request type*/
664WPT_STATIC WPT_INLINE tHalHostMsgType
665WDI_2_HAL_REQ_TYPE
666(
667 WDI_RequestEnumType wdiReqType
668);
669
670/*Convert WDI response type into HAL response type*/
671WPT_STATIC WPT_INLINE WDI_ResponseEnumType
672HAL_2_WDI_RSP_TYPE
673(
674 tHalHostMsgType halMsg
675);
676
677/*Convert WDI driver type into HAL driver type*/
678WPT_STATIC WPT_INLINE tDriverType
679WDI_2_HAL_DRV_TYPE
680(
681 WDI_DriverType wdiDriverType
682);
683
684/*Convert WDI stop reason into HAL stop reason*/
685WPT_STATIC WPT_INLINE tHalStopType
686WDI_2_HAL_STOP_REASON
687(
688 WDI_StopType wdiStopType
689);
690
691/*Convert WDI scan mode type into HAL scan mode type*/
692WPT_STATIC WPT_INLINE eHalSysMode
693WDI_2_HAL_SCAN_MODE
694(
695 WDI_ScanMode wdiScanMode
696);
697
698/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700699WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700700WDI_2_HAL_SEC_CH_OFFSET
701(
702 WDI_HTSecondaryChannelOffset wdiSecChOffset
703);
704
705/*Convert WDI BSS type into HAL BSS type*/
706WPT_STATIC WPT_INLINE tSirBssType
707WDI_2_HAL_BSS_TYPE
708(
709 WDI_BssType wdiBSSType
710);
711
712/*Convert WDI NW type into HAL NW type*/
713WPT_STATIC WPT_INLINE tSirNwType
714WDI_2_HAL_NW_TYPE
715(
716 WDI_NwType wdiNWType
717);
718
719/*Convert WDI chanel bonding type into HAL cb type*/
720WPT_STATIC WPT_INLINE ePhyChanBondState
721WDI_2_HAL_CB_STATE
722(
723 WDI_PhyChanBondState wdiCbState
724);
725
726/*Convert WDI chanel bonding type into HAL cb type*/
727WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
728WDI_2_HAL_HT_OPER_MODE
729(
730 WDI_HTOperatingMode wdiHTOperMode
731);
732
733/*Convert WDI mimo PS type into HAL mimo PS type*/
734WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
735WDI_2_HAL_MIMO_PS
736(
737 WDI_HTMIMOPowerSaveState wdiHTOperMode
738);
739
740/*Convert WDI ENC type into HAL ENC type*/
741WPT_STATIC WPT_INLINE tAniEdType
742WDI_2_HAL_ENC_TYPE
743(
744 WDI_EncryptType wdiEncType
745);
746
747/*Convert WDI WEP type into HAL WEP type*/
748WPT_STATIC WPT_INLINE tAniWepType
749WDI_2_HAL_WEP_TYPE
750(
751 WDI_WepType wdiWEPType
752);
753
754/*Convert WDI Link State into HAL Link State*/
755WPT_STATIC WPT_INLINE tSirLinkState
756WDI_2_HAL_LINK_STATE
757(
758 WDI_LinkStateType wdiLinkState
759);
760
Jeff Johnsone7245742012-09-05 17:12:55 -0700761/*Translate a STA Context from WDI into HAL*/
762WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700763void
764WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700765(
Jeff Johnson295189b2012-06-20 16:38:30 -0700766 tConfigStaParams* phalConfigSta,
767 WDI_ConfigStaReqInfoType* pwdiConfigSta
768);
Jeff Johnsone7245742012-09-05 17:12:55 -0700769
770/*Translate a Rate set info from WDI into HAL*/
771WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700772WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700773(
Jeff Johnson295189b2012-06-20 16:38:30 -0700774 tSirMacRateSet* pHalRateSet,
775 WDI_RateSet* pwdiRateSet
776);
777
778/*Translate an EDCA Parameter Record from WDI into HAL*/
779WPT_STATIC WPT_INLINE void
780WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700781(
Jeff Johnson295189b2012-06-20 16:38:30 -0700782 tSirMacEdcaParamRecord* phalEdcaParam,
783 WDI_EdcaParamRecord* pWDIEdcaParam
784);
785
786/*Copy a management frame header from WDI fmt into HAL fmt*/
787WPT_STATIC WPT_INLINE void
788WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
789(
790 tSirMacMgmtHdr* pmacMgmtHdr,
791 WDI_MacMgmtHdr* pwdiMacMgmtHdr
792);
793
794/*Copy config bss parameters from WDI fmt into HAL fmt*/
795WPT_STATIC WPT_INLINE void
796WDI_CopyWDIConfigBSSToHALConfigBSS
797(
798 tConfigBssParams* phalConfigBSS,
799 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
800);
801
Jeff Johnsone7245742012-09-05 17:12:55 -0700802/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700803 pointed to by user data */
804WPT_STATIC WPT_INLINE void
805WDI_ExtractRequestCBFromEvent
806(
807 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700808 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700809 void** ppUserData
810);
811
812wpt_uint8
813WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700814(
Jeff Johnson295189b2012-06-20 16:38:30 -0700815 WDI_ControlBlockType* pWDICtx,
816 WDI_BSSSessionType** ppSession
817);
818
819void
820WDI_AddBcastSTAtoSTATable
821(
822 WDI_ControlBlockType* pWDICtx,
823 WDI_AddStaParams * staParams,
824 wpt_uint16 usBcastStaIdx
825);
826
827WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700828(
Jeff Johnson295189b2012-06-20 16:38:30 -0700829 WDI_ControlBlockType* pWDICtx,
830 WDI_EventInfoType* pEventData
831);
832
833void
834WDI_SetPowerStateCb
835(
836 wpt_status status,
837 unsigned int dxePhyAddr,
838 void *pContext
839);
840
841#define CASE_RETURN_STRING( str ) \
842 case ( ( str ) ): return( #str ); break \
843
844/**
845 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700846
847 @param wdiReqMsgId: WDI Message request Id
848
849 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700850 @return Result of the function call
851*/
852static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
853{
854 switch (wdiReqMsgId)
855 {
856 CASE_RETURN_STRING( WDI_START_REQ );
857 CASE_RETURN_STRING( WDI_STOP_REQ );
858 CASE_RETURN_STRING( WDI_CLOSE_REQ );
859 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
860 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
861 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
862 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
863 CASE_RETURN_STRING( WDI_JOIN_REQ );
864 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
865 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
866 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
867 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
868 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
869 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
870 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
871 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
872 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
873 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
874 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
875 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
876 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
877 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
878 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
879 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
880 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
881 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
882 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
883 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
884 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
885 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
886 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
887 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
888 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
889 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
890 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530891#ifdef FEATURE_WLAN_TDLS
892 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
893#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700894 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
895 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
896 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
897 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
898 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
899 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
900 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
901 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
902 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
903 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
904 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
905 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
906 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
907 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
908 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
909 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
910 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
911 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
912 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
913 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
914 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
915 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
916 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
917 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
918 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700919 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700920 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
921 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
922 #ifdef FEATURE_WLAN_SCAN_PNO
923 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
924 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
925 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
926 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700927#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700928 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700929#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700930 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
931 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
932 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
933 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
934 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
935 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
936 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
937 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
938 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800939 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800940 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700941#ifdef WLAN_FEATURE_11W
942 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
943#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700944 default:
945 return "Unknown WDI MessageId";
946 }
947}
948
949
950
951/**
952 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700953
954 @param wdiRespMsgId: WDI Message response Id
955
956 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700957 @return Result of the function call
958*/
959static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
960{
961 switch (wdiRespMsgId)
962 {
963 CASE_RETURN_STRING( WDI_START_RESP );
964 CASE_RETURN_STRING( WDI_STOP_RESP );
965 CASE_RETURN_STRING( WDI_CLOSE_RESP );
966 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
967 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
968 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
969 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
970 CASE_RETURN_STRING( WDI_JOIN_RESP );
971 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
972 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
973 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
974 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
975 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
976 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
977 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
978 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
979 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
980 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
981 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
982 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
983 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
984 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
985 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
986 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
987 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
988 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
989 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
990 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
991 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
992 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
993 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
994 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
995 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
996 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
997 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530998#ifdef FEATURE_WLAN_TDLS
999 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1000 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1001#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001002 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1003 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1004 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1005 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1006 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1007 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1008 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1009 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1010 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1011 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1012 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1013 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1014 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1015 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1016 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1017 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1018 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1019 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1020 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1021 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1022 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1023 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1024 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1025 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1026 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001027 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001028 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1029 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1030 #ifdef FEATURE_WLAN_SCAN_PNO
1031 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1032 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1033 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1034 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001035#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001036 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001037#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001038 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1039 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1040 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1041 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1042 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1043 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1044 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1045 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001046 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001047 default:
1048 return "Unknown WDI MessageId";
1049 }
1050}
1051
1052/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301053 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1054 Capability bitmap array.
1055 @param capabilityBitmap - Base address of Bitmap array
1056 @see
1057 @returns None
1058 */
1059void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1060{
1061 int i;
1062 char capStr[512];
1063 char *pCapStr = capStr;
1064 for (i = 0; i < 32; i++) {
1065 if ((*(capabilityBitmap + 0) & (1 << i))) {
1066 switch(i) {
1067 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1068 pCapStr += strlen("MCC");
1069 break;
1070 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1071 pCapStr += strlen("P2P");
1072 break;
1073 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1074 pCapStr += strlen("DOT11AC");
1075 break;
1076 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1077 pCapStr += strlen("SLM_SESSIONIZATION");
1078 break;
1079 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1080 pCapStr += strlen("DOT11AC_OPMODE");
1081 break;
1082 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1083 pCapStr += strlen("SAP32STA");
1084 break;
1085 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1086 pCapStr += strlen("TDLS");
1087 break;
1088 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1089 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1090 break;
1091 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1092 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1093 break;
1094 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1095 pCapStr += strlen("BEACON_OFFLOAD");
1096 break;
1097 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1098 pCapStr += strlen("SCAN_OFFLOAD");
1099 break;
1100 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1101 pCapStr += strlen("ROAM_OFFLOAD");
1102 break;
1103 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1104 pCapStr += strlen("BCN_MISS_OFFLOAD");
1105 break;
1106 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1107 pCapStr += strlen("STA_POWERSAVE");
1108 break;
1109 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1110 pCapStr += strlen("AP_UAPSD");
1111 break;
1112 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1113 pCapStr += strlen("AP_DFS");
1114 break;
1115 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1116 pCapStr += strlen("BLOCKACK");
1117 break;
1118 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1119 pCapStr += strlen("PHY_ERR");
1120 break;
1121 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1122 pCapStr += strlen("BCN_FILTER");
1123 break;
1124 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1125 pCapStr += strlen("RTT");
1126 break;
1127 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1128 pCapStr += strlen("RATECTRL");
1129 break;
1130 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1131 pCapStr += strlen("WOW");
1132 break;
1133 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1134 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1135 break;
1136 }
1137 *pCapStr++ = ',';
1138 *pCapStr++ = ' ';
1139 }
1140 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301141 pCapStr -= 2;
1142 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301143 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301145}
1146
1147/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001149
1150 @param halStatusId: HAL status Id
1151
1152 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001153 @return Result of the function call
1154*/
1155static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1156{
1157 switch (halStatusId)
1158 {
1159 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1160 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1161 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1162 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1163 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1164 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1165 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1166 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1167 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1168 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1169 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1170 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1171 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1172 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1173 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1174 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1175 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1176 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1177 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1178 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1179 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1180 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1181 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1182 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1183 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1184 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1185 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1186 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1187 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1188 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1189 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1190 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1191 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1192 default:
1193 return "Unknown HAL status";
1194 }
1195}
1196
Jeff Johnsone7245742012-09-05 17:12:55 -07001197/*========================================================================
1198
Jeff Johnson295189b2012-06-20 16:38:30 -07001199 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001200
Jeff Johnson295189b2012-06-20 16:38:30 -07001201==========================================================================*/
1202
1203/**
1204 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001205
Jeff Johnson295189b2012-06-20 16:38:30 -07001206 DAL will allocate all the resources it needs. It will open PAL, it will also
1207 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001208 DXE/SMD or any other drivers that they need.
1209
Jeff Johnson295189b2012-06-20 16:38:30 -07001210 @param pOSContext: pointer to the OS context provided by the UMAC
1211 will be passed on to PAL on Open
1212 ppWDIGlobalCtx: output pointer of Global Context
1213 pWdiDevCapability: output pointer of device capability
1214
1215 @return Result of the function call
1216*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001217WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001218WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001219(
Jeff Johnson295189b2012-06-20 16:38:30 -07001220 void* pOSContext,
1221 void** ppWDIGlobalCtx,
1222 WDI_DeviceCapabilityType* pWdiDevCapability,
1223 unsigned int driverType
1224)
1225{
1226 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001227 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001228 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001229 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1231
1232 /*---------------------------------------------------------------------
1233 Sanity check
1234 ---------------------------------------------------------------------*/
1235 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1236 {
1237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1238 "Invalid input parameters in WDI_Init");
1239
Jeff Johnsone7245742012-09-05 17:12:55 -07001240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001241 }
1242
1243 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001244 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001245 ---------------------------------------------------------------------*/
1246 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1247 {
1248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1249 "WDI module already initialized - return");
1250
Jeff Johnsone7245742012-09-05 17:12:55 -07001251 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001252 }
1253
1254 /*Module is now initialized - this flag is to ensure the fact that multiple
1255 init will not happen on WDI
1256 !! - potential race does exist because read and set are not atomic,
1257 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001258 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001259
1260 /*Setup the control block */
1261 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001262 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001263
1264 /*Setup the STA Table*/
1265 wdiStatus = WDI_STATableInit(&gWDICb);
1266 if ( WDI_STATUS_SUCCESS != wdiStatus )
1267 {
1268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1269 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001270 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 goto fail_STATableInit;
1272 }
1273
1274 /*------------------------------------------------------------------------
1275 Open the PAL
1276 ------------------------------------------------------------------------*/
1277 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1278 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1279 {
1280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1281 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001282 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 goto fail_wpalOpen;
1284 }
1285
1286 /*Initialize main synchro mutex - it will be used to ensure integrity of
1287 the main WDI Control Block*/
1288 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1289 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1290 {
1291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1292 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001293 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 goto fail_mutex;
1295 }
1296
1297 /*Initialize the response timer - it will be used to time all messages
1298 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001299 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1300 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001301 &gWDICb);
1302 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1303 {
1304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1305 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001306 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001307 goto fail_timer;
1308 }
1309
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001310 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1311 WDI_SsrTimerCB,
1312 &gWDICb);
1313 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1314 {
1315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1316 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001317 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001318 goto fail_timer2;
1319 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001320 /* Initialize the WDI Pending Request Queue*/
1321 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1322 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1323 {
1324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1325 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001326 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001327 goto fail_pend_queue;
1328 }
1329
1330 /*Init WDI Pending Assoc Id Queue */
1331 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1332 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1333 {
1334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1335 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001336 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001337 goto fail_assoc_queue;
1338 }
1339
1340 /*Initialize the BSS sessions pending Queue */
1341 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1342 {
1343 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1344 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1345 {
1346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1347 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001348 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001349 goto fail_bss_queue;
1350 }
1351 }
1352
1353 /*Indicate the control block is sufficiently initialized for callbacks*/
1354 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1355
1356 /*------------------------------------------------------------------------
1357 Initialize the Data Path Utility Module
1358 ------------------------------------------------------------------------*/
1359 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1360 if ( WDI_STATUS_SUCCESS != wdiStatus )
1361 {
1362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1363 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001364 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001365 goto fail_dp_util_init;
1366 }
1367
1368 /* Init Set power state event */
1369 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001370 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001371 {
1372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1373 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001374 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 goto fail_power_event;
1376 }
1377
1378 /* Init WCTS action event */
1379 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001380 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 {
1382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1383 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001384 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 goto fail_wcts_event;
1386 }
1387
1388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001389 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 ------------------------------------------------------------------------*/
1391 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1392 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001393 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001394 wctsCBs.wctsRxMsgCBData = &gWDICb;
1395
Jeff Johnsone7245742012-09-05 17:12:55 -07001396 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001398 WDI_CT_CHANNEL_SIZE,
1399 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001400
1401 if ( NULL == gWDICb.wctsHandle )
1402 {
1403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001404 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 goto fail_wcts_open;
1406 }
1407
1408 gWDICb.driverMode = (tDriverType)driverType;
1409 /* FTM mode not need to open Transport Driver */
1410 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001411 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001412 /*------------------------------------------------------------------------
1413 Open the Data Transport
1414 ------------------------------------------------------------------------*/
1415 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1416 {
1417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001418 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001419 goto fail_wdts_open;
1420 }
1421 }
1422
1423 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001425
1426 /*Send the context as a ptr to the global WDI Control Block*/
1427 *ppWDIGlobalCtx = &gWDICb;
1428
1429 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001430 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001431 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1432 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1433 return WDI_STATUS_SUCCESS;
1434
1435 /* ERROR handlers
1436 Undo everything that completed successfully */
1437
1438 fail_wdts_open:
1439 {
1440 wpt_status eventStatus;
1441
1442 /* Closing WCTS in this scenario is tricky since it has to close
1443 the SMD channel and then we get notified asynchronously when
1444 the channel has been closed. So we take some of the logic from
1445 the "normal" close procedure in WDI_Close()
1446 */
1447
1448 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001449 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001450 {
1451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001452 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 }
1454
1455 WCTS_CloseTransport(gWDICb.wctsHandle);
1456
1457 /* Wait for WCTS to close the control transport. If we were able
1458 to reset the event flag, then we'll wait for the event,
1459 otherwise we'll wait for a maximum amount of time required for
1460 the channel to be closed */
1461 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1462 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 WDI_WCTS_ACTION_TIMEOUT);
1465 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1466 {
1467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001468 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 }
1470 }
1471 else
1472 {
1473 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1474 }
1475 }
1476 fail_wcts_open:
1477 wpalEventDelete(&gWDICb.wctsActionEvent);
1478 fail_wcts_event:
1479 wpalEventDelete(&gWDICb.setPowerStateEvent);
1480 fail_power_event:
1481 WDI_DP_UtilsExit(&gWDICb);
1482 fail_dp_util_init:
1483 gWDICb.magic = 0;
1484 fail_bss_queue:
1485 /* entries 0 thru i-1 were successfully initialized */
1486 while (0 < i)
1487 {
1488 i--;
1489 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1490 }
1491 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1492 fail_assoc_queue:
1493 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1494 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001495 wpalTimerDelete(&gWDICb.ssrTimer);
1496 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001497 wpalTimerDelete(&gWDICb.wptResponseTimer);
1498 fail_timer:
1499 wpalMutexDelete(&gWDICb.wptMutex);
1500 fail_mutex:
1501 wpalClose(gWDICb.pPALContext);
1502 fail_wpalOpen:
1503 WDI_STATableClose(&gWDICb);
1504 fail_STATableInit:
1505 gWDIInitialized = eWLAN_PAL_FALSE;
1506
1507 return WDI_STATUS_E_FAILURE;
1508
1509}/*WDI_Init*/;
1510
1511/**
1512 @brief WDI_Start will be called when the upper MAC is ready to
1513 commence operation with the WLAN Device. Upon the call
1514 of this API the WLAN DAL will pack and send a HAL Start
1515 message to the lower RIVA sub-system if the SMD channel
1516 has been fully opened and the RIVA subsystem is up.
1517
1518 If the RIVA sub-system is not yet up and running DAL
1519 will queue the request for Open and will wait for the
1520 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001521 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001522
1523 WDI_Init must have been called.
1524
Jeff Johnsone7245742012-09-05 17:12:55 -07001525 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001526 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001527
Jeff Johnson295189b2012-06-20 16:38:30 -07001528 wdiStartRspCb: callback for passing back the response of
1529 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001530
Jeff Johnson295189b2012-06-20 16:38:30 -07001531 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001532 callback
1533
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 @see WDI_Start
1535 @return Result of the function call
1536*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001537WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001538WDI_Start
1539(
1540 WDI_StartReqParamsType* pwdiStartParams,
1541 WDI_StartRspCb wdiStartRspCb,
1542 void* pUserData
1543)
1544{
1545 WDI_EventInfoType wdiEventData;
1546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1547
1548 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001549 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 ------------------------------------------------------------------------*/
1551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1552 {
1553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1554 "WDI API call before module is initialized - Fail request");
1555
Jeff Johnsone7245742012-09-05 17:12:55 -07001556 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 }
1558
1559 /*------------------------------------------------------------------------
1560 Fill in Event data and post to the Main FSM
1561 ------------------------------------------------------------------------*/
1562 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 wdiEventData.pEventData = pwdiStartParams;
1564 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1565 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 wdiEventData.pUserData = pUserData;
1567
1568 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1569
1570}/*WDI_Start*/
1571
1572/**
1573 @brief WDI_Stop will be called when the upper MAC is ready to
1574 stop any operation with the WLAN Device. Upon the call
1575 of this API the WLAN DAL will pack and send a HAL Stop
1576 message to the lower RIVA sub-system if the DAL Core is
1577 in started state.
1578
1579 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001580
1581 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001582
1583 WDI_Start must have been called.
1584
Jeff Johnsone7245742012-09-05 17:12:55 -07001585 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001587
Jeff Johnson295189b2012-06-20 16:38:30 -07001588 wdiStopRspCb: callback for passing back the response of
1589 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001590
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001592 callback
1593
Jeff Johnson295189b2012-06-20 16:38:30 -07001594 @see WDI_Start
1595 @return Result of the function call
1596*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001597WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001598WDI_Stop
1599(
1600 WDI_StopReqParamsType* pwdiStopParams,
1601 WDI_StopRspCb wdiStopRspCb,
1602 void* pUserData
1603)
1604{
1605 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001606 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1608
1609 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001610 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 ------------------------------------------------------------------------*/
1612 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1613 {
1614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1615 "WDI API call before module is initialized - Fail request");
1616
Jeff Johnsone7245742012-09-05 17:12:55 -07001617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001618 }
1619
Jeff Johnson43971f52012-07-17 12:26:56 -07001620 /*Access to the global state must be locked before cleaning */
1621 wpalMutexAcquire(&pWDICtx->wptMutex);
1622
1623 /*Clear all pending request*/
1624 WDI_ClearPendingRequests(pWDICtx);
1625
1626 /*We have completed cleaning unlock now*/
1627 wpalMutexRelease(&pWDICtx->wptMutex);
1628
Jeff Johnson295189b2012-06-20 16:38:30 -07001629 /* Free the global variables */
1630 wpalMemoryFree(gpHostWlanFeatCaps);
1631 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001632 gpHostWlanFeatCaps = NULL;
1633 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001634
1635 /*------------------------------------------------------------------------
1636 Fill in Event data and post to the Main FSM
1637 ------------------------------------------------------------------------*/
1638 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001639 wdiEventData.pEventData = pwdiStopParams;
1640 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1641 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001642 wdiEventData.pUserData = pUserData;
1643
1644 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1645
1646}/*WDI_Stop*/
1647
1648
1649
1650/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001651 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001652 needs to interact with DAL. DAL will free its control
1653 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001654
1655 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001656
1657 WDI_Stop must have been called.
1658
1659 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 @see WDI_Stop
1662 @return Result of the function call
1663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001665WDI_Close
1666(
1667 void
1668)
1669{
1670 wpt_uint8 i;
1671 WDI_EventInfoType wdiEventData;
1672 wpt_status wptStatus;
1673 wpt_status eventStatus;
1674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1675
1676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001678 ------------------------------------------------------------------------*/
1679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1680 {
1681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1682 "WDI API call before module is initialized - Fail request");
1683
Jeff Johnsone7245742012-09-05 17:12:55 -07001684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 }
1686
1687 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1688 (the control transport will be closed by the FSM and we'll want
1689 to wait until that completes)*/
1690 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001691 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 {
1693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001694 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001695 /* fall through and try to finish closing via the FSM */
1696 }
1697
1698 /*------------------------------------------------------------------------
1699 Fill in Event data and post to the Main FSM
1700 ------------------------------------------------------------------------*/
1701 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001702 wdiEventData.pEventData = NULL;
1703 wdiEventData.uEventDataSize = 0;
1704 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 wdiEventData.pUserData = NULL;
1706
1707 gWDIInitialized = eWLAN_PAL_FALSE;
1708
1709 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1710
1711 /*Wait for WCTS to close the control transport
1712 (but only if we were able to reset the event flag*/
1713 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1714 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001715 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001716 WDI_WCTS_ACTION_TIMEOUT);
1717 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001720 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 }
1722 }
1723
1724 /* Destroy the WCTS action event */
1725 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1726 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1727 {
1728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1729 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001730 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 }
1732
1733 /* Destroy the Set Power State event */
1734 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1735 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1736 {
1737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1738 "WDI Close failed to destroy an event");
1739
Jeff Johnsone7245742012-09-05 17:12:55 -07001740 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001741 }
1742
1743 /*------------------------------------------------------------------------
1744 Closes the Data Path Utility Module
1745 ------------------------------------------------------------------------*/
1746 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1747 {
1748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1749 "WDI Init failed to close the DP Util Module");
1750
Jeff Johnsone7245742012-09-05 17:12:55 -07001751 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 }
1753
1754 /*destroy the BSS sessions pending Queue */
1755 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1756 {
1757 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1758 }
1759
1760 /* destroy the WDI Pending Assoc Id Request Queue*/
1761 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1762
1763 /* destroy the WDI Pending Request Queue*/
1764 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001765
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 /*destroy the response timer */
1767 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1768
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001769 /*destroy the SSR timer */
1770 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1771
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 /*invalidate the main synchro mutex */
1773 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1774 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1775 {
1776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1777 "Failed to delete mutex %d", wptStatus);
1778 WDI_ASSERT(0);
1779 }
1780
1781 /*Clear control block. note that this will clear the "magic"
1782 which will inhibit all asynchronous callbacks*/
1783 WDI_CleanCB(&gWDICb);
1784
1785 return wptStatus;
1786
1787}/*WDI_Close*/
1788
1789/**
1790 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1791 This will do most of the WDI stop & close
1792 operations without doing any handshake with Riva
1793
1794 This will also make sure that the control transport
1795 will NOT be closed.
1796
1797 This request will not be queued.
1798
1799
1800 WDI_Start must have been called.
1801
1802 @param closeTransport: Close control channel if this is set
1803
1804 @return Result of the function call
1805*/
1806WDI_Status
1807WDI_Shutdown
1808(
1809 wpt_boolean closeTransport
1810)
1811{
1812 WDI_EventInfoType wdiEventData;
1813 wpt_status wptStatus;
1814 int i = 0;
1815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1816
1817 /*------------------------------------------------------------------------
1818 Sanity Check
1819 ------------------------------------------------------------------------*/
1820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1821 {
1822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1823 "WDI API call before module is initialized - Fail request");
1824
1825 return WDI_STATUS_E_NOT_ALLOWED;
1826 }
1827
1828 /*------------------------------------------------------------------------
1829 Fill in Event data and post to the Main FSM
1830 ------------------------------------------------------------------------*/
1831 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1832 wdiEventData.pEventData = NULL;
1833 wdiEventData.uEventDataSize = 0;
1834
1835 /* Shutdown will not be queued, if the state is busy timer will be
1836 * stopped & this message will be processed.*/
1837 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1838 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1839 {
1840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001841 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 }
1843 /* Destroy the Set Power State event */
1844 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1845 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1846 {
1847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1848 "WDI Close failed to destroy an event");
1849
1850 WDI_ASSERT(0);
1851 }
1852 /*------------------------------------------------------------------------
1853 Closes the Data Path Utility Module
1854 ------------------------------------------------------------------------*/
1855 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1856 {
1857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1858 "WDI Init failed to close the DP Util Module");
1859
1860 WDI_ASSERT(0);
1861 }
1862 if ( closeTransport )
1863 {
1864 /* Close control transport, called from module unload */
1865 WCTS_CloseTransport(gWDICb.wctsHandle);
1866 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001867 else
1868 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001869 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001870 the pending messages in the transport queue */
1871 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1872 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 /*destroy the BSS sessions pending Queue */
1874 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1875 {
1876 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1877 }
1878
1879 /* destroy the WDI Pending Assoc Id Request Queue*/
1880 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1881 /* destroy the WDI Pending Request Queue*/
1882 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1883 /*destroy the response timer */
1884 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001885 /*destroy the SSR timer */
1886 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001887
1888 /*invalidate the main synchro mutex */
1889 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1890 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1891 {
1892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001893 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001894 WDI_ASSERT(0);
1895 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001896 /* Free the global variables */
1897 wpalMemoryFree(gpHostWlanFeatCaps);
1898 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001899 gpHostWlanFeatCaps = NULL;
1900 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001901 /*Clear control block. note that this will clear the "magic"
1902 which will inhibit all asynchronous callbacks*/
1903 WDI_CleanCB(&gWDICb);
1904 return wptStatus;
1905
1906}/*WDI_Shutdown*/
1907
1908
Jeff Johnsone7245742012-09-05 17:12:55 -07001909/*========================================================================
1910
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001912
Jeff Johnson295189b2012-06-20 16:38:30 -07001913==========================================================================*/
1914
1915/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 the WLAN Device to get ready for a scan procedure. Upon
1918 the call of this API the WLAN DAL will pack and send a
1919 HAL Init Scan request message to the lower RIVA
1920 sub-system if DAL is in state STARTED.
1921
1922 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001923 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001924
1925 WDI_Start must have been called.
1926
1927 @param wdiInitScanParams: the init scan parameters as specified
1928 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001929
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 wdiInitScanRspCb: callback for passing back the response
1931 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001932
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001934 callback
1935
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 @see WDI_Start
1937 @return Result of the function call
1938*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001939WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001940WDI_InitScanReq
1941(
1942 WDI_InitScanReqParamsType* pwdiInitScanParams,
1943 WDI_InitScanRspCb wdiInitScanRspCb,
1944 void* pUserData
1945)
1946{
1947 WDI_EventInfoType wdiEventData;
1948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1949
1950 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001951 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 ------------------------------------------------------------------------*/
1953 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1954 {
1955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1956 "WDI API call before module is initialized - Fail request");
1957
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 }
1960
1961 /*------------------------------------------------------------------------
1962 Fill in Event data and post to the Main FSM
1963 ------------------------------------------------------------------------*/
1964 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 wdiEventData.pEventData = pwdiInitScanParams;
1966 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1967 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 wdiEventData.pUserData = pUserData;
1969
1970 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1971
1972}/*WDI_InitScanReq*/
1973
1974/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001976 wishes to change the Scan channel on the WLAN Device.
1977 Upon the call of this API the WLAN DAL will pack and
1978 send a HAL Start Scan request message to the lower RIVA
1979 sub-system if DAL is in state STARTED.
1980
1981 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001983
1984 WDI_InitScanReq must have been called.
1985
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001988
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 wdiStartScanRspCb: callback for passing back the
1990 response of the start scan operation received from the
1991 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001992
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001994 callback
1995
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 @see WDI_InitScanReq
1997 @return Result of the function call
1998*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001999WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002000WDI_StartScanReq
2001(
2002 WDI_StartScanReqParamsType* pwdiStartScanParams,
2003 WDI_StartScanRspCb wdiStartScanRspCb,
2004 void* pUserData
2005)
2006{
2007 WDI_EventInfoType wdiEventData;
2008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2009
2010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 ------------------------------------------------------------------------*/
2013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2014 {
2015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2016 "WDI API call before module is initialized - Fail request");
2017
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 }
2020
2021 /*------------------------------------------------------------------------
2022 Fill in Event data and post to the Main FSM
2023 ------------------------------------------------------------------------*/
2024 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002025 wdiEventData.pEventData = pwdiStartScanParams;
2026 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2027 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wdiEventData.pUserData = pUserData;
2029
2030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2031
2032}/*WDI_StartScanReq*/
2033
2034
2035/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002036 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002037 wants to end scanning for a particular channel that it
2038 had set before by calling Scan Start on the WLAN Device.
2039 Upon the call of this API the WLAN DAL will pack and
2040 send a HAL End Scan request message to the lower RIVA
2041 sub-system if DAL is in state STARTED.
2042
2043 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002044 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002045
2046 WDI_StartScanReq must have been called.
2047
Jeff Johnsone7245742012-09-05 17:12:55 -07002048 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002050
Jeff Johnson295189b2012-06-20 16:38:30 -07002051 wdiEndScanRspCb: callback for passing back the response
2052 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002053
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002055 callback
2056
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 @see WDI_StartScanReq
2058 @return Result of the function call
2059*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002060WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002061WDI_EndScanReq
2062(
2063 WDI_EndScanReqParamsType* pwdiEndScanParams,
2064 WDI_EndScanRspCb wdiEndScanRspCb,
2065 void* pUserData
2066)
2067{
2068 WDI_EventInfoType wdiEventData;
2069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2070
2071 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 ------------------------------------------------------------------------*/
2074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2077 "WDI API call before module is initialized - Fail request");
2078
Jeff Johnsone7245742012-09-05 17:12:55 -07002079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 }
2081
2082 /*------------------------------------------------------------------------
2083 Fill in Event data and post to the Main FSM
2084 ------------------------------------------------------------------------*/
2085 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002086 wdiEventData.pEventData = pwdiEndScanParams;
2087 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2088 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 wdiEventData.pUserData = pUserData;
2090
2091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2092
2093}/*WDI_EndScanReq*/
2094
2095
2096/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 completed the scan process on the WLAN Device. Upon the
2099 call of this API the WLAN DAL will pack and send a HAL
2100 Finish Scan Request request message to the lower RIVA
2101 sub-system if DAL is in state STARTED.
2102
2103 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002104 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002105
2106 WDI_InitScanReq must have been called.
2107
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002110
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 wdiFinishScanRspCb: callback for passing back the
2112 response of the finish scan operation received from the
2113 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002114
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002116 callback
2117
Jeff Johnson295189b2012-06-20 16:38:30 -07002118 @see WDI_InitScanReq
2119 @return Result of the function call
2120*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002121WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002122WDI_FinishScanReq
2123(
2124 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2125 WDI_FinishScanRspCb wdiFinishScanRspCb,
2126 void* pUserData
2127)
2128{
2129 WDI_EventInfoType wdiEventData;
2130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2131
2132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002133 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002134 ------------------------------------------------------------------------*/
2135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2136 {
2137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2138 "WDI API call before module is initialized - Fail request");
2139
Jeff Johnsone7245742012-09-05 17:12:55 -07002140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002141 }
2142
2143 /*------------------------------------------------------------------------
2144 Fill in Event data and post to the Main FSM
2145 ------------------------------------------------------------------------*/
2146 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002147 wdiEventData.pEventData = pwdiFinishScanParams;
2148 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2149 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 wdiEventData.pUserData = pUserData;
2151
2152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2153
2154}/*WDI_FinishScanReq*/
2155
Jeff Johnsone7245742012-09-05 17:12:55 -07002156/*========================================================================
2157
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002159
Jeff Johnson295189b2012-06-20 16:38:30 -07002160==========================================================================*/
2161
2162/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002163 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002164 to start an association procedure to a BSS. Upon the
2165 call of this API the WLAN DAL will pack and send a HAL
2166 Join request message to the lower RIVA sub-system if
2167 DAL is in state STARTED.
2168
2169 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002170 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002171
2172 WDI_Start must have been called.
2173
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002176
Jeff Johnson295189b2012-06-20 16:38:30 -07002177 wdiJoinRspCb: callback for passing back the response of
2178 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002179
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 callback
2182
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 @see WDI_Start
2184 @return Result of the function call
2185*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002186WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002187WDI_JoinReq
2188(
2189 WDI_JoinReqParamsType* pwdiJoinParams,
2190 WDI_JoinRspCb wdiJoinRspCb,
2191 void* pUserData
2192)
2193{
2194 WDI_EventInfoType wdiEventData;
2195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2196
2197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 ------------------------------------------------------------------------*/
2200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2201 {
2202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2203 "WDI API call before module is initialized - Fail request");
2204
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 }
2207
2208 /*------------------------------------------------------------------------
2209 Fill in Event data and post to the Main FSM
2210 ------------------------------------------------------------------------*/
2211 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002212 wdiEventData.pEventData = pwdiJoinParams;
2213 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2214 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002215 wdiEventData.pUserData = pUserData;
2216
2217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2218
2219}/*WDI_JoinReq*/
2220
2221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 wishes to configure the newly acquired or in process of
2224 being acquired BSS to the HW . Upon the call of this API
2225 the WLAN DAL will pack and send a HAL Config BSS request
2226 message to the lower RIVA sub-system if DAL is in state
2227 STARTED.
2228
2229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002231
2232 WDI_JoinReq must have been called.
2233
Jeff Johnsone7245742012-09-05 17:12:55 -07002234 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002236
Jeff Johnson295189b2012-06-20 16:38:30 -07002237 wdiConfigBSSRspCb: callback for passing back the
2238 response of the config BSS operation received from the
2239 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002240
Jeff Johnson295189b2012-06-20 16:38:30 -07002241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002242 callback
2243
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 @see WDI_JoinReq
2245 @return Result of the function call
2246*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002248WDI_ConfigBSSReq
2249(
2250 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2251 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2252 void* pUserData
2253)
2254{
2255 WDI_EventInfoType wdiEventData;
2256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2257
2258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002260 ------------------------------------------------------------------------*/
2261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2262 {
2263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2264 "WDI API call before module is initialized - Fail request");
2265
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 }
2268
2269 /*------------------------------------------------------------------------
2270 Fill in Event data and post to the Main FSM
2271 ------------------------------------------------------------------------*/
2272 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 wdiEventData.pEventData = pwdiConfigBSSParams;
2274 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2275 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 wdiEventData.pUserData = pUserData;
2277
2278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2279
2280}/*WDI_ConfigBSSReq*/
2281
2282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 disassociating from the BSS and wishes to notify HW.
2285 Upon the call of this API the WLAN DAL will pack and
2286 send a HAL Del BSS request message to the lower RIVA
2287 sub-system if DAL is in state STARTED.
2288
2289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002291
2292 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2293
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002295 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002296
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 wdiDelBSSRspCb: callback for passing back the response
2298 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002299
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 callback
2302
2303 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 @return Result of the function call
2305*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002306WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002307WDI_DelBSSReq
2308(
2309 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2310 WDI_DelBSSRspCb wdiDelBSSRspCb,
2311 void* pUserData
2312)
2313{
2314 WDI_EventInfoType wdiEventData;
2315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2316
2317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 ------------------------------------------------------------------------*/
2320 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2321 {
2322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2323 "WDI API call before module is initialized - Fail request");
2324
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 }
2327
2328 /*------------------------------------------------------------------------
2329 Fill in Event data and post to the Main FSM
2330 ------------------------------------------------------------------------*/
2331 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 wdiEventData.pEventData = pwdiDelBSSParams;
2333 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2334 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 wdiEventData.pUserData = pUserData;
2336
2337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2338
2339}/*WDI_DelBSSReq*/
2340
2341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 associated to a BSS and wishes to configure HW for
2344 associated state. Upon the call of this API the WLAN DAL
2345 will pack and send a HAL Post Assoc request message to
2346 the lower RIVA sub-system if DAL is in state STARTED.
2347
2348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002350
2351 WDI_JoinReq must have been called.
2352
2353 @param wdiPostAssocReqParams: the assoc parameters as specified
2354 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002355
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 wdiPostAssocRspCb: callback for passing back the
2357 response of the post assoc operation received from the
2358 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002359
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002361 callback
2362
Jeff Johnson295189b2012-06-20 16:38:30 -07002363 @see WDI_JoinReq
2364 @return Result of the function call
2365*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002366WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002367WDI_PostAssocReq
2368(
2369 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2370 WDI_PostAssocRspCb wdiPostAssocRspCb,
2371 void* pUserData
2372)
2373{
2374 WDI_EventInfoType wdiEventData;
2375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2376
2377 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 ------------------------------------------------------------------------*/
2380 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2381 {
2382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2383 "WDI API call before module is initialized - Fail request");
2384
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002386 }
2387
2388 /*------------------------------------------------------------------------
2389 Fill in Event data and post to the Main FSM
2390 ------------------------------------------------------------------------*/
2391 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002392 wdiEventData.pEventData = pwdiPostAssocReqParams;
2393 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2394 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 wdiEventData.pUserData = pUserData;
2396
2397 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2398
2399}/*WDI_PostAssocReq*/
2400
2401/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 association with another STA has ended and the station
2404 must be deleted from HW. Upon the call of this API the
2405 WLAN DAL will pack and send a HAL Del STA request
2406 message to the lower RIVA sub-system if DAL is in state
2407 STARTED.
2408
2409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002411
2412 WDI_PostAssocReq must have been called.
2413
Jeff Johnsone7245742012-09-05 17:12:55 -07002414 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002416
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 wdiDelSTARspCb: callback for passing back the response
2418 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002419
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002421 callback
2422
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 @see WDI_PostAssocReq
2424 @return Result of the function call
2425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002427WDI_DelSTAReq
2428(
2429 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2430 WDI_DelSTARspCb wdiDelSTARspCb,
2431 void* pUserData
2432)
2433{
2434 WDI_EventInfoType wdiEventData;
2435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2436
2437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 ------------------------------------------------------------------------*/
2440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2441 {
2442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2443 "WDI API call before module is initialized - Fail request");
2444
Jeff Johnsone7245742012-09-05 17:12:55 -07002445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 }
2447
2448 /*------------------------------------------------------------------------
2449 Fill in Event data and post to the Main FSM
2450 ------------------------------------------------------------------------*/
2451 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 wdiEventData.pEventData = pwdiDelSTAParams;
2453 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2454 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 wdiEventData.pUserData = pUserData;
2456
2457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2458
2459}/*WDI_DelSTAReq*/
2460
Jeff Johnsone7245742012-09-05 17:12:55 -07002461/*========================================================================
2462
Jeff Johnson295189b2012-06-20 16:38:30 -07002463 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465==========================================================================*/
2466
2467/**
2468 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2469 install a BSS encryption key on the HW. Upon the call of this
2470 API the WLAN DAL will pack and send a Set BSS Key request
2471 message to the lower RIVA sub-system if DAL is in state
2472 STARTED.
2473
2474 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002476
2477 WDI_PostAssocReq must have been called.
2478
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002481
Jeff Johnson295189b2012-06-20 16:38:30 -07002482 wdiSetBSSKeyRspCb: callback for passing back the
2483 response of the set BSS Key operation received from the
2484 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002485
Jeff Johnson295189b2012-06-20 16:38:30 -07002486 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 callback
2488
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 @see WDI_PostAssocReq
2490 @return Result of the function call
2491*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002492WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002493WDI_SetBSSKeyReq
2494(
2495 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2496 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2497 void* pUserData
2498)
2499{
2500 WDI_EventInfoType wdiEventData;
2501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2502
2503 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 ------------------------------------------------------------------------*/
2506 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2507 {
2508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2509 "WDI API call before module is initialized - Fail request");
2510
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 }
2513
2514 /*------------------------------------------------------------------------
2515 Fill in Event data and post to the Main FSM
2516 ------------------------------------------------------------------------*/
2517 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2519 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2520 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 wdiEventData.pUserData = pUserData;
2522
2523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2524
2525}/*WDI_SetBSSKeyReq*/
2526
2527/**
2528 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2529 uninstall a BSS key from HW. Upon the call of this API the
2530 WLAN DAL will pack and send a HAL Remove BSS Key request
2531 message to the lower RIVA sub-system if DAL is in state
2532 STARTED.
2533
2534 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002536
2537 WDI_SetBSSKeyReq must have been called.
2538
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002541
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 wdiRemoveBSSKeyRspCb: callback for passing back the
2543 response of the remove BSS key operation received from
2544 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002545
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 callback
2548
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 @see WDI_SetBSSKeyReq
2550 @return Result of the function call
2551*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002552WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002553WDI_RemoveBSSKeyReq
2554(
2555 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2556 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2557 void* pUserData
2558)
2559{
2560 WDI_EventInfoType wdiEventData;
2561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2562
2563 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 ------------------------------------------------------------------------*/
2566 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2567 {
2568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2569 "WDI API call before module is initialized - Fail request");
2570
Jeff Johnsone7245742012-09-05 17:12:55 -07002571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 }
2573
2574 /*------------------------------------------------------------------------
2575 Fill in Event data and post to the Main FSM
2576 ------------------------------------------------------------------------*/
2577 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002578 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2579 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2580 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 wdiEventData.pUserData = pUserData;
2582
2583 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2584
2585}/*WDI_RemoveBSSKeyReq*/
2586
2587
2588/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 ready to install a STA(ast) encryption key in HW. Upon
2591 the call of this API the WLAN DAL will pack and send a
2592 HAL Set STA Key request message to the lower RIVA
2593 sub-system if DAL is in state STARTED.
2594
2595 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002597
2598 WDI_PostAssocReq must have been called.
2599
Jeff Johnsone7245742012-09-05 17:12:55 -07002600 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002602
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 wdiSetSTAKeyRspCb: callback for passing back the
2604 response of the set STA key operation received from the
2605 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002606
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002608 callback
2609
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 @see WDI_PostAssocReq
2611 @return Result of the function call
2612*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002613WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002614WDI_SetSTAKeyReq
2615(
2616 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2617 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2618 void* pUserData
2619)
2620{
2621 WDI_EventInfoType wdiEventData;
2622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2623
2624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 ------------------------------------------------------------------------*/
2627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2628 {
2629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2630 "WDI API call before module is initialized - Fail request");
2631
Jeff Johnsone7245742012-09-05 17:12:55 -07002632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 }
2634
2635 /*------------------------------------------------------------------------
2636 Fill in Event data and post to the Main FSM
2637 ------------------------------------------------------------------------*/
2638 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002639 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2640 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2641 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 wdiEventData.pUserData = pUserData;
2643
2644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2645
2646}/*WDI_SetSTAKeyReq*/
2647
2648
2649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wants to uninstall a previously set STA key in HW. Upon
2652 the call of this API the WLAN DAL will pack and send a
2653 HAL Remove STA Key request message to the lower RIVA
2654 sub-system if DAL is in state STARTED.
2655
2656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002658
2659 WDI_SetSTAKeyReq must have been called.
2660
Jeff Johnsone7245742012-09-05 17:12:55 -07002661 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002663
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 wdiRemoveSTAKeyRspCb: callback for passing back the
2665 response of the remove STA key operation received from
2666 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002667
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002669 callback
2670
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 @see WDI_SetSTAKeyReq
2672 @return Result of the function call
2673*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002675WDI_RemoveSTAKeyReq
2676(
2677 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2678 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2679 void* pUserData
2680)
2681{
2682 WDI_EventInfoType wdiEventData;
2683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2684
2685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 ------------------------------------------------------------------------*/
2688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2689 {
2690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2691 "WDI API call before module is initialized - Fail request");
2692
Jeff Johnsone7245742012-09-05 17:12:55 -07002693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 }
2695
2696 /*------------------------------------------------------------------------
2697 Fill in Event data and post to the Main FSM
2698 ------------------------------------------------------------------------*/
2699 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002700 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2701 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2702 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 wdiEventData.pUserData = pUserData;
2704
2705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2706
2707}/*WDI_RemoveSTAKeyReq*/
2708
2709
2710/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 wants to install a STA Bcast encryption key on the HW.
2713 Upon the call of this API the WLAN DAL will pack and
2714 send a HAL Start request message to the lower RIVA
2715 sub-system if DAL is in state STARTED.
2716
2717 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002719
2720 WDI_PostAssocReq must have been called.
2721
Jeff Johnsone7245742012-09-05 17:12:55 -07002722 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002724
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 wdiSetSTABcastKeyRspCb: callback for passing back the
2726 response of the set BSS Key operation received from the
2727 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002728
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002730 callback
2731
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 @see WDI_PostAssocReq
2733 @return Result of the function call
2734*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002735WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002736WDI_SetSTABcastKeyReq
2737(
2738 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2739 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2740 void* pUserData
2741)
2742
2743{
2744 WDI_EventInfoType wdiEventData;
2745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2746
2747 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002748 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 ------------------------------------------------------------------------*/
2750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2751 {
2752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2753 "WDI API call before module is initialized - Fail request");
2754
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 }
2757
2758 /*------------------------------------------------------------------------
2759 Fill in Event data and post to the Main FSM
2760 ------------------------------------------------------------------------*/
2761 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002762 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2763 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2764 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 wdiEventData.pUserData = pUserData;
2766
2767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2768
2769}/*WDI_SetSTABcastKeyReq*/
2770
2771/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 MAC wants to uninstall a STA Bcast key from HW. Upon the
2774 call of this API the WLAN DAL will pack and send a HAL
2775 Remove STA Bcast Key request message to the lower RIVA
2776 sub-system if DAL is in state STARTED.
2777
2778 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002780
2781 WDI_SetSTABcastKeyReq must have been called.
2782
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 parameters as specified by the Device
2785 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002786
Jeff Johnson295189b2012-06-20 16:38:30 -07002787 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2788 response of the remove STA Bcast key operation received
2789 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002790
Jeff Johnson295189b2012-06-20 16:38:30 -07002791 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 callback
2793
Jeff Johnson295189b2012-06-20 16:38:30 -07002794 @see WDI_SetSTABcastKeyReq
2795 @return Result of the function call
2796*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002798WDI_RemoveSTABcastKeyReq
2799(
2800 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2801 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2802 void* pUserData
2803)
2804{
2805 WDI_EventInfoType wdiEventData;
2806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2807
2808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 ------------------------------------------------------------------------*/
2811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2812 {
2813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2814 "WDI API call before module is initialized - Fail request");
2815
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 }
2818
2819 /*------------------------------------------------------------------------
2820 Fill in Event data and post to the Main FSM
2821 ------------------------------------------------------------------------*/
2822 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2824 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2825 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 wdiEventData.pUserData = pUserData;
2827
2828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2829
2830}/*WDI_RemoveSTABcastKeyReq*/
2831
2832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 MAC wants to set Max Tx Power to HW. Upon the
2835 call of this API the WLAN DAL will pack and send a HAL
2836 Remove STA Bcast Key request message to the lower RIVA
2837 sub-system if DAL is in state STARTED.
2838
2839 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002841
2842 WDI_SetSTABcastKeyReq must have been called.
2843
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 parameters as specified by the Device
2846 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002847
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2849 response of the remove STA Bcast key operation received
2850 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002851
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 callback
2854
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 @see WDI_SetMaxTxPowerReq
2856 @return Result of the function call
2857*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002858WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002859WDI_SetMaxTxPowerReq
2860(
2861 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2862 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2863 void* pUserData
2864)
2865{
2866 WDI_EventInfoType wdiEventData;
2867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2868
2869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 ------------------------------------------------------------------------*/
2872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2873 {
2874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2875 "WDI API call before module is initialized - Fail request");
2876
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 }
2879
2880 /*------------------------------------------------------------------------
2881 Fill in Event data and post to the Main FSM
2882 ------------------------------------------------------------------------*/
2883 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2885 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2886 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 wdiEventData.pUserData = pUserData;
2888
2889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2890}
2891
schangd82195a2013-03-13 18:41:24 -07002892/**
2893 @brief WDI_SetTxPowerReq will be called when the upper
2894 MAC wants to set Tx Power to HW.
2895 In state BUSY this request will be queued. Request won't
2896 be allowed in any other state.
2897
2898
2899 @param pwdiSetTxPowerParams: set TS Power parameters
2900 BSSID and target TX Power with dbm included
2901
2902 wdiReqStatusCb: callback for passing back the response
2903
2904 pUserData: user data will be passed back with the
2905 callback
2906
2907 @return Result of the function call
2908*/
2909WDI_Status
2910WDI_SetTxPowerReq
2911(
2912 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2913 WDA_SetTxPowerRspCb wdiReqStatusCb,
2914 void* pUserData
2915)
2916{
2917 WDI_EventInfoType wdiEventData;
2918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2919
2920 /*------------------------------------------------------------------------
2921 Sanity Check
2922 ------------------------------------------------------------------------*/
2923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2924 {
2925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2926 "WDI API call before module is initialized - Fail request");
2927
2928 return WDI_STATUS_E_NOT_ALLOWED;
2929 }
2930
2931 /*------------------------------------------------------------------------
2932 Fill in Event data and post to the Main FSM
2933 ------------------------------------------------------------------------*/
2934 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2935 wdiEventData.pEventData = pwdiSetTxPowerParams;
2936 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2937 wdiEventData.pCBfnc = wdiReqStatusCb;
2938 wdiEventData.pUserData = pUserData;
2939
2940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2941}
2942
Jeff Johnson295189b2012-06-20 16:38:30 -07002943#ifdef FEATURE_WLAN_CCX
2944WDI_Status
2945WDI_TSMStatsReq
2946(
2947 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2948 WDI_TsmRspCb wdiReqStatusCb,
2949 void* pUserData
2950)
2951{
2952 WDI_EventInfoType wdiEventData;
2953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 /*------------------------------------------------------------------------
2955 Sanity Check
2956 ------------------------------------------------------------------------*/
2957 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2958 {
2959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2960 "WDI API call before module is initialized - Fail request");
2961
2962 return WDI_STATUS_E_NOT_ALLOWED;
2963 }
2964
2965 /*------------------------------------------------------------------------
2966 Fill in Event data and post to the Main FSM
2967 ------------------------------------------------------------------------*/
2968 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2969 wdiEventData.pEventData = pwdiTsmReqParams;
2970 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2971 wdiEventData.pCBfnc = wdiReqStatusCb;
2972 wdiEventData.pUserData = pUserData;
2973
2974 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2975
2976}
2977#endif
2978
2979/*========================================================================
2980
2981 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002982
Jeff Johnson295189b2012-06-20 16:38:30 -07002983==========================================================================*/
2984
2985/**
2986 @brief WDI_AddTSReq will be called when the upper MAC to inform
2987 the device of a successful add TSpec negotiation. HW
2988 needs to receive the TSpec Info from the UMAC in order
2989 to configure properly the QoS data traffic. Upon the
2990 call of this API the WLAN DAL will pack and send a HAL
2991 Add TS request message to the lower RIVA sub-system if
2992 DAL is in state STARTED.
2993
2994 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002995 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002996
2997 WDI_PostAssocReq must have been called.
2998
2999 @param wdiAddTsReqParams: the add TS parameters as specified by
3000 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003001
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 wdiAddTsRspCb: callback for passing back the response of
3003 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003004
Jeff Johnson295189b2012-06-20 16:38:30 -07003005 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003006 callback
3007
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 @see WDI_PostAssocReq
3009 @return Result of the function call
3010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003012WDI_AddTSReq
3013(
3014 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3015 WDI_AddTsRspCb wdiAddTsRspCb,
3016 void* pUserData
3017)
3018{
3019 WDI_EventInfoType wdiEventData;
3020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3021
3022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003024 ------------------------------------------------------------------------*/
3025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3026 {
3027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3028 "WDI API call before module is initialized - Fail request");
3029
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 }
3032
3033 /*------------------------------------------------------------------------
3034 Fill in Event data and post to the Main FSM
3035 ------------------------------------------------------------------------*/
3036 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003037 wdiEventData.pEventData = pwdiAddTsReqParams;
3038 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3039 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 wdiEventData.pUserData = pUserData;
3041
3042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3043
3044}/*WDI_AddTSReq*/
3045
3046
3047
3048/**
3049 @brief WDI_DelTSReq will be called when the upper MAC has ended
3050 admission on a specific AC. This is to inform HW that
3051 QoS traffic parameters must be rest. Upon the call of
3052 this API the WLAN DAL will pack and send a HAL Del TS
3053 request message to the lower RIVA sub-system if DAL is
3054 in state STARTED.
3055
3056 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003058
3059 WDI_AddTSReq must have been called.
3060
3061 @param wdiDelTsReqParams: the del TS parameters as specified by
3062 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003063
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 wdiDelTsRspCb: callback for passing back the response of
3065 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003066
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 callback
3069
Jeff Johnson295189b2012-06-20 16:38:30 -07003070 @see WDI_AddTSReq
3071 @return Result of the function call
3072*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003074WDI_DelTSReq
3075(
3076 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3077 WDI_DelTsRspCb wdiDelTsRspCb,
3078 void* pUserData
3079)
3080{
3081 WDI_EventInfoType wdiEventData;
3082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3083
3084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 ------------------------------------------------------------------------*/
3087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3088 {
3089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3090 "WDI API call before module is initialized - Fail request");
3091
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003093 }
3094
3095 /*------------------------------------------------------------------------
3096 Fill in Event data and post to the Main FSM
3097 ------------------------------------------------------------------------*/
3098 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 wdiEventData.pEventData = pwdiDelTsReqParams;
3100 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3101 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003102 wdiEventData.pUserData = pUserData;
3103
3104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3105
3106}/*WDI_DelTSReq*/
3107
3108
3109
3110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 wishes to update the EDCA parameters used by HW for QoS
3113 data traffic. Upon the call of this API the WLAN DAL
3114 will pack and send a HAL Update EDCA Params request
3115 message to the lower RIVA sub-system if DAL is in state
3116 STARTED.
3117
3118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003120
3121 WDI_PostAssocReq must have been called.
3122
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 wdiUpdateEDCAParamsRspCb: callback for passing back the
3127 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003128
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 callback
3131
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 @see WDI_PostAssocReq
3133 @return Result of the function call
3134*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003135WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003136WDI_UpdateEDCAParams
3137(
3138 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3139 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3140 void* pUserData
3141)
3142{
3143 WDI_EventInfoType wdiEventData;
3144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3145
3146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003148 ------------------------------------------------------------------------*/
3149 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3150 {
3151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3152 "WDI API call before module is initialized - Fail request");
3153
Jeff Johnsone7245742012-09-05 17:12:55 -07003154 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003155 }
3156
3157 /*------------------------------------------------------------------------
3158 Fill in Event data and post to the Main FSM
3159 ------------------------------------------------------------------------*/
3160 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003161 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3162 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3163 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 wdiEventData.pUserData = pUserData;
3165
3166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3167
3168}/*WDI_UpdateEDCAParams*/
3169
3170
3171/**
3172 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3173 successfully a BA session and needs to notify the HW for
3174 the appropriate settings to take place. Upon the call of
3175 this API the WLAN DAL will pack and send a HAL Add BA
3176 request message to the lower RIVA sub-system if DAL is
3177 in state STARTED.
3178
3179 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003181
3182 WDI_PostAssocReq must have been called.
3183
3184 @param wdiAddBAReqParams: the add BA parameters as specified by
3185 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 wdiAddBARspCb: callback for passing back the response of
3188 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003189
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003191 callback
3192
Jeff Johnson295189b2012-06-20 16:38:30 -07003193 @see WDI_PostAssocReq
3194 @return Result of the function call
3195*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003196WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003197WDI_AddBASessionReq
3198(
3199 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3200 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3201 void* pUserData
3202)
3203{
3204 WDI_EventInfoType wdiEventData;
3205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3206
3207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 ------------------------------------------------------------------------*/
3210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3211 {
3212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3213 "WDI API call before module is initialized - Fail request");
3214
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 }
3217
3218 /*------------------------------------------------------------------------
3219 Fill in Event data and post to the Main FSM
3220 ------------------------------------------------------------------------*/
3221 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003222 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3223 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3224 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 wdiEventData.pUserData = pUserData;
3226
3227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3228
3229}/*WDI_AddBASessionReq*/
3230
3231/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 inform HW that it has deleted a previously created BA
3234 session. Upon the call of this API the WLAN DAL will
3235 pack and send a HAL Del BA request message to the lower
3236 RIVA sub-system if DAL is in state STARTED.
3237
3238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003240
3241 WDI_AddBAReq must have been called.
3242
3243 @param wdiDelBAReqParams: the del BA parameters as specified by
3244 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003245
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 wdiDelBARspCb: callback for passing back the response of
3247 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003250 callback
3251
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 @see WDI_AddBAReq
3253 @return Result of the function call
3254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003256WDI_DelBAReq
3257(
3258 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3259 WDI_DelBARspCb wdiDelBARspCb,
3260 void* pUserData
3261)
3262{
3263 WDI_EventInfoType wdiEventData;
3264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3265
3266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 ------------------------------------------------------------------------*/
3269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3270 {
3271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3272 "WDI API call before module is initialized - Fail request");
3273
Jeff Johnsone7245742012-09-05 17:12:55 -07003274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003275 }
3276
3277 /*------------------------------------------------------------------------
3278 Fill in Event data and post to the Main FSM
3279 ------------------------------------------------------------------------*/
3280 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 wdiEventData.pEventData = pwdiDelBAReqParams;
3282 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3283 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003284 wdiEventData.pUserData = pUserData;
3285
3286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3287
3288}/*WDI_DelBAReq*/
3289
Jeff Johnsone7245742012-09-05 17:12:55 -07003290/*========================================================================
3291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294==========================================================================*/
3295
3296/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003298 wants to set the power save related configurations of
3299 the WLAN Device. Upon the call of this API the WLAN DAL
3300 will pack and send a HAL Update CFG request message to
3301 the lower RIVA sub-system if DAL is in state STARTED.
3302
3303 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003304 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003305
3306 WDI_Start must have been called.
3307
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003310
Jeff Johnson295189b2012-06-20 16:38:30 -07003311 wdiSetPwrSaveCfgCb: callback for passing back the
3312 response of the set power save cfg operation received
3313 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003314
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 callback
3317
Jeff Johnson295189b2012-06-20 16:38:30 -07003318 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003319 @return Result of the function call
3320*/
3321WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003322WDI_SetPwrSaveCfgReq
3323(
3324 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3325 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3326 void* pUserData
3327)
3328{
3329 WDI_EventInfoType wdiEventData;
3330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3331
3332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003333 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 ------------------------------------------------------------------------*/
3335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3336 {
3337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3338 "WDI API call before module is initialized - Fail request");
3339
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003341 }
3342
3343 /*------------------------------------------------------------------------
3344 Fill in Event data and post to the Main FSM
3345 ------------------------------------------------------------------------*/
3346 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003347 wdiEventData.pEventData = pwdiPowerSaveCfg;
3348 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3349 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 wdiEventData.pUserData = pUserData;
3351
3352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3353
3354}/*WDI_SetPwrSaveCfgReq*/
3355
3356/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003357 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 request the device to get into IMPS power state. Upon
3359 the call of this API the WLAN DAL will send a HAL Enter
3360 IMPS request message to the lower RIVA sub-system if DAL
3361 is in state STARTED.
3362
3363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003365
Jeff Johnsone7245742012-09-05 17:12:55 -07003366
3367 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 response of the Enter IMPS operation received from the
3369 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003372 callback
3373
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 @see WDI_Start
3375 @return Result of the function call
3376*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003378WDI_EnterImpsReq
3379(
3380 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3381 void* pUserData
3382)
3383{
3384 WDI_EventInfoType wdiEventData;
3385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3386
3387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003389 ------------------------------------------------------------------------*/
3390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3391 {
3392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3393 "WDI API call before module is initialized - Fail request");
3394
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 }
3397
3398 /*------------------------------------------------------------------------
3399 Fill in Event data and post to the Main FSM
3400 ------------------------------------------------------------------------*/
3401 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003402 wdiEventData.pEventData = NULL;
3403 wdiEventData.uEventDataSize = 0;
3404 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 wdiEventData.pUserData = pUserData;
3406
3407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3408
3409}/*WDI_EnterImpsReq*/
3410
3411/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 request the device to get out of IMPS power state. Upon
3414 the call of this API the WLAN DAL will send a HAL Exit
3415 IMPS request message to the lower RIVA sub-system if DAL
3416 is in state STARTED.
3417
3418 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003419 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003420
Jeff Johnson295189b2012-06-20 16:38:30 -07003421
Jeff Johnsone7245742012-09-05 17:12:55 -07003422
3423 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003425
Jeff Johnson295189b2012-06-20 16:38:30 -07003426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 callback
3428
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 @see WDI_Start
3430 @return Result of the function call
3431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003433WDI_ExitImpsReq
3434(
3435 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3436 void* pUserData
3437)
3438{
3439 WDI_EventInfoType wdiEventData;
3440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3441
3442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 ------------------------------------------------------------------------*/
3445 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3446 {
3447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3448 "WDI API call before module is initialized - Fail request");
3449
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 }
3452
3453 /*------------------------------------------------------------------------
3454 Fill in Event data and post to the Main FSM
3455 ------------------------------------------------------------------------*/
3456 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 wdiEventData.pEventData = NULL;
3458 wdiEventData.uEventDataSize = 0;
3459 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 wdiEventData.pUserData = pUserData;
3461
3462 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3463
3464}/*WDI_ExitImpsReq*/
3465
3466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 request the device to get into BMPS power state. Upon
3469 the call of this API the WLAN DAL will pack and send a
3470 HAL Enter BMPS request message to the lower RIVA
3471 sub-system if DAL is in state STARTED.
3472
3473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003475
3476 WDI_PostAssocReq must have been called.
3477
Jeff Johnsone7245742012-09-05 17:12:55 -07003478 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003480
Jeff Johnson295189b2012-06-20 16:38:30 -07003481 wdiEnterBmpsRspCb: callback for passing back the
3482 response of the Enter BMPS operation received from the
3483 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003484
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 callback
3487
Jeff Johnson295189b2012-06-20 16:38:30 -07003488 @see WDI_PostAssocReq
3489 @return Result of the function call
3490*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003491WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003492WDI_EnterBmpsReq
3493(
3494 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3495 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3496 void* pUserData
3497)
3498{
3499 WDI_EventInfoType wdiEventData;
3500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3501
3502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003503 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 ------------------------------------------------------------------------*/
3505 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3506 {
3507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3508 "WDI API call before module is initialized - Fail request");
3509
Jeff Johnsone7245742012-09-05 17:12:55 -07003510 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003511 }
3512
3513 /*------------------------------------------------------------------------
3514 Fill in Event data and post to the Main FSM
3515 ------------------------------------------------------------------------*/
3516 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3518 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3519 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 wdiEventData.pUserData = pUserData;
3521
3522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3523
3524}/*WDI_EnterBmpsReq*/
3525
3526/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003527 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 request the device to get out of BMPS power state. Upon
3529 the call of this API the WLAN DAL will pack and send a
3530 HAL Exit BMPS request message to the lower RIVA
3531 sub-system if DAL is in state STARTED.
3532
3533 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003535
3536 WDI_PostAssocReq must have been called.
3537
Jeff Johnsone7245742012-09-05 17:12:55 -07003538 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003540
Jeff Johnson295189b2012-06-20 16:38:30 -07003541 wdiExitBmpsRspCb: callback for passing back the response
3542 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003543
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003545 callback
3546
Jeff Johnson295189b2012-06-20 16:38:30 -07003547 @see WDI_PostAssocReq
3548 @return Result of the function call
3549*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003550WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003551WDI_ExitBmpsReq
3552(
3553 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3554 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3555 void* pUserData
3556)
3557{
3558 WDI_EventInfoType wdiEventData;
3559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3560
3561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 ------------------------------------------------------------------------*/
3564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3565 {
3566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3567 "WDI API call before module is initialized - Fail request");
3568
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 }
3571
3572 /*------------------------------------------------------------------------
3573 Fill in Event data and post to the Main FSM
3574 ------------------------------------------------------------------------*/
3575 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3577 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3578 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003579 wdiEventData.pUserData = pUserData;
3580
3581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3582
3583}/*WDI_ExitBmpsReq*/
3584
3585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 request the device to get into UAPSD power state. Upon
3588 the call of this API the WLAN DAL will pack and send a
3589 HAL Enter UAPSD request message to the lower RIVA
3590 sub-system if DAL is in state STARTED.
3591
3592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003594
3595 WDI_PostAssocReq must have been called.
3596 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003597
3598 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003600
Jeff Johnson295189b2012-06-20 16:38:30 -07003601 wdiEnterUapsdRspCb: callback for passing back the
3602 response of the Enter UAPSD operation received from the
3603 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003606 callback
3607
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3609 @return Result of the function call
3610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003612WDI_EnterUapsdReq
3613(
3614 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3615 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3616 void* pUserData
3617)
3618{
3619 WDI_EventInfoType wdiEventData;
3620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3621
3622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 ------------------------------------------------------------------------*/
3625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3626 {
3627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3628 "WDI API call before module is initialized - Fail request");
3629
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 }
3632
3633 /*------------------------------------------------------------------------
3634 Fill in Event data and post to the Main FSM
3635 ------------------------------------------------------------------------*/
3636 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3638 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3639 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 wdiEventData.pUserData = pUserData;
3641
3642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3643
3644}/*WDI_EnterUapsdReq*/
3645
3646/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 request the device to get out of UAPSD power state. Upon
3649 the call of this API the WLAN DAL will send a HAL Exit
3650 UAPSD request message to the lower RIVA sub-system if
3651 DAL is in state STARTED.
3652
3653 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003654 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003655
3656 WDI_PostAssocReq must have been called.
3657
Jeff Johnsone7245742012-09-05 17:12:55 -07003658 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003659 response of the Exit UAPSD operation received from the
3660 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003661
Jeff Johnson295189b2012-06-20 16:38:30 -07003662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 callback
3664
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 @see WDI_PostAssocReq
3666 @return Result of the function call
3667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003669WDI_ExitUapsdReq
3670(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003671 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3673 void* pUserData
3674)
3675{
3676 WDI_EventInfoType wdiEventData;
3677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3678
3679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 ------------------------------------------------------------------------*/
3682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3683 {
3684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3685 "WDI API call before module is initialized - Fail request");
3686
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 }
3689
3690 /*------------------------------------------------------------------------
3691 Fill in Event data and post to the Main FSM
3692 ------------------------------------------------------------------------*/
3693 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003694 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3695 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 wdiEventData.pUserData = pUserData;
3698
3699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3700
3701}/*WDI_ExitUapsdReq*/
3702
3703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003704 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 MAC wants to set the UAPSD related configurations
3706 of an associated STA (while acting as an AP) to the WLAN
3707 Device. Upon the call of this API the WLAN DAL will pack
3708 and send a HAL Update UAPSD params request message to
3709 the lower RIVA sub-system if DAL is in state STARTED.
3710
3711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003713
3714 WDI_ConfigBSSReq must have been called.
3715
Jeff Johnsone7245742012-09-05 17:12:55 -07003716 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003718
Jeff Johnson295189b2012-06-20 16:38:30 -07003719 wdiUpdateUapsdParamsCb: callback for passing back the
3720 response of the update UAPSD params operation received
3721 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003722
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 callback
3725
Jeff Johnson295189b2012-06-20 16:38:30 -07003726 @see WDI_ConfigBSSReq
3727 @return Result of the function call
3728*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003730WDI_UpdateUapsdParamsReq
3731(
3732 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3733 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3734 void* pUserData
3735)
3736{
3737 WDI_EventInfoType wdiEventData;
3738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3739
3740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003742 ------------------------------------------------------------------------*/
3743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3744 {
3745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3746 "WDI API call before module is initialized - Fail request");
3747
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 }
3750
3751 /*------------------------------------------------------------------------
3752 Fill in Event data and post to the Main FSM
3753 ------------------------------------------------------------------------*/
3754 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003756 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003757 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 wdiEventData.pUserData = pUserData;
3759
3760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3761
3762}/*WDI_UpdateUapsdParamsReq*/
3763
3764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 MAC wants to set the UAPSD related configurations before
3767 requesting for enter UAPSD power state to the WLAN
3768 Device. Upon the call of this API the WLAN DAL will pack
3769 and send a HAL Set UAPSD params request message to
3770 the lower RIVA sub-system if DAL is in state STARTED.
3771
3772 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003774
3775 WDI_PostAssocReq must have been called.
3776
3777 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3778 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 wdiSetUapsdAcParamsCb: callback for passing back the
3781 response of the set UAPSD params operation received from
3782 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003785 callback
3786
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 @see WDI_PostAssocReq
3788 @return Result of the function call
3789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003791WDI_SetUapsdAcParamsReq
3792(
3793 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3794 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3795 void* pUserData
3796)
3797{
3798 WDI_EventInfoType wdiEventData;
3799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3800
3801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 ------------------------------------------------------------------------*/
3804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3805 {
3806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3807 "WDI API call before module is initialized - Fail request");
3808
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 }
3811
3812 /*------------------------------------------------------------------------
3813 Fill in Event data and post to the Main FSM
3814 ------------------------------------------------------------------------*/
3815 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 wdiEventData.pEventData = pwdiUapsdInfo;
3817 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3818 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 wdiEventData.pUserData = pUserData;
3820
3821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3822
3823}/*WDI_SetUapsdAcParamsReq*/
3824
3825/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 MAC wants to set/reset the RXP filters for received pkts
3828 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3829 and send a HAL configure RXP filter request message to
3830 the lower RIVA sub-system.
3831
3832 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003834
Jeff Johnsone7245742012-09-05 17:12:55 -07003835
3836 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003837 filter as specified by the Device
3838 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003839
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 wdiConfigureRxpFilterCb: callback for passing back the
3841 response of the configure RXP filter operation received
3842 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003843
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 callback
3846
Jeff Johnson295189b2012-06-20 16:38:30 -07003847 @return Result of the function call
3848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003850WDI_ConfigureRxpFilterReq
3851(
3852 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3853 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3854 void* pUserData
3855)
3856{
3857 WDI_EventInfoType wdiEventData;
3858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3859
3860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 ------------------------------------------------------------------------*/
3863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3864 {
3865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3866 "WDI API call before module is initialized - Fail request");
3867
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 }
3870
3871 /*------------------------------------------------------------------------
3872 Fill in Event data and post to the Main FSM
3873 ------------------------------------------------------------------------*/
3874 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3876 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3877 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 wdiEventData.pUserData = pUserData;
3879
3880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3881}/*WDI_ConfigureRxpFilterReq*/
3882
3883/**
3884 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3885 wants to set the beacon filters while in power save.
3886 Upon the call of this API the WLAN DAL will pack and
3887 send a Beacon filter request message to the
3888 lower RIVA sub-system.
3889
3890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003892
Jeff Johnsone7245742012-09-05 17:12:55 -07003893
3894 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003895 filter as specified by the Device
3896 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003897
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 wdiBeaconFilterCb: callback for passing back the
3899 response of the set beacon filter operation received
3900 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003901
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 callback
3904
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 @return Result of the function call
3906*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003907WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003908WDI_SetBeaconFilterReq
3909(
3910 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3911 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3912 void* pUserData
3913)
3914{
3915 WDI_EventInfoType wdiEventData;
3916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3917
3918 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 ------------------------------------------------------------------------*/
3921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3922 {
3923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3924 "WDI API call before module is initialized - Fail request");
3925
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 }
3928
3929 /*------------------------------------------------------------------------
3930 Fill in Event data and post to the Main FSM
3931 ------------------------------------------------------------------------*/
3932 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003934 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 wdiEventData.pUserData = pUserData;
3937
3938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3939}/*WDI_SetBeaconFilterReq*/
3940
3941/**
3942 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3943 wants to remove the beacon filter for particular IE
3944 while in power save. Upon the call of this API the WLAN
3945 DAL will pack and send a remove Beacon filter request
3946 message to the lower RIVA sub-system.
3947
3948 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003950
Jeff Johnsone7245742012-09-05 17:12:55 -07003951
3952 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 filter as specified by the Device
3954 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003955
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 wdiBeaconFilterCb: callback for passing back the
3957 response of the remove beacon filter operation received
3958 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003959
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 callback
3962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 @return Result of the function call
3964*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003965WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003966WDI_RemBeaconFilterReq
3967(
3968 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3969 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3970 void* pUserData
3971)
3972{
3973 WDI_EventInfoType wdiEventData;
3974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3975
3976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 ------------------------------------------------------------------------*/
3979 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3980 {
3981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3982 "WDI API call before module is initialized - Fail request");
3983
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 }
3986
3987 /*------------------------------------------------------------------------
3988 Fill in Event data and post to the Main FSM
3989 ------------------------------------------------------------------------*/
3990 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003992 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 wdiEventData.pUserData = pUserData;
3995
3996 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3997}/*WDI_RemBeaconFilterReq*/
3998
3999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 MAC wants to set the RSSI thresholds related
4002 configurations while in power save. Upon the call of
4003 this API the WLAN DAL will pack and send a HAL Set RSSI
4004 thresholds request message to the lower RIVA
4005 sub-system if DAL is in state STARTED.
4006
4007 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004009
4010 WDI_PostAssocReq must have been called.
4011
4012 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4013 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004014
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 wdiSetUapsdAcParamsCb: callback for passing back the
4016 response of the set UAPSD params operation received from
4017 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004018
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 callback
4021
Jeff Johnson295189b2012-06-20 16:38:30 -07004022 @see WDI_PostAssocReq
4023 @return Result of the function call
4024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004026WDI_SetRSSIThresholdsReq
4027(
4028 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4029 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4030 void* pUserData
4031)
4032{
4033 WDI_EventInfoType wdiEventData;
4034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4035
4036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 ------------------------------------------------------------------------*/
4039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4040 {
4041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4042 "WDI API call before module is initialized - Fail request");
4043
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 }
4046
4047 /*------------------------------------------------------------------------
4048 Fill in Event data and post to the Main FSM
4049 ------------------------------------------------------------------------*/
4050 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004052 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 wdiEventData.pUserData = pUserData;
4055
4056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4057}/* WDI_SetRSSIThresholdsReq*/
4058
4059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 wants to set the filter to minimize unnecessary host
4062 wakeup due to broadcast traffic while in power save.
4063 Upon the call of this API the WLAN DAL will pack and
4064 send a HAL host offload request message to the
4065 lower RIVA sub-system if DAL is in state STARTED.
4066
4067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004069
4070 WDI_PostAssocReq must have been called.
4071
Jeff Johnsone7245742012-09-05 17:12:55 -07004072 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004074
Jeff Johnson295189b2012-06-20 16:38:30 -07004075 wdiHostOffloadCb: callback for passing back the response
4076 of the host offload operation received from the
4077 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004078
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 callback
4081
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 @see WDI_PostAssocReq
4083 @return Result of the function call
4084*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004085WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004086WDI_HostOffloadReq
4087(
4088 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4089 WDI_HostOffloadCb wdiHostOffloadCb,
4090 void* pUserData
4091)
4092{
4093 WDI_EventInfoType wdiEventData;
4094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4095
4096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 ------------------------------------------------------------------------*/
4099 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4100 {
4101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4102 "WDI API call before module is initialized - Fail request");
4103
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 }
4106
4107 /*------------------------------------------------------------------------
4108 Fill in Event data and post to the Main FSM
4109 ------------------------------------------------------------------------*/
4110 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004112 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 wdiEventData.pUserData = pUserData;
4115
4116 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4117}/*WDI_HostOffloadReq*/
4118
4119/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004120 @brief WDI_KeepAliveReq will be called when the upper MAC
4121 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 and minimize unnecessary host wakeups due to while in power save.
4123 Upon the call of this API the WLAN DAL will pack and
4124 send a HAL Keep Alive request message to the
4125 lower RIVA sub-system if DAL is in state STARTED.
4126
4127 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004129
4130 WDI_PostAssocReq must have been called.
4131
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 wdiKeepAliveCb: callback for passing back the response
4136 of the Keep Alive operation received from the
4137 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004138
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 callback
4141
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 @see WDI_PostAssocReq
4143 @return Result of the function call
4144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004146WDI_KeepAliveReq
4147(
4148 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4149 WDI_KeepAliveCb wdiKeepAliveCb,
4150 void* pUserData
4151)
4152{
4153 WDI_EventInfoType wdiEventData;
4154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4155
4156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 ------------------------------------------------------------------------*/
4159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4160 {
4161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4162 "WDI_KeepAliveReq: WDI API call before module "
4163 "is initialized - Fail request");
4164
Jeff Johnsone7245742012-09-05 17:12:55 -07004165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 }
4167
4168 /*------------------------------------------------------------------------
4169 Fill in Event data and post to the Main FSM
4170 ------------------------------------------------------------------------*/
4171 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 wdiEventData.pEventData = pwdiKeepAliveParams;
4173 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4174 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 wdiEventData.pUserData = pUserData;
4176
4177 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4178}/*WDI_KeepAliveReq*/
4179
4180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 wants to set the Wowl Bcast ptrn to minimize unnecessary
4183 host wakeup due to broadcast traffic while in power
4184 save. Upon the call of this API the WLAN DAL will pack
4185 and send a HAL Wowl Bcast ptrn request message to the
4186 lower RIVA sub-system if DAL is in state STARTED.
4187
4188 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004189 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004190
4191 WDI_PostAssocReq must have been called.
4192
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004195
Jeff Johnson295189b2012-06-20 16:38:30 -07004196 wdiWowlAddBcPtrnCb: callback for passing back the
4197 response of the add Wowl bcast ptrn operation received
4198 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004199
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004201 callback
4202
Jeff Johnson295189b2012-06-20 16:38:30 -07004203 @see WDI_PostAssocReq
4204 @return Result of the function call
4205*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004206WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004207WDI_WowlAddBcPtrnReq
4208(
4209 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4210 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4211 void* pUserData
4212)
4213{
4214 WDI_EventInfoType wdiEventData;
4215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4216
4217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004218 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004219 ------------------------------------------------------------------------*/
4220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4221 {
4222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4223 "WDI API call before module is initialized - Fail request");
4224
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 }
4227
4228 /*------------------------------------------------------------------------
4229 Fill in Event data and post to the Main FSM
4230 ------------------------------------------------------------------------*/
4231 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004233 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 wdiEventData.pUserData = pUserData;
4236
4237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4238}/*WDI_WowlAddBcPtrnReq*/
4239
4240/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004241 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 wants to clear the Wowl Bcast ptrn. Upon the call of
4243 this API the WLAN DAL will pack and send a HAL delete
4244 Wowl Bcast ptrn request message to the lower RIVA
4245 sub-system if DAL is in state STARTED.
4246
4247 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004248 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004249
4250 WDI_WowlAddBcPtrnReq must have been called.
4251
Jeff Johnsone7245742012-09-05 17:12:55 -07004252 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004254
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 wdiWowlDelBcPtrnCb: callback for passing back the
4256 response of the del Wowl bcast ptrn operation received
4257 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004258
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004260 callback
4261
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 @see WDI_WowlAddBcPtrnReq
4263 @return Result of the function call
4264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004266WDI_WowlDelBcPtrnReq
4267(
4268 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4269 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4270 void* pUserData
4271)
4272{
4273 WDI_EventInfoType wdiEventData;
4274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4275
4276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004278 ------------------------------------------------------------------------*/
4279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4280 {
4281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4282 "WDI API call before module is initialized - Fail request");
4283
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 }
4286
4287 /*------------------------------------------------------------------------
4288 Fill in Event data and post to the Main FSM
4289 ------------------------------------------------------------------------*/
4290 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004292 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wdiEventData.pUserData = pUserData;
4295
4296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4297}/*WDI_WowlDelBcPtrnReq*/
4298
4299/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wants to enter the Wowl state to minimize unnecessary
4302 host wakeup while in power save. Upon the call of this
4303 API the WLAN DAL will pack and send a HAL Wowl enter
4304 request message to the lower RIVA sub-system if DAL is
4305 in state STARTED.
4306
4307 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004308 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004309
4310 WDI_PostAssocReq must have been called.
4311
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 wdiWowlEnterReqCb: callback for passing back the
4316 response of the enter Wowl operation received from the
4317 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 callback
4321
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 @see WDI_PostAssocReq
4323 @return Result of the function call
4324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004326WDI_WowlEnterReq
4327(
4328 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4329 WDI_WowlEnterReqCb wdiWowlEnterCb,
4330 void* pUserData
4331)
4332{
4333 WDI_EventInfoType wdiEventData;
4334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4335
4336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 ------------------------------------------------------------------------*/
4339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4340 {
4341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4342 "WDI API call before module is initialized - Fail request");
4343
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 }
4346
4347 /*------------------------------------------------------------------------
4348 Fill in Event data and post to the Main FSM
4349 ------------------------------------------------------------------------*/
4350 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004352 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 wdiEventData.pUserData = pUserData;
4355
4356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4357}/*WDI_WowlEnterReq*/
4358
4359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004360 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 wants to exit the Wowl state. Upon the call of this API
4362 the WLAN DAL will pack and send a HAL Wowl exit request
4363 message to the lower RIVA sub-system if DAL is in state
4364 STARTED.
4365
4366 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004368
4369 WDI_WowlEnterReq must have been called.
4370
Jeff Johnsone7245742012-09-05 17:12:55 -07004371 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 wdiWowlExitReqCb: callback for passing back the response
4375 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004376
Jeff Johnson295189b2012-06-20 16:38:30 -07004377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 callback
4379
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 @see WDI_WowlEnterReq
4381 @return Result of the function call
4382*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004384WDI_WowlExitReq
4385(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004386 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 WDI_WowlExitReqCb wdiWowlExitCb,
4388 void* pUserData
4389)
4390{
4391 WDI_EventInfoType wdiEventData;
4392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4393
4394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 ------------------------------------------------------------------------*/
4397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4398 {
4399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4400 "WDI API call before module is initialized - Fail request");
4401
Jeff Johnsone7245742012-09-05 17:12:55 -07004402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 }
4404
4405 /*------------------------------------------------------------------------
4406 Fill in Event data and post to the Main FSM
4407 ------------------------------------------------------------------------*/
4408 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004409 wdiEventData.pEventData = pwdiWowlExitParams;
4410 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004411 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 wdiEventData.pUserData = pUserData;
4413
4414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4415}/*WDI_WowlExitReq*/
4416
4417/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004418 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 the upper MAC wants to dynamically adjusts the listen
4420 interval based on the WLAN/MSM activity. Upon the call
4421 of this API the WLAN DAL will pack and send a HAL
4422 configure Apps Cpu Wakeup State request message to the
4423 lower RIVA sub-system.
4424
4425 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004426 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004427
Jeff Johnsone7245742012-09-05 17:12:55 -07004428
4429 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004430 Apps Cpu Wakeup State as specified by the
4431 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004432
Jeff Johnson295189b2012-06-20 16:38:30 -07004433 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4434 back the response of the configure Apps Cpu Wakeup State
4435 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004436
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 callback
4439
Jeff Johnson295189b2012-06-20 16:38:30 -07004440 @return Result of the function call
4441*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004442WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004443WDI_ConfigureAppsCpuWakeupStateReq
4444(
4445 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4446 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4447 void* pUserData
4448)
4449{
4450 WDI_EventInfoType wdiEventData;
4451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4452
4453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 ------------------------------------------------------------------------*/
4456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4457 {
4458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4459 "WDI API call before module is initialized - Fail request");
4460
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 }
4463
4464 /*------------------------------------------------------------------------
4465 Fill in Event data and post to the Main FSM
4466 ------------------------------------------------------------------------*/
4467 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4469 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4470 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 wdiEventData.pUserData = pUserData;
4472
4473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4474}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 to to perform a flush operation on a given AC. Upon the
4478 call of this API the WLAN DAL will pack and send a HAL
4479 Flush AC request message to the lower RIVA sub-system if
4480 DAL is in state STARTED.
4481
4482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004484
4485 WDI_AddBAReq must have been called.
4486
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 wdiFlushAcRspCb: callback for passing back the response
4491 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004492
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004494 callback
4495
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 @see WDI_AddBAReq
4497 @return Result of the function call
4498*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004500WDI_FlushAcReq
4501(
4502 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4503 WDI_FlushAcRspCb wdiFlushAcRspCb,
4504 void* pUserData
4505)
4506{
4507 WDI_EventInfoType wdiEventData;
4508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4509
4510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 ------------------------------------------------------------------------*/
4513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4514 {
4515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4516 "WDI API call before module is initialized - Fail request");
4517
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 }
4520
4521 /*------------------------------------------------------------------------
4522 Fill in Event data and post to the Main FSM
4523 ------------------------------------------------------------------------*/
4524 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 wdiEventData.pEventData = pwdiFlushAcReqParams;
4526 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4527 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 wdiEventData.pUserData = pUserData;
4529
4530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4531
4532}/*WDI_FlushAcReq*/
4533
4534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004535 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004536 wants to notify the lower mac on a BT AMP event. This is
4537 to inform BTC-SLM that some BT AMP event occurred. Upon
4538 the call of this API the WLAN DAL will pack and send a
4539 HAL BT AMP event request message to the lower RIVA
4540 sub-system if DAL is in state STARTED.
4541
4542 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004543 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004544
Jeff Johnsone7245742012-09-05 17:12:55 -07004545
4546 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004548
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 wdiBtAmpEventRspCb: callback for passing back the
4550 response of the BT AMP event operation received from the
4551 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004552
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004554 callback
4555
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 @return Result of the function call
4557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004559WDI_BtAmpEventReq
4560(
4561 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4562 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4563 void* pUserData
4564)
4565{
4566 WDI_EventInfoType wdiEventData;
4567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4568
4569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 ------------------------------------------------------------------------*/
4572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4573 {
4574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4575 "WDI API call before module is initialized - Fail request");
4576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 }
4579
4580 /*------------------------------------------------------------------------
4581 Fill in Event data and post to the Main FSM
4582 ------------------------------------------------------------------------*/
4583 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4585 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4586 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 wdiEventData.pUserData = pUserData;
4588
4589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4590
4591}/*WDI_BtAmpEventReq*/
4592
Jeff Johnsone7245742012-09-05 17:12:55 -07004593#ifdef FEATURE_OEM_DATA_SUPPORT
4594/**
4595 @brief WDI_Start Oem Data Req will be called when the upper MAC
4596 wants to notify the lower mac on a oem data Req event.Upon
4597 the call of this API the WLAN DAL will pack and send a
4598 HAL OEM Data Req event request message to the lower RIVA
4599 sub-system if DAL is in state STARTED.
4600
4601 In state BUSY this request will be queued. Request won't
4602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004603
4604
Jeff Johnsone7245742012-09-05 17:12:55 -07004605
4606 @param pwdiOemDataReqParams: the Oem Data Req as
4607 specified by the Device Interface
4608
4609 wdiStartOemDataRspCb: callback for passing back the
4610 response of the Oem Data Req received from the
4611 device
4612
4613 pUserData: user data will be passed back with the
4614 callback
4615
4616 @return Result of the function call
4617*/
4618WDI_Status
4619WDI_StartOemDataReq
4620(
4621 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4622 WDI_oemDataRspCb wdiOemDataRspCb,
4623 void* pUserData
4624)
4625{
4626 WDI_EventInfoType wdiEventData;
4627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4628
4629 /*------------------------------------------------------------------------
4630 Sanity Check
4631 ------------------------------------------------------------------------*/
4632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4633 {
4634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4635 "WDI API call before module is initialized - Fail request");
4636
4637 return WDI_STATUS_E_NOT_ALLOWED;
4638 }
4639
4640 /*------------------------------------------------------------------------
4641 Fill in Event data and post to the Main FSM
4642 ------------------------------------------------------------------------*/
4643 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4644 wdiEventData.pEventData = pwdiOemDataReqParams;
4645 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4646 wdiEventData.pCBfnc = wdiOemDataRspCb;
4647 wdiEventData.pUserData = pUserData;
4648
4649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4650
4651
4652}
4653
4654#endif
4655
4656
4657/*========================================================================
4658
Jeff Johnson295189b2012-06-20 16:38:30 -07004659 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004660
Jeff Johnson295189b2012-06-20 16:38:30 -07004661==========================================================================*/
4662/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 the WLAN HW to change the current channel of operation.
4665 Upon the call of this API the WLAN DAL will pack and
4666 send a HAL Start request message to the lower RIVA
4667 sub-system if DAL is in state STARTED.
4668
4669 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004671
4672 WDI_Start must have been called.
4673
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004676
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 wdiSwitchChRspCb: callback for passing back the response
4678 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004679
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004681 callback
4682
Jeff Johnson295189b2012-06-20 16:38:30 -07004683 @see WDI_Start
4684 @return Result of the function call
4685*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004686WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004687WDI_SwitchChReq
4688(
4689 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4690 WDI_SwitchChRspCb wdiSwitchChRspCb,
4691 void* pUserData
4692)
4693{
4694 WDI_EventInfoType wdiEventData;
4695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4696
4697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 ------------------------------------------------------------------------*/
4700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4701 {
4702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4703 "WDI API call before module is initialized - Fail request");
4704
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 }
4707
4708 /*------------------------------------------------------------------------
4709 Fill in Event data and post to the Main FSM
4710 ------------------------------------------------------------------------*/
4711 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 wdiEventData.pEventData = pwdiSwitchChReqParams;
4713 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4714 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 wdiEventData.pUserData = pUserData;
4716
4717 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4718
4719}/*WDI_SwitchChReq*/
4720
4721
4722/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 wishes to add or update a STA in HW. Upon the call of
4725 this API the WLAN DAL will pack and send a HAL Start
4726 message request message to the lower RIVA sub-system if
4727 DAL is in state STARTED.
4728
4729 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004730 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004731
4732 WDI_Start must have been called.
4733
Jeff Johnsone7245742012-09-05 17:12:55 -07004734 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004736
Jeff Johnson295189b2012-06-20 16:38:30 -07004737 wdiConfigSTARspCb: callback for passing back the
4738 response of the config STA operation received from the
4739 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004740
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004742 callback
4743
Jeff Johnson295189b2012-06-20 16:38:30 -07004744 @see WDI_Start
4745 @return Result of the function call
4746*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004747WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004748WDI_ConfigSTAReq
4749(
4750 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4751 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4752 void* pUserData
4753)
4754{
4755 WDI_EventInfoType wdiEventData;
4756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4757
4758 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004759 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 ------------------------------------------------------------------------*/
4761 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4762 {
4763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4764 "WDI API call before module is initialized - Fail request");
4765
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 }
4768
4769 /*------------------------------------------------------------------------
4770 Fill in Event data and post to the Main FSM
4771 ------------------------------------------------------------------------*/
4772 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004773 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4774 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4775 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 wdiEventData.pUserData = pUserData;
4777
4778 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4779
4780}/*WDI_ConfigSTAReq*/
4781
4782/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 wants to change the state of an ongoing link. Upon the
4785 call of this API the WLAN DAL will pack and send a HAL
4786 Start message request message to the lower RIVA
4787 sub-system if DAL is in state STARTED.
4788
4789 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004790 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004791
4792 WDI_JoinStartReq must have been called.
4793
Jeff Johnsone7245742012-09-05 17:12:55 -07004794 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004795 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004796
Jeff Johnson295189b2012-06-20 16:38:30 -07004797 wdiSetLinkStateRspCb: callback for passing back the
4798 response of the set link state operation received from
4799 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 callback
4803
Jeff Johnson295189b2012-06-20 16:38:30 -07004804 @see WDI_JoinStartReq
4805 @return Result of the function call
4806*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004807WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004808WDI_SetLinkStateReq
4809(
4810 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4811 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4812 void* pUserData
4813)
4814{
4815 WDI_EventInfoType wdiEventData;
4816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4817
4818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 ------------------------------------------------------------------------*/
4821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4822 {
4823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4824 "WDI API call before module is initialized - Fail request");
4825
Jeff Johnsone7245742012-09-05 17:12:55 -07004826 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004827 }
4828
4829 /*------------------------------------------------------------------------
4830 Fill in Event data and post to the Main FSM
4831 ------------------------------------------------------------------------*/
4832 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004833 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4834 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4835 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 wdiEventData.pUserData = pUserData;
4837
4838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4839
4840}/*WDI_SetLinkStateReq*/
4841
4842
4843/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 to get statistics (MIB counters) from the device. Upon
4846 the call of this API the WLAN DAL will pack and send a
4847 HAL Start request message to the lower RIVA sub-system
4848 if DAL is in state STARTED.
4849
4850 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004852
4853 WDI_Start must have been called.
4854
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004857
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 wdiGetStatsRspCb: callback for passing back the response
4859 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004860
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 callback
4863
Jeff Johnson295189b2012-06-20 16:38:30 -07004864 @see WDI_Start
4865 @return Result of the function call
4866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004868WDI_GetStatsReq
4869(
4870 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4871 WDI_GetStatsRspCb wdiGetStatsRspCb,
4872 void* pUserData
4873)
4874{
4875 WDI_EventInfoType wdiEventData;
4876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4877
4878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 ------------------------------------------------------------------------*/
4881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4882 {
4883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4884 "WDI API call before module is initialized - Fail request");
4885
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004887 }
4888
4889 /*------------------------------------------------------------------------
4890 Fill in Event data and post to the Main FSM
4891 ------------------------------------------------------------------------*/
4892 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004893 wdiEventData.pEventData = pwdiGetStatsReqParams;
4894 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4895 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 wdiEventData.pUserData = pUserData;
4897
4898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4899
4900}/*WDI_GetStatsReq*/
4901
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004902#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4903/**
4904 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4905 to get roam rssi from the device. Upon
4906 the call of this API the WLAN DAL will pack and send a
4907 HAL Start request message to the lower RIVA sub-system
4908 if DAL is in state STARTED.
4909
4910 In state BUSY this request will be queued. Request won't
4911 be allowed in any other state.
4912
4913 WDI_Start must have been called.
4914
4915 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4916 specified by the Device Interface
4917
4918 wdiGetRoamRssiRspCb: callback for passing back the response
4919 of the get stats operation received from the device
4920
4921 pUserData: user data will be passed back with the
4922 callback
4923
4924 @see WDI_Start
4925 @return Result of the function call
4926*/
4927WDI_Status
4928WDI_GetRoamRssiReq
4929(
4930 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4931 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4932 void* pUserData
4933)
4934{
4935 WDI_EventInfoType wdiEventData;
4936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4937
4938 /*------------------------------------------------------------------------
4939 Sanity Check
4940 ------------------------------------------------------------------------*/
4941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4942 {
4943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4944 "WDI API call before module is initialized - Fail request");
4945
4946 return WDI_STATUS_E_NOT_ALLOWED;
4947 }
4948 /*------------------------------------------------------------------------
4949 Fill in Event data and post to the Main FSM
4950 ------------------------------------------------------------------------*/
4951 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4952 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4953 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4954 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4955 wdiEventData.pUserData = pUserData;
4956
4957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4958
4959}/*WDI_GetRoamRssiReq*/
4960#endif
4961
Jeff Johnson295189b2012-06-20 16:38:30 -07004962
4963/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004964 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 it wishes to change the configuration of the WLAN
4966 Device. Upon the call of this API the WLAN DAL will pack
4967 and send a HAL Update CFG request message to the lower
4968 RIVA sub-system if DAL is in state STARTED.
4969
4970 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004972
4973 WDI_Start must have been called.
4974
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004977
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 wdiUpdateCfgsRspCb: callback for passing back the
4979 response of the update cfg operation received from the
4980 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 callback
4984
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 @see WDI_Start
4986 @return Result of the function call
4987*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004988WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004989WDI_UpdateCfgReq
4990(
4991 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4992 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4993 void* pUserData
4994)
4995{
4996 WDI_EventInfoType wdiEventData;
4997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4998
4999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 ------------------------------------------------------------------------*/
5002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5003 {
5004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5005 "WDI API call before module is initialized - Fail request");
5006
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005008 }
5009
5010 /*------------------------------------------------------------------------
5011 Fill in Event data and post to the Main FSM
5012 ------------------------------------------------------------------------*/
5013 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5015 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5016 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005017 wdiEventData.pUserData = pUserData;
5018
5019 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5020
5021}/*WDI_UpdateCfgReq*/
5022
5023
5024
5025/**
5026 @brief WDI_AddBAReq will be called when the upper MAC has setup
5027 successfully a BA session and needs to notify the HW for
5028 the appropriate settings to take place. Upon the call of
5029 this API the WLAN DAL will pack and send a HAL Add BA
5030 request message to the lower RIVA sub-system if DAL is
5031 in state STARTED.
5032
5033 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005034 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005035
5036 WDI_PostAssocReq must have been called.
5037
5038 @param wdiAddBAReqParams: the add BA parameters as specified by
5039 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005040
Jeff Johnson295189b2012-06-20 16:38:30 -07005041 wdiAddBARspCb: callback for passing back the response of
5042 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005043
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 callback
5046
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 @see WDI_PostAssocReq
5048 @return Result of the function call
5049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005051WDI_AddBAReq
5052(
5053 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5054 WDI_AddBARspCb wdiAddBARspCb,
5055 void* pUserData
5056)
5057{
5058 WDI_EventInfoType wdiEventData;
5059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5060
5061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 ------------------------------------------------------------------------*/
5064 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5065 {
5066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5067 "WDI API call before module is initialized - Fail request");
5068
Jeff Johnsone7245742012-09-05 17:12:55 -07005069 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005070 }
5071
5072 /*------------------------------------------------------------------------
5073 Fill in Event data and post to the Main FSM
5074 ------------------------------------------------------------------------*/
5075 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 wdiEventData.pEventData = pwdiAddBAReqParams;
5077 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5078 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 wdiEventData.pUserData = pUserData;
5080
5081 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5082
5083}/*WDI_AddBAReq*/
5084
5085
5086/**
5087 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5088 successfully a BA session and needs to notify the HW for
5089 the appropriate settings to take place. Upon the call of
5090 this API the WLAN DAL will pack and send a HAL Add BA
5091 request message to the lower RIVA sub-system if DAL is
5092 in state STARTED.
5093
5094 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005096
5097 WDI_PostAssocReq must have been called.
5098
5099 @param wdiAddBAReqParams: the add BA parameters as specified by
5100 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005101
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 wdiAddBARspCb: callback for passing back the response of
5103 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 callback
5107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 @see WDI_PostAssocReq
5109 @return Result of the function call
5110*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005111WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005112WDI_TriggerBAReq
5113(
5114 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5115 WDI_TriggerBARspCb wdiTriggerBARspCb,
5116 void* pUserData
5117)
5118{
5119 WDI_EventInfoType wdiEventData;
5120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5121
5122 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 ------------------------------------------------------------------------*/
5125 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5126 {
5127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5128 "WDI API call before module is initialized - Fail request");
5129
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 }
5132
5133 /*------------------------------------------------------------------------
5134 Fill in Event data and post to the Main FSM
5135 ------------------------------------------------------------------------*/
5136 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5138 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5139 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 wdiEventData.pUserData = pUserData;
5141
5142 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5143
5144}/*WDI_AddBAReq*/
5145
5146/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005148 wishes to update any of the Beacon parameters used by HW.
5149 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5150 message to the lower RIVA sub-system if DAL is in state
5151 STARTED.
5152
5153 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005154 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005155
5156 WDI_PostAssocReq must have been called.
5157
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005160
Jeff Johnson295189b2012-06-20 16:38:30 -07005161 wdiUpdateBeaconParamsRspCb: callback for passing back the
5162 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005163
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 callback
5166
Jeff Johnson295189b2012-06-20 16:38:30 -07005167 @see WDI_PostAssocReq
5168 @return Result of the function call
5169*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005170WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005171WDI_UpdateBeaconParamsReq
5172(
5173 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5174 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5175 void* pUserData
5176)
5177{
5178 WDI_EventInfoType wdiEventData;
5179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5180
5181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 ------------------------------------------------------------------------*/
5184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5185 {
5186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5187 "WDI API call before module is initialized - Fail request");
5188
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 }
5191
5192 /*------------------------------------------------------------------------
5193 Fill in Event data and post to the Main FSM
5194 ------------------------------------------------------------------------*/
5195 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5197 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5198 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 wdiEventData.pUserData = pUserData;
5200
5201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5202
5203}/*WDI_UpdateBeaconParamsReq*/
5204
5205/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005207 wishes to update the Beacon template used by HW.
5208 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5209 message to the lower RIVA sub-system if DAL is in state
5210 STARTED.
5211
5212 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005213 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005214
5215 WDI_PostAssocReq must have been called.
5216
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 wdiSendBeaconParamsRspCb: callback for passing back the
5221 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005222
Jeff Johnson295189b2012-06-20 16:38:30 -07005223 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 callback
5225
Jeff Johnson295189b2012-06-20 16:38:30 -07005226 @see WDI_PostAssocReq
5227 @return Result of the function call
5228*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005229WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005230WDI_SendBeaconParamsReq
5231(
5232 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5233 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5234 void* pUserData
5235)
5236{
5237 WDI_EventInfoType wdiEventData;
5238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5239
5240 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005241 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 ------------------------------------------------------------------------*/
5243 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5244 {
5245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5246 "WDI API call before module is initialized - Fail request");
5247
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 }
5250
5251 /*------------------------------------------------------------------------
5252 Fill in Event data and post to the Main FSM
5253 ------------------------------------------------------------------------*/
5254 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005255 wdiEventData.pEventData = pwdiSendBeaconParams;
5256 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5257 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 wdiEventData.pUserData = pUserData;
5259
5260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5261
5262}/*WDI_SendBeaconParamsReq*/
5263
5264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 upper MAC wants to update the probe response template to
5267 be transmitted as Soft AP
5268 Upon the call of this API the WLAN DAL will
5269 pack and send the probe rsp template message to the
5270 lower RIVA sub-system if DAL is in state STARTED.
5271
5272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005274
5275
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005278
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 wdiSendBeaconParamsRspCb: callback for passing back the
5280 response of the Send Beacon Params operation received
5281 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005282
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005284 callback
5285
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 @see WDI_AddBAReq
5287 @return Result of the function call
5288*/
5289
Jeff Johnsone7245742012-09-05 17:12:55 -07005290WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005291WDI_UpdateProbeRspTemplateReq
5292(
5293 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5294 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5295 void* pUserData
5296)
5297{
5298 WDI_EventInfoType wdiEventData;
5299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5300
5301 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005302 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 ------------------------------------------------------------------------*/
5304 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5305 {
5306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5307 "WDI API call before module is initialized - Fail request");
5308
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 }
5311
5312 /*------------------------------------------------------------------------
5313 Fill in Event data and post to the Main FSM
5314 ------------------------------------------------------------------------*/
5315 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5317 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5318 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 wdiEventData.pUserData = pUserData;
5320
5321 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5322
5323}/*WDI_UpdateProbeRspTemplateReq*/
5324
5325/**
5326 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5327 to the NV memory.
5328
5329
5330 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5331 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005332
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 wdiNvDownloadRspCb: callback for passing back the response of
5334 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005335
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 callback
5338
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 @see WDI_PostAssocReq
5340 @return Result of the function call
5341*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005342WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005343WDI_NvDownloadReq
5344(
5345 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5346 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5347 void* pUserData
5348)
5349{
5350 WDI_EventInfoType wdiEventData;
5351
5352 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005353 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 ------------------------------------------------------------------------*/
5355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5356 {
5357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5358 "WDI API call before module is initialized - Fail request");
5359
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 }
5362
5363 /*------------------------------------------------------------------------
5364 Fill in Event data and post to the Main FSM
5365 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5367 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5368 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5369 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 wdiEventData.pUserData = pUserData;
5371
5372 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5373
5374}/*WDI_NVDownloadReq*/
5375
Jeff Johnson295189b2012-06-20 16:38:30 -07005376/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 upper MAC wants to send Notice of Absence
5379 Upon the call of this API the WLAN DAL will
5380 pack and send the probe rsp template message to the
5381 lower RIVA sub-system if DAL is in state STARTED.
5382
5383 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005384 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005385
5386
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005388 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005389
Jeff Johnson295189b2012-06-20 16:38:30 -07005390 wdiSendBeaconParamsRspCb: callback for passing back the
5391 response of the Send Beacon Params operation received
5392 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005393
Jeff Johnson295189b2012-06-20 16:38:30 -07005394 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 callback
5396
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 @see WDI_AddBAReq
5398 @return Result of the function call
5399*/
5400WDI_Status
5401WDI_SetP2PGONOAReq
5402(
5403 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5404 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5405 void* pUserData
5406)
5407{
5408 WDI_EventInfoType wdiEventData;
5409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5410
5411 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005412 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005413 ------------------------------------------------------------------------*/
5414 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5415 {
5416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5417 "WDI API call before module is initialized - Fail request");
5418
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 }
5421
5422 /*------------------------------------------------------------------------
5423 Fill in Event data and post to the Main FSM
5424 ------------------------------------------------------------------------*/
5425 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5427 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5428 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 wdiEventData.pUserData = pUserData;
5430
5431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5432
5433}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005434
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305435#ifdef FEATURE_WLAN_TDLS
5436/**
5437 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5438 upper MAC wants to send TDLS Link Establish Request Parameters
5439 Upon the call of this API the WLAN DAL will
5440 pack and send the TDLS Link Establish Request message to the
5441 lower RIVA sub-system if DAL is in state STARTED.
5442
5443 In state BUSY this request will be queued. Request won't
5444 be allowed in any other state.
5445
5446
5447 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5448 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5449
5450 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5451 response of the TDLS Link Establish request received
5452 from the device
5453
5454 pUserData: user data will be passed back with the
5455 callback
5456
5457 @see
5458 @return Result of the function call
5459*/
5460WDI_Status
5461WDI_SetTDLSLinkEstablishReq
5462(
5463 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5464 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5465 void* pUserData
5466)
5467{
5468 WDI_EventInfoType wdiEventData;
5469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5470
5471 /*------------------------------------------------------------------------
5472 Sanity Check
5473 ------------------------------------------------------------------------*/
5474 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5475 {
5476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5477 "WDI API call before module is initialized - Fail request");
5478
5479 return WDI_STATUS_E_NOT_ALLOWED;
5480 }
5481
5482 /*------------------------------------------------------------------------
5483 Fill in Event data and post to the Main FSM
5484 ------------------------------------------------------------------------*/
5485 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5486 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5487 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5488 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5489 wdiEventData.pUserData = pUserData;
5490
5491 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5492
5493}/*WDI_SetTDLSLinkEstablishReq*/
5494#endif
5495
Jeff Johnson295189b2012-06-20 16:38:30 -07005496/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 UMAC wanted to add STA self while opening any new session
5499 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005501
5502
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005505
Jeff Johnson295189b2012-06-20 16:38:30 -07005506 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005507 callback
5508
5509 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 @return Result of the function call
5511*/
5512WDI_Status
5513WDI_AddSTASelfReq
5514(
5515 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5516 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5517 void* pUserData
5518)
5519{
5520 WDI_EventInfoType wdiEventData;
5521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5522
5523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 ------------------------------------------------------------------------*/
5526 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5527 {
5528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5529 "WDI API call before module is initialized - Fail request");
5530
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 }
5533
5534 /*------------------------------------------------------------------------
5535 Fill in Event data and post to the Main FSM
5536 ------------------------------------------------------------------------*/
5537 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5539 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5540 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 wdiEventData.pUserData = pUserData;
5542
5543 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5544
5545}/*WDI_AddSTASelfReq*/
5546
5547
Jeff Johnsone7245742012-09-05 17:12:55 -07005548#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005549/**
5550 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5551 the device of a successful add TSpec negotiation. HW
5552 needs to receive the TSpec Info from the UMAC in order
5553 to configure properly the QoS data traffic. Upon the
5554 call of this API the WLAN DAL will pack and send a HAL
5555 Add TS request message to the lower RIVA sub-system if
5556 DAL is in state STARTED.
5557
5558 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005559 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005560
5561 WDI_PostAssocReq must have been called.
5562
5563 @param wdiAddTsReqParams: the add TS parameters as specified by
5564 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 wdiAddTsRspCb: callback for passing back the response of
5567 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005568
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 callback
5571
Jeff Johnson295189b2012-06-20 16:38:30 -07005572 @see WDI_PostAssocReq
5573 @return Result of the function call
5574*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005575WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005576WDI_AggrAddTSReq
5577(
5578 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5579 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5580 void* pUserData
5581)
5582{
5583 WDI_EventInfoType wdiEventData;
5584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5585
5586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 ------------------------------------------------------------------------*/
5589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5590 {
5591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5592 "WDI API call before module is initialized - Fail request");
5593
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 }
5596
5597 /*------------------------------------------------------------------------
5598 Fill in Event data and post to the Main FSM
5599 ------------------------------------------------------------------------*/
5600 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5602 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5603 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 wdiEventData.pUserData = pUserData;
5605
5606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5607
5608}/*WDI_AggrAddTSReq*/
5609
5610#endif /* WLAN_FEATURE_VOWIFI_11R */
5611
Jeff Johnson295189b2012-06-20 16:38:30 -07005612/**
5613 @brief WDI_FTMCommandReq
5614 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005615
5616 @param ftmCommandReq: FTM Command Body
5617 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005618 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005619
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 @see
5621 @return Result of the function call
5622*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005623WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005624WDI_FTMCommandReq
5625(
5626 WDI_FTMCommandReqType *ftmCommandReq,
5627 WDI_FTMCommandRspCb ftmCommandRspCb,
5628 void *pUserData
5629)
5630{
5631 WDI_EventInfoType wdiEventData;
5632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5633
5634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 ------------------------------------------------------------------------*/
5637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5638 {
5639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5640 "WDI API call before module is initialized - Fail request");
5641
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005643 }
5644
5645 /*------------------------------------------------------------------------
5646 Fill in Event data and post to the Main FSM
5647 ------------------------------------------------------------------------*/
5648 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5649 wdiEventData.pEventData = (void *)ftmCommandReq;
5650 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5651 wdiEventData.pCBfnc = ftmCommandRspCb;
5652 wdiEventData.pUserData = pUserData;
5653
5654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5655}
Jeff Johnson295189b2012-06-20 16:38:30 -07005656/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005658
5659 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005660 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005661
5662
5663 @param pwdiResumeReqParams: as specified by
5664 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005665
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 wdiResumeReqRspCb: callback for passing back the response of
5667 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005668
Jeff Johnson295189b2012-06-20 16:38:30 -07005669 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 callback
5671
5672 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 @return Result of the function call
5674*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005675WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005676WDI_HostResumeReq
5677(
5678 WDI_ResumeParamsType* pwdiResumeReqParams,
5679 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5680 void* pUserData
5681)
5682{
5683 WDI_EventInfoType wdiEventData;
5684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5685
5686 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005687 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 ------------------------------------------------------------------------*/
5689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5690 {
5691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5692 "WDI API call before module is initialized - Fail request");
5693
Jeff Johnsone7245742012-09-05 17:12:55 -07005694 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005695 }
5696
5697 /*------------------------------------------------------------------------
5698 Fill in Event data and post to the Main FSM
5699 ------------------------------------------------------------------------*/
5700 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005701 wdiEventData.pEventData = pwdiResumeReqParams;
5702 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5703 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005704 wdiEventData.pUserData = pUserData;
5705
5706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5707
5708}/*WDI_HostResumeReq*/
5709
5710/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005712
5713 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005714 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005715
5716
5717 @param pwdiDelStaSelfReqParams: as specified by
5718 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005719
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 wdiDelStaSelfRspCb: callback for passing back the response of
5721 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005722
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 callback
5725
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 @see WDI_PostAssocReq
5727 @return Result of the function call
5728*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005730WDI_DelSTASelfReq
5731(
5732 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5733 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5734 void* pUserData
5735)
5736{
5737 WDI_EventInfoType wdiEventData;
5738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5739
5740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 ------------------------------------------------------------------------*/
5743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5744 {
5745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5746 "WDI API call before module is initialized - Fail request");
5747
Jeff Johnsone7245742012-09-05 17:12:55 -07005748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 }
5750
5751 /*------------------------------------------------------------------------
5752 Fill in Event data and post to the Main FSM
5753 ------------------------------------------------------------------------*/
5754 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5756 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5757 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 wdiEventData.pUserData = pUserData;
5759
5760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5761
5762}/*WDI_AggrAddTSReq*/
5763
5764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5766 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005767 Upon the call of this API the WLAN DAL will pack
5768 and send a HAL Set Tx Per Tracking request message to the
5769 lower RIVA sub-system if DAL is in state STARTED.
5770
5771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005773
Jeff Johnsone7245742012-09-05 17:12:55 -07005774 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005775 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005776
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 pwdiSetTxPerTrackingRspCb: callback for passing back the
5778 response of the set Tx PER Tracking configurations operation received
5779 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005780
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005782 callback
5783
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 @return Result of the function call
5785*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005786WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005787WDI_SetTxPerTrackingReq
5788(
5789 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5790 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5791 void* pUserData
5792)
5793{
5794 WDI_EventInfoType wdiEventData;
5795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5796
5797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 ------------------------------------------------------------------------*/
5800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5801 {
5802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5803 "WDI API call before module is initialized - Fail request");
5804
Jeff Johnsone7245742012-09-05 17:12:55 -07005805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 }
5807
5808 /*------------------------------------------------------------------------
5809 Fill in Event data and post to the Main FSM
5810 ------------------------------------------------------------------------*/
5811 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005812 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005813 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 wdiEventData.pUserData = pUserData;
5816
5817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5818
5819}/*WDI_SetTxPerTrackingReq*/
5820
5821/**
5822 @brief WDI_SetTmLevelReq
5823 If HW Thermal condition changed, driver should react based on new
5824 HW thermal condition.
5825
5826 @param pwdiSetTmLevelReq: New thermal condition information
5827
5828 pwdiSetTmLevelRspCb: callback
5829
5830 usrData: user data will be passed back with the
5831 callback
5832
5833 @return Result of the function call
5834*/
5835WDI_Status
5836WDI_SetTmLevelReq
5837(
5838 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5839 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5840 void *usrData
5841)
5842{
5843 WDI_EventInfoType wdiEventData;
5844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5845
5846 /*------------------------------------------------------------------------
5847 Sanity Check
5848 ------------------------------------------------------------------------*/
5849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5850 {
5851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5852 "WDI API call before module is initialized - Fail request");
5853
5854 return WDI_STATUS_E_NOT_ALLOWED;
5855 }
5856
5857 /*------------------------------------------------------------------------
5858 Fill in Event data and post to the Main FSM
5859 ------------------------------------------------------------------------*/
5860 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5861 wdiEventData.pEventData = pwdiSetTmLevelReq;
5862 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5863 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5864 wdiEventData.pUserData = usrData;
5865
5866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5867}
5868
5869/**
5870 @brief WDI_HostSuspendInd
5871
5872 Suspend Indication from the upper layer will be sent
5873 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005874
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005876
5877 @see
5878
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 @return Status of the request
5880*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005881WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005882WDI_HostSuspendInd
5883(
5884 WDI_SuspendParamsType* pwdiSuspendIndParams
5885)
5886{
5887
5888 WDI_EventInfoType wdiEventData;
5889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5890
5891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005892 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005893 ------------------------------------------------------------------------*/
5894 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5895 {
5896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5897 "WDI API call before module is initialized - Fail request");
5898
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 }
5901
5902 /*------------------------------------------------------------------------
5903 Fill in Event data and post to the Main FSM
5904 ------------------------------------------------------------------------*/
5905 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 wdiEventData.pEventData = pwdiSuspendIndParams;
5907 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5908 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 wdiEventData.pUserData = NULL;
5910
5911 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5912
5913}/*WDI_HostSuspendInd*/
5914
5915/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005916 @brief WDI_TrafficStatsInd
5917 Traffic Stats from the upper layer will be sent
5918 down to HAL
5919
5920 @param WDI_TrafficStatsIndType
5921
5922 @see
5923
5924 @return Status of the request
5925*/
5926WDI_Status
5927WDI_TrafficStatsInd
5928(
5929 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5930)
5931{
5932
5933 WDI_EventInfoType wdiEventData;
5934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5935
5936 /*------------------------------------------------------------------------
5937 Sanity Check
5938 ------------------------------------------------------------------------*/
5939 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5940 {
5941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5942 "WDI API call before module is initialized - Fail request");
5943
5944 return WDI_STATUS_E_NOT_ALLOWED;
5945 }
5946
5947 /*------------------------------------------------------------------------
5948 Fill in Event data and post to the Main FSM
5949 ------------------------------------------------------------------------*/
5950 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5951 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5952 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5953 wdiEventData.pCBfnc = NULL;
5954 wdiEventData.pUserData = NULL;
5955
5956 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5957
5958}/*WDI_TrafficStatsInd*/
5959
Chet Lanctota96bb432013-03-18 10:26:30 -07005960#ifdef WLAN_FEATURE_11W
5961/**
5962 @brief WDI_ExcludeUnencryptedInd
5963 Register with HAL to receive/drop unencrypted frames
5964
5965 @param WDI_ExcludeUnencryptIndType
5966
5967 @see
5968
5969 @return Status of the request
5970*/
5971WDI_Status
5972WDI_ExcludeUnencryptedInd
5973(
5974 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5975)
5976{
5977
5978 WDI_EventInfoType wdiEventData;
5979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5980
5981 /*------------------------------------------------------------------------
5982 Sanity Check
5983 ------------------------------------------------------------------------*/
5984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5985 {
5986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5987 "WDI API call before module is initialized - Fail request");
5988
5989 return WDI_STATUS_E_NOT_ALLOWED;
5990 }
5991
5992 /*------------------------------------------------------------------------
5993 Fill in Event data and post to the Main FSM
5994 ------------------------------------------------------------------------*/
5995 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5996 wdiEventData.pEventData = pWdiExcUnencParams;
5997 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5998 wdiEventData.pCBfnc = NULL;
5999 wdiEventData.pUserData = NULL;
6000
6001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6002
6003}/*WDI_TrafficStatsInd*/
6004#endif
6005
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006006/**
Yue Ma365933a2013-08-14 15:59:08 -07006007 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6008
6009 @param addPeriodicTxPtrnParams: Add Pattern parameters
6010
6011 @see
6012
6013 @return Status of the request
6014*/
6015WDI_Status
6016WDI_AddPeriodicTxPtrnInd
6017(
6018 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6019)
6020{
6021 WDI_EventInfoType wdiEventData;
6022
6023 /*-------------------------------------------------------------------------
6024 Sanity Check
6025 ------------------------------------------------------------------------*/
6026 if (eWLAN_PAL_FALSE == gWDIInitialized)
6027 {
6028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6029 "WDI API call before module is initialized - Fail request!");
6030
6031 return WDI_STATUS_E_NOT_ALLOWED;
6032 }
6033
6034 /*-------------------------------------------------------------------------
6035 Fill in Event data and post to the Main FSM
6036 ------------------------------------------------------------------------*/
6037 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6038 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6039 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6040 wdiEventData.pCBfnc = NULL;
6041 wdiEventData.pUserData = NULL;
6042
6043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6044}
6045
6046/**
6047 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6048
6049 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6050
6051 @see
6052
6053 @return Status of the request
6054*/
6055WDI_Status
6056WDI_DelPeriodicTxPtrnInd
6057(
6058 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6059)
6060{
6061 WDI_EventInfoType wdiEventData;
6062
6063 /*-------------------------------------------------------------------------
6064 Sanity Check
6065 ------------------------------------------------------------------------*/
6066 if (eWLAN_PAL_FALSE == gWDIInitialized)
6067 {
6068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6069 "WDI API call before module is initialized - Fail request!");
6070
6071 return WDI_STATUS_E_NOT_ALLOWED;
6072 }
6073
6074 /*-------------------------------------------------------------------------
6075 Fill in Event data and post to the Main FSM
6076 ------------------------------------------------------------------------*/
6077 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6078 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6079 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6080 wdiEventData.pCBfnc = NULL;
6081 wdiEventData.pUserData = NULL;
6082
6083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6084}
6085
6086/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006087 @brief WDI_HALDumpCmdReq
6088 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006089
6090 @param halDumpCmdReqParams: Hal Dump Command Body
6091 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006093
Jeff Johnson295189b2012-06-20 16:38:30 -07006094 @see
6095 @return Result of the function call
6096*/
6097WDI_Status WDI_HALDumpCmdReq
6098(
6099 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6100 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6101 void *pUserData
6102)
6103{
6104 WDI_EventInfoType wdiEventData;
6105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6106
6107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006109 ------------------------------------------------------------------------*/
6110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6111 {
6112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6113 "WDI API call before module is initialized - Fail request");
6114
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 }
6117
6118 /*------------------------------------------------------------------------
6119 Fill in Event data and post to the Main FSM
6120 ------------------------------------------------------------------------*/
6121 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6122 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6123 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6124 wdiEventData.pCBfnc = halDumpCmdRspCb;
6125 wdiEventData.pUserData = pUserData;
6126
6127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6128}
6129
Jeff Johnsone7245742012-09-05 17:12:55 -07006130/*============================================================================
6131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006133
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 ============================================================================*/
6135
6136/**
6137 @brief Main FSM Start function for all states except BUSY
6138
Jeff Johnsone7245742012-09-05 17:12:55 -07006139
6140 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006141 wdiEV: event posted to the main DAL FSM
6142 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 structure
6144
Jeff Johnson295189b2012-06-20 16:38:30 -07006145 @see
6146 @return Result of the function call
6147*/
6148WDI_Status
6149WDI_PostMainEvent
6150(
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 WDI_ControlBlockType* pWDICtx,
6152 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006153 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006154
Jeff Johnson295189b2012-06-20 16:38:30 -07006155)
6156{
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 WDI_Status wdiStatus;
6158 WDI_MainFuncType pfnWDIMainEvHdlr;
6159 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6161
6162 /*-------------------------------------------------------------------------
6163 Sanity check
6164 -------------------------------------------------------------------------*/
6165 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6166 ( wdiEV >= WDI_MAX_EVENT ))
6167 {
6168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6169 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6170 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 }
6173
6174 /*Access to the global state must be locked */
6175 wpalMutexAcquire(&pWDICtx->wptMutex);
6176
6177 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006178 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006179
6180 wdiOldState = pWDICtx->uGlobalState;
6181
6182 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006183 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6184 response comes from CCPU for the request sent by host:
6185 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 -07006186 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 -07006187 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 CCPU:
6189 don't change the state */
6190 if ( WDI_RESPONSE_EVENT != wdiEV)
6191 {
6192 /*Transition to BUSY State - the request is now being processed by the FSM,
6193 if the request fails we shall transition back to the old state, if not
6194 the request will manage its own state transition*/
6195 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6196 }
6197 /* If the state function associated with the EV is NULL it means that this
6198 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006199 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 {
6201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006202 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006203 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 }
6206 else
6207 {
6208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006211 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006212 }
6213
6214 /* If a request handles itself well it will end up in a success or in a
6215 pending
6216 Success - means that the request was processed and the proper state
6217 transition already occurred or will occur when the resp is received
6218 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006219
Jeff Johnson295189b2012-06-20 16:38:30 -07006220 Pending - means the request could not be processed at this moment in time
6221 because the FSM was already busy so no state transition or dequeueing
6222 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006223
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 Success for synchronous case means that the transition may occur and
6225 processing of pending requests may continue - so it should go through
6226 and restores the state and continue processing queued requests*/
6227 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6228 ( WDI_STATUS_PENDING != wdiStatus ))
6229 {
6230 if ( WDI_RESPONSE_EVENT != wdiEV)
6231 {
6232 /*The request has failed or could not be processed - transition back to
6233 the old state - check to see if anything was queued and try to execute
6234 The dequeue logic should post a message to a thread and return - no
6235 actual processing can occur */
6236 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6237 }
6238 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006239
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 }
6241
6242 /* we have completed processing the event */
6243 wpalMutexRelease(&pWDICtx->wptMutex);
6244
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006246
6247}/*WDI_PostMainEvent*/
6248
6249
6250/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006252--------------------------------------------------------------------------*/
6253/**
6254 @brief Main FSM Start function for all states except BUSY
6255
Jeff Johnsone7245742012-09-05 17:12:55 -07006256
6257 @param pWDICtx: pointer to the WLAN DAL context
6258 pEventData: pointer to the event information structure
6259
Jeff Johnson295189b2012-06-20 16:38:30 -07006260 @see
6261 @return Result of the function call
6262*/
6263WDI_Status
6264WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006265(
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 WDI_ControlBlockType* pWDICtx,
6267 WDI_EventInfoType* pEventData
6268)
6269{
6270
6271 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006272 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 ----------------------------------------------------------------------*/
6274 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6275 {
6276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006277 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 pWDICtx, pEventData);
6279 return WDI_STATUS_E_FAILURE;
6280 }
6281
6282 wpalMutexAcquire(&pWDICtx->wptMutex);
6283
6284 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006285 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006286 ----------------------------------------------------------------------*/
6287 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6288 {
6289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6290 "Control Transport not yet Open - queueing the request");
6291
6292 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006294
6295 wpalMutexRelease(&pWDICtx->wptMutex);
6296 return WDI_STATUS_PENDING;
6297 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006298
Jeff Johnson295189b2012-06-20 16:38:30 -07006299 wpalMutexRelease(&pWDICtx->wptMutex);
6300
6301 /*Return Success*/
6302 return WDI_ProcessRequest( pWDICtx, pEventData );
6303
6304}/*WDI_MainStart*/
6305
6306/**
6307 @brief Main FSM Response function for state INIT
6308
Jeff Johnsone7245742012-09-05 17:12:55 -07006309
6310 @param pWDICtx: pointer to the WLAN DAL context
6311 pEventData: pointer to the event information structure
6312
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 @see
6314 @return Result of the function call
6315*/
6316WDI_Status
6317WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006318(
Jeff Johnson295189b2012-06-20 16:38:30 -07006319 WDI_ControlBlockType* pWDICtx,
6320 WDI_EventInfoType* pEventData
6321)
6322{
6323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006324 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006325 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006326 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006327
6328 /*Return Success*/
6329 return WDI_STATUS_E_NOT_ALLOWED;
6330}/* WDI_MainRspInit */
6331
6332/**
6333 @brief Main FSM Close function for all states except BUSY
6334
Jeff Johnsone7245742012-09-05 17:12:55 -07006335
6336 @param pWDICtx: pointer to the WLAN DAL context
6337 pEventData: pointer to the event information structure
6338
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 @see
6340 @return Result of the function call
6341*/
6342WDI_Status
6343WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006344(
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 WDI_ControlBlockType* pWDICtx,
6346 WDI_EventInfoType* pEventData
6347)
6348{
6349
6350 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006351 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006352 ----------------------------------------------------------------------*/
6353 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6354 {
6355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006356 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006357 pWDICtx, pEventData);
6358 return WDI_STATUS_E_FAILURE;
6359 }
6360
6361 /*Return Success*/
6362 return WDI_ProcessRequest( pWDICtx, pEventData );
6363
6364}/*WDI_MainClose*/
6365/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006366 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006367--------------------------------------------------------------------------*/
6368/**
6369 @brief Main FSM Start function for state STARTED
6370
Jeff Johnsone7245742012-09-05 17:12:55 -07006371
6372 @param pWDICtx: pointer to the WLAN DAL context
6373 pEventData: pointer to the event information structure
6374
Jeff Johnson295189b2012-06-20 16:38:30 -07006375 @see
6376 @return Result of the function call
6377*/
6378WDI_Status
6379WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006380(
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 WDI_ControlBlockType* pWDICtx,
6382 WDI_EventInfoType* pEventData
6383)
6384{
6385 WDI_StartRspCb wdiStartRspCb = NULL;
6386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6387
6388 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 ----------------------------------------------------------------------*/
6391 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6392 {
6393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 pWDICtx, pEventData);
6396 return WDI_STATUS_E_FAILURE;
6397 }
6398
6399 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 ----------------------------------------------------------------------*/
6402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006404
6405 wpalMutexAcquire(&pWDICtx->wptMutex);
6406
6407 /*Transition back to started because the post function transitioned us to
6408 busy*/
6409 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6410
6411 /*Check to see if any request is pending*/
6412 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006413
Jeff Johnson295189b2012-06-20 16:38:30 -07006414 wpalMutexRelease(&pWDICtx->wptMutex);
6415
6416 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006417 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6418
Jeff Johnson295189b2012-06-20 16:38:30 -07006419 /*Notify UMAC*/
6420 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6421
6422 /*Return Success*/
6423 return WDI_STATUS_SUCCESS;
6424
6425}/*WDI_MainStartStarted*/
6426
6427/**
6428 @brief Main FSM Stop function for state STARTED
6429
Jeff Johnsone7245742012-09-05 17:12:55 -07006430
6431 @param pWDICtx: pointer to the WLAN DAL context
6432 pEventData: pointer to the event information structure
6433
Jeff Johnson295189b2012-06-20 16:38:30 -07006434 @see
6435 @return Result of the function call
6436*/
6437WDI_Status
6438WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006439(
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 WDI_ControlBlockType* pWDICtx,
6441 WDI_EventInfoType* pEventData
6442)
6443{
6444 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 ----------------------------------------------------------------------*/
6447 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6448 {
6449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006450 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006451 pWDICtx, pEventData);
6452 return WDI_STATUS_E_FAILURE;
6453 }
6454
6455 /*State at this point is BUSY - because we enter this state before posting
6456 an event to the FSM in order to prevent potential race conditions*/
6457
6458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6459 "Processing stop request in FSM");
6460
6461 /*Return Success*/
6462 return WDI_ProcessRequest( pWDICtx, pEventData );
6463
6464}/*WDI_MainStopStarted*/
6465/**
6466 @brief Main FSM Request function for state started
6467
Jeff Johnsone7245742012-09-05 17:12:55 -07006468
6469 @param pWDICtx: pointer to the WLAN DAL context
6470 pEventData: pointer to the event information structure
6471
Jeff Johnson295189b2012-06-20 16:38:30 -07006472 @see
6473 @return Result of the function call
6474*/
6475WDI_Status
6476WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006477(
Jeff Johnson295189b2012-06-20 16:38:30 -07006478 WDI_ControlBlockType* pWDICtx,
6479 WDI_EventInfoType* pEventData
6480)
6481{
6482
6483 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 ----------------------------------------------------------------------*/
6486 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6487 {
6488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006490 pWDICtx, pEventData);
6491 return WDI_STATUS_E_FAILURE;
6492 }
6493
6494 /*State at this point is BUSY - because we enter this state before posting
6495 an event to the FSM in order to prevent potential race conditions*/
6496
6497 /*Return Success*/
6498 return WDI_ProcessRequest( pWDICtx, pEventData );
6499
6500}/*WDI_MainReqStarted*/
6501
6502/**
6503 @brief Main FSM Response function for all states except INIT
6504
Jeff Johnsone7245742012-09-05 17:12:55 -07006505
6506 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006507 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006508
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 @see
6510 @return Result of the function call
6511*/
6512WDI_Status
6513WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006514(
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 WDI_ControlBlockType* pWDICtx,
6516 WDI_EventInfoType* pEventData
6517)
6518{
Jeff Johnsone7245742012-09-05 17:12:55 -07006519 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 wpt_boolean expectedResponse;
6521
6522 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006523 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 ----------------------------------------------------------------------*/
6525 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6526 {
6527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006528 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 pWDICtx, pEventData);
6530 return WDI_STATUS_E_FAILURE;
6531 }
6532
6533 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6534 {
6535 /* we received an expected response */
6536 expectedResponse = eWLAN_PAL_TRUE;
6537
6538 /*We expect that we will transition to started after this processing*/
6539 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6540
6541 /* we are no longer expecting a response */
6542 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6543 }
6544 else
6545 {
6546 /* we received an indication or unexpected response */
6547 expectedResponse = eWLAN_PAL_FALSE;
6548 /* for indications no need to update state from what it is right
6549 now, unless it explicitly does it in the indication handler (say
6550 for device failure ind) */
6551 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6552 }
6553
6554 /*Process the response and indication */
6555 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6556
6557 /*Lock the CB as we are about to do a state transition*/
6558 wpalMutexAcquire(&pWDICtx->wptMutex);
6559
6560 /*Transition to the expected state after the response processing
6561 - this should always be started state with the following exceptions:
6562 1. processing of a failed start response
6563 2. device failure detected while processing response
6564 3. stop response received*/
6565 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006566
Jeff Johnson295189b2012-06-20 16:38:30 -07006567 /*Dequeue request that may have been queued while we were waiting for the
6568 response */
6569 if ( expectedResponse )
6570 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006571 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006572 }
6573
6574 wpalMutexRelease(&pWDICtx->wptMutex);
6575
6576 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006578
6579}/*WDI_MainRsp*/
6580
6581/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006582 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006583--------------------------------------------------------------------------*/
6584/**
6585 @brief Main FSM Stop function for state STOPPED
6586
Jeff Johnsone7245742012-09-05 17:12:55 -07006587
6588 @param pWDICtx: pointer to the WLAN DAL context
6589 pEventData: pointer to the event information structure
6590
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 @see
6592 @return Result of the function call
6593*/
6594WDI_Status
6595WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006596(
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 WDI_ControlBlockType* pWDICtx,
6598 WDI_EventInfoType* pEventData
6599)
6600{
6601 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006603 ----------------------------------------------------------------------*/
6604 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6605 {
6606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006607 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 pWDICtx, pEventData);
6609 return WDI_STATUS_E_FAILURE;
6610 }
6611
6612 /*We should normally not get a STOP request if we are already stopped
6613 since we should normally be stopped by the UMAC. However in some
6614 error situations we put ourselves in the stopped state without the
6615 UMAC knowing, so when we get a STOP request in this state we still
6616 process it since we need to clean up the underlying state */
6617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6618 "Processing stop request while stopped in FSM");
6619
6620 /*Return Success*/
6621 return WDI_ProcessRequest( pWDICtx, pEventData );
6622
6623}/*WDI_MainStopStopped*/
6624
6625/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006626 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006627--------------------------------------------------------------------------*/
6628/**
6629 @brief Main FSM Start function for state BUSY
6630
Jeff Johnsone7245742012-09-05 17:12:55 -07006631
6632 @param pWDICtx: pointer to the WLAN DAL context
6633 pEventData: pointer to the event information structure
6634
Jeff Johnson295189b2012-06-20 16:38:30 -07006635 @see
6636 @return Result of the function call
6637*/
6638WDI_Status
6639WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006640(
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 WDI_ControlBlockType* pWDICtx,
6642 WDI_EventInfoType* pEventData
6643)
6644{
6645 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006646 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 ----------------------------------------------------------------------*/
6648 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6649 {
6650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006651 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006652 pWDICtx, pEventData);
6653 return WDI_STATUS_E_FAILURE;
6654 }
6655
6656 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 ----------------------------------------------------------------------*/
6659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6660 "WDI Busy state - queue start request");
6661
6662 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006663 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006664
6665 /*Return Success*/
6666 return WDI_STATUS_PENDING;
6667}/*WDI_MainStartBusy*/
6668
6669/**
6670 @brief Main FSM Stop function for state BUSY
6671
Jeff Johnsone7245742012-09-05 17:12:55 -07006672
6673 @param pWDICtx: pointer to the WLAN DAL context
6674 pEventData: pointer to the event information structure
6675
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 @see
6677 @return Result of the function call
6678*/
6679WDI_Status
6680WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006681(
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 WDI_ControlBlockType* pWDICtx,
6683 WDI_EventInfoType* pEventData
6684)
6685{
6686 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 ----------------------------------------------------------------------*/
6689 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6690 {
6691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 pWDICtx, pEventData);
6694 return WDI_STATUS_E_FAILURE;
6695 }
6696
6697 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006698 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006699 ----------------------------------------------------------------------*/
6700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6701 "WDI Busy state - queue stop request");
6702
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006705
Jeff Johnson295189b2012-06-20 16:38:30 -07006706}/*WDI_MainStopBusy*/
6707
6708/**
6709 @brief Main FSM Request function for state BUSY
6710
Jeff Johnsone7245742012-09-05 17:12:55 -07006711
6712 @param pWDICtx: pointer to the WLAN DAL context
6713 pEventData: pointer to the event information structure
6714
Jeff Johnson295189b2012-06-20 16:38:30 -07006715 @see
6716 @return Result of the function call
6717*/
6718WDI_Status
6719WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006720(
Jeff Johnson295189b2012-06-20 16:38:30 -07006721 WDI_ControlBlockType* pWDICtx,
6722 WDI_EventInfoType* pEventData
6723)
6724{
6725 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006727 ----------------------------------------------------------------------*/
6728 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6729 {
6730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 pWDICtx, pEventData);
6733 return WDI_STATUS_E_FAILURE;
6734 }
6735
6736 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 ----------------------------------------------------------------------*/
6739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6740 "WDI Busy state - queue request %d because waiting for response %d",
6741 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6742
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006745
Jeff Johnson295189b2012-06-20 16:38:30 -07006746}/*WDI_MainReqBusy*/
6747/**
6748 @brief Main FSM Close function for state BUSY
6749
Jeff Johnsone7245742012-09-05 17:12:55 -07006750
6751 @param pWDICtx: pointer to the WLAN DAL context
6752 pEventData: pointer to the event information structure
6753
Jeff Johnson295189b2012-06-20 16:38:30 -07006754 @see
6755 @return Result of the function call
6756*/
6757WDI_Status
6758WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006759(
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 WDI_ControlBlockType* pWDICtx,
6761 WDI_EventInfoType* pEventData
6762)
6763{
6764 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006765 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 ----------------------------------------------------------------------*/
6767 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6768 {
6769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 pWDICtx, pEventData);
6772 return WDI_STATUS_E_FAILURE;
6773 }
6774
6775 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 ----------------------------------------------------------------------*/
6778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6779 "WDI Busy state - queue close request");
6780
Jeff Johnsone7245742012-09-05 17:12:55 -07006781 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006783
Jeff Johnson295189b2012-06-20 16:38:30 -07006784}/*WDI_MainCloseBusy*/
6785
6786/**
6787 @brief Main FSM Shutdown function for INIT & STARTED states
6788
6789
6790 @param pWDICtx: pointer to the WLAN DAL context
6791 pEventData: pointer to the event information structure
6792
6793 @see
6794 @return Result of the function call
6795*/
6796WDI_Status
6797WDI_MainShutdown
6798(
6799 WDI_ControlBlockType* pWDICtx,
6800 WDI_EventInfoType* pEventData
6801)
6802{
6803 /*--------------------------------------------------------------------
6804 Sanity Check
6805 ----------------------------------------------------------------------*/
6806 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6807 {
6808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6809 "Invalid parameters on Main Start %x %x",
6810 pWDICtx, pEventData);
6811 return WDI_STATUS_E_FAILURE;
6812 }
6813
6814 /*State at this point is BUSY - because we enter this state before posting
6815 an event to the FSM in order to prevent potential race conditions*/
6816
6817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6818 "Processing shutdown request in FSM");
6819
6820 /*Return Success*/
6821 return WDI_ProcessRequest( pWDICtx, pEventData );
6822
6823}/*WDI_MainShutdown*/
6824
6825/**
6826 @brief Main FSM Shutdown function for BUSY state
6827
6828
6829 @param pWDICtx: pointer to the WLAN DAL context
6830 pEventData: pointer to the event information structure
6831
6832 @see
6833 @return Result of the function call
6834*/
6835WDI_Status
6836WDI_MainShutdownBusy
6837(
6838 WDI_ControlBlockType* pWDICtx,
6839 WDI_EventInfoType* pEventData
6840)
6841{
6842 /*--------------------------------------------------------------------
6843 Sanity Check
6844 ----------------------------------------------------------------------*/
6845 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6846 {
6847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6848 "Invalid parameters on Main Start %x %x",
6849 pWDICtx, pEventData);
6850 return WDI_STATUS_E_FAILURE;
6851 }
6852
6853 /* If you are waiting for a HAL response at this stage, you are not
6854 * going to get it. Riva is already shutdown/crashed.
6855 */
6856 wpalTimerStop(&gWDICb.wptResponseTimer);
6857
6858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6859 "Processing shutdown request in FSM: Busy state ");
6860
6861 return WDI_ProcessRequest( pWDICtx, pEventData );
6862
6863}/*WDI_MainShutdownBusy*/
6864
6865
Jeff Johnsone7245742012-09-05 17:12:55 -07006866/*=======================================================================
6867
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870*=======================================================================*/
6871
6872/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006874========================================================================*/
6875/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006878
6879 @param pWDICtx: pointer to the WLAN DAL context
6880 pEventData: pointer to the event information structure
6881
Jeff Johnson295189b2012-06-20 16:38:30 -07006882 @see
6883 @return Result of the function call
6884*/
6885WDI_Status
6886WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006887(
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 WDI_ControlBlockType* pWDICtx,
6889 WDI_EventInfoType* pEventData
6890)
6891{
6892 WDI_StartReqParamsType* pwdiStartParams = NULL;
6893 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 wpt_uint16 usDataOffset = 0;
6896 wpt_uint16 usSendSize = 0;
6897
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 tHalMacStartReqMsg halStartReq;
6899 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6901
6902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 -------------------------------------------------------------------------*/
6905 if (( NULL == pEventData ) ||
6906 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6907 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6908 {
6909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 }
6914
6915 /*-----------------------------------------------------------------------
6916 Get message buffer
6917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006918 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006919 pwdiStartParams->usConfigBufferLen;
6920
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 usLen,
6923 &pSendBuffer, &usDataOffset, &usSendSize))||
6924 ( usSendSize < (usDataOffset + usLen )))
6925 {
6926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6927 "Unable to get send buffer in start req %x %x %x",
6928 pEventData, pwdiStartParams, wdiStartRspCb);
6929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 }
6932
6933 /*-----------------------------------------------------------------------
6934 Fill in the message
6935 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 halStartReq.startReqParams.driverType =
6937 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 halStartReq.startReqParams.uConfigBufferLen =
6940 pwdiStartParams->usConfigBufferLen;
6941 wpalMemoryCopy( pSendBuffer+usDataOffset,
6942 &halStartReq.startReqParams,
6943 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006944
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 usDataOffset += sizeof(halStartReq.startReqParams);
6946 wpalMemoryCopy( pSendBuffer+usDataOffset,
6947 pwdiStartParams->pConfigBuffer,
6948 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006949
6950 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006951 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006952
6953 /*Save Low Level Ind CB and associated user data - it will be used further
6954 on when an indication is coming from the lower MAC*/
6955 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006957
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6964
Jeff Johnsone7245742012-09-05 17:12:55 -07006965
Jeff Johnson295189b2012-06-20 16:38:30 -07006966}/*WDI_ProcessStartReq*/
6967
6968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006971
6972 @param pWDICtx: pointer to the WLAN DAL context
6973 pEventData: pointer to the event information structure
6974
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 @see
6976 @return Result of the function call
6977*/
6978WDI_Status
6979WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006980(
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 WDI_ControlBlockType* pWDICtx,
6982 WDI_EventInfoType* pEventData
6983)
6984{
6985 WDI_StopReqParamsType* pwdiStopParams = NULL;
6986 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 wpt_uint16 usDataOffset = 0;
6989 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006990 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6993
6994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 -------------------------------------------------------------------------*/
6997 if (( NULL == pEventData ) ||
6998 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6999 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7000 {
7001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007004 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 }
7006
7007 /*-----------------------------------------------------------------------
7008 Get message buffer
7009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 sizeof(halStopReq.stopReqParams),
7012 &pSendBuffer, &usDataOffset, &usSendSize))||
7013 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7014 {
7015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7016 "Unable to get send buffer in stop req %x %x %x",
7017 pEventData, pwdiStopParams, wdiStopRspCb);
7018 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007019 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 }
7021
7022 /*-----------------------------------------------------------------------
7023 Fill in the message
7024 -----------------------------------------------------------------------*/
7025 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7026 pwdiStopParams->wdiStopReason);
7027
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 wpalMemoryCopy( pSendBuffer+usDataOffset,
7029 &halStopReq.stopReqParams,
7030 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007031
7032 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007034
7035 /*! TO DO: stop the data services */
7036 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7037 {
7038 /*Stop the STA Table !UT- check this logic again
7039 It is safer to do it here than on the response - because a stop is imminent*/
7040 WDI_STATableStop(pWDICtx);
7041
7042 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007043 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7044 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 {
7046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7047 "WDI Init failed to reset power state event");
7048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007050 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007051 }
7052 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007053 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7054 if( eWLAN_PAL_STATUS_SUCCESS != status )
7055 {
7056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7057 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7058 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007059 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007060 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007062 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007064 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7065 WDI_SET_POWER_STATE_TIMEOUT);
7066 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 {
7068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7069 "WDI Init failed to wait on an event");
7070
Jeff Johnsone7245742012-09-05 17:12:55 -07007071 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007072 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 }
7074 }
7075
7076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007077 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7081
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007082fail:
7083 // Release the message buffer so we don't leak
7084 wpalMemoryFree(pSendBuffer);
7085
7086failRequest:
7087 //WDA should have failure check to avoid the memory leak
7088 return WDI_STATUS_E_FAILURE;
7089
Jeff Johnson295189b2012-06-20 16:38:30 -07007090}/*WDI_ProcessStopReq*/
7091
7092/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007095
7096 @param pWDICtx: pointer to the WLAN DAL context
7097 pEventData: pointer to the event information structure
7098
Jeff Johnson295189b2012-06-20 16:38:30 -07007099 @see
7100 @return Result of the function call
7101*/
7102WDI_Status
7103WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007104(
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 WDI_ControlBlockType* pWDICtx,
7106 WDI_EventInfoType* pEventData
7107)
7108{
Jeff Johnsone7245742012-09-05 17:12:55 -07007109 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7111
7112 /*Lock control block for cleanup*/
7113 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007114
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 /*Clear all pending request*/
7116 WDI_ClearPendingRequests(pWDICtx);
7117
7118 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007120
7121 /* Close Data transport*/
7122 /* FTM mode does not open Data Path */
7123 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7124 {
7125 WDTS_Close(pWDICtx);
7126 }
7127
7128 /*Close the STA Table !UT- check this logic again*/
7129 WDI_STATableClose(pWDICtx);
7130
7131 /*close the PAL */
7132 wptStatus = wpalClose(pWDICtx->pPALContext);
7133 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7134 {
7135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7136 "Failed to wpal Close %d", wptStatus);
7137 WDI_ASSERT(0);
7138 }
7139
7140 /*Transition back to init state*/
7141 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7142
7143 wpalMutexRelease(&pWDICtx->wptMutex);
7144
7145 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007149}/*WDI_ProcessCloseReq*/
7150
7151
7152/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007153 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007154===========================================================================*/
7155
7156/**
7157 @brief Process Init Scan Request function (called when Main FSM
7158 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007159
7160 @param pWDICtx: pointer to the WLAN DAL context
7161 pEventData: pointer to the event information structure
7162
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 @see
7164 @return Result of the function call
7165*/
7166WDI_Status
7167WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007168(
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 WDI_ControlBlockType* pWDICtx,
7170 WDI_EventInfoType* pEventData
7171)
7172{
7173 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7174 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 wpt_uint16 usDataOffset = 0;
7177 wpt_uint16 usSendSize = 0;
7178 wpt_uint8 i = 0;
7179
7180 tHalInitScanReqMsg halInitScanReqMsg;
7181
Jeff Johnsone7245742012-09-05 17:12:55 -07007182 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 * It shold be removed once host and riva changes are in sync*/
7184 tHalInitScanConReqMsg halInitScanConReqMsg;
7185
7186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7187
7188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007190 -------------------------------------------------------------------------*/
7191 if (( NULL == pEventData ) ||
7192 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7193 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7194 {
7195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 }
7200
7201#if 0
7202 wpalMutexAcquire(&pWDICtx->wptMutex);
7203 /*-----------------------------------------------------------------------
7204 Check to see if SCAN is already in progress - if so reject the req
7205 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 -----------------------------------------------------------------------*/
7208 if ( pWDICtx->bScanInProgress )
7209 {
7210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7211 "Scan is already in progress - subsequent scan is not allowed"
7212 " until the first scan completes");
7213
7214 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 }
7217
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7219 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007220
7221 wpalMutexRelease(&pWDICtx->wptMutex);
7222#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007223 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 * It shold be removed once host and riva changes are in sync*/
7227 /*-----------------------------------------------------------------------
7228 Get message buffer
7229 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 sizeof(halInitScanConReqMsg.initScanParams),
7232 &pSendBuffer, &usDataOffset, &usSendSize))||
7233 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7234 {
7235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7236 "Unable to get send buffer in init scan req %x %x %x",
7237 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 }
7241
7242
7243 /*-----------------------------------------------------------------------
7244 Fill in the message
7245 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7248
7249 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7250 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7251
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007256 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007257 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7258
7259 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7260 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7261
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7263 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007264
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7267
7268 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7269 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7272 }
7273
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 wpalMemoryCopy( pSendBuffer+usDataOffset,
7275 &halInitScanConReqMsg.initScanParams,
7276 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 }
7278 else
7279 {
7280 /*-----------------------------------------------------------------------
7281 Get message buffer
7282 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 sizeof(halInitScanReqMsg.initScanParams),
7285 &pSendBuffer, &usDataOffset, &usSendSize))||
7286 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7287 {
7288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7289 "Unable to get send buffer in init scan req %x %x %x",
7290 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007293 }
7294
7295
7296 /*-----------------------------------------------------------------------
7297 Fill in the message
7298 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7301
7302 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7303 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7304
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007309 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007310 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7311
7312 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7313 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7314
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7317
7318 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7319 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7322 }
7323
Jeff Johnsone7245742012-09-05 17:12:55 -07007324 wpalMemoryCopy( pSendBuffer+usDataOffset,
7325 &halInitScanReqMsg.initScanParams,
7326 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 }
7328
7329 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007330 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007331
7332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7337
7338}/*WDI_ProcessInitScanReq*/
7339
7340/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007343
7344 @param pWDICtx: pointer to the WLAN DAL context
7345 pEventData: pointer to the event information structure
7346
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 @see
7348 @return Result of the function call
7349*/
7350WDI_Status
7351WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007352(
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 WDI_ControlBlockType* pWDICtx,
7354 WDI_EventInfoType* pEventData
7355)
7356{
7357 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7358 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007360 wpt_uint16 usDataOffset = 0;
7361 wpt_uint16 usSendSize = 0;
7362
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7365
7366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 -------------------------------------------------------------------------*/
7369 if (( NULL == pEventData ) ||
7370 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7371 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7372 {
7373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 }
7378
7379#if 0
7380 wpalMutexAcquire(&pWDICtx->wptMutex);
7381 /*-----------------------------------------------------------------------
7382 Check to see if SCAN is already in progress - start scan is only
7383 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7388 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7389 {
7390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7391 "Scan start not allowed in this state %d %d",
7392 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007393
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 }
7397
Jeff Johnsone7245742012-09-05 17:12:55 -07007398 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007399
7400 wpalMutexRelease(&pWDICtx->wptMutex);
7401#endif
7402
7403 /*-----------------------------------------------------------------------
7404 Get message buffer
7405 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 sizeof(halStartScanReqMsg.startScanParams),
7408 &pSendBuffer, &usDataOffset, &usSendSize))||
7409 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7410 {
7411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7412 "Unable to get send buffer in start scan req %x %x %x",
7413 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 }
7417
Jeff Johnsone7245742012-09-05 17:12:55 -07007418 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 wpalMemoryCopy( pSendBuffer+usDataOffset,
7421 &halStartScanReqMsg.startScanParams,
7422 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007423
7424 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007426
7427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7432}/*WDI_ProcessStartScanReq*/
7433
7434
7435/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007438
7439 @param pWDICtx: pointer to the WLAN DAL context
7440 pEventData: pointer to the event information structure
7441
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 @see
7443 @return Result of the function call
7444*/
7445WDI_Status
7446WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007447(
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 WDI_ControlBlockType* pWDICtx,
7449 WDI_EventInfoType* pEventData
7450)
7451{
7452 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7453 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 wpt_uint16 usDataOffset = 0;
7456 wpt_uint16 usSendSize = 0;
7457
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7460
7461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 -------------------------------------------------------------------------*/
7464 if (( NULL == pEventData ) ||
7465 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7466 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7467 {
7468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 }
7473
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7475 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 * forwarded to HAL and result in hang*/
7477#if 0
7478 wpalMutexAcquire(&pWDICtx->wptMutex);
7479 /*-----------------------------------------------------------------------
7480 Check to see if SCAN is already in progress - end scan is only
7481 allowed when a scan is ongoing and the state of the scan procedure
7482 is started
7483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7486 {
7487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7488 "End start not allowed in this state %d %d",
7489 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007490
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 }
7494
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007496
7497 wpalMutexRelease(&pWDICtx->wptMutex);
7498#endif
7499
7500 /*-----------------------------------------------------------------------
7501 Get message buffer
7502 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 sizeof(halEndScanReqMsg.endScanParams),
7505 &pSendBuffer, &usDataOffset, &usSendSize))||
7506 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7507 {
7508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7509 "Unable to get send buffer in start scan req %x %x %x",
7510 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 }
7514
7515 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7516
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 wpalMemoryCopy( pSendBuffer+usDataOffset,
7518 &halEndScanReqMsg.endScanParams,
7519 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007520
7521 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007523
7524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007527 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7529}/*WDI_ProcessEndScanReq*/
7530
7531
7532/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007535
7536 @param pWDICtx: pointer to the WLAN DAL context
7537 pEventData: pointer to the event information structure
7538
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 @see
7540 @return Result of the function call
7541*/
7542WDI_Status
7543WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007544(
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 WDI_ControlBlockType* pWDICtx,
7546 WDI_EventInfoType* pEventData
7547)
7548{
7549 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7550 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 wpt_uint16 usDataOffset = 0;
7553 wpt_uint16 usSendSize = 0;
7554 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007555 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7558
7559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 -------------------------------------------------------------------------*/
7562 if (( NULL == pEventData ) ||
7563 ( NULL == pEventData->pEventData) ||
7564 ( NULL == pEventData->pCBfnc))
7565 {
7566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 }
7571
7572 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7573 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7575 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 * forwarded to HAL and result in hang*/
7577#if 0
7578 wpalMutexAcquire(&pWDICtx->wptMutex);
7579 /*-----------------------------------------------------------------------
7580 Check to see if SCAN is already in progress
7581 Finish scan gets invoked any scan states. ie. abort scan
7582 It should be allowed in any states.
7583 -----------------------------------------------------------------------*/
7584 if ( !pWDICtx->bScanInProgress )
7585 {
7586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7587 "Finish start not allowed in this state %d",
7588 pWDICtx->bScanInProgress );
7589
7590 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007591 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 }
7593
7594 /*-----------------------------------------------------------------------
7595 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007598 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7599 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 wpalMutexRelease(&pWDICtx->wptMutex);
7601#endif
7602
7603 if ( pWDICtx->bInBmps )
7604 {
7605 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007606 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7607 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7608 {
7609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7610 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7611 WDI_ASSERT(0);
7612 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 }
7614
7615 /*-----------------------------------------------------------------------
7616 Get message buffer
7617 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 sizeof(halFinishScanReqMsg.finishScanParams),
7620 &pSendBuffer, &usDataOffset, &usSendSize))||
7621 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7622 {
7623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7624 "Unable to get send buffer in start scan req %x %x %x",
7625 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 }
7629
Jeff Johnsone7245742012-09-05 17:12:55 -07007630 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007631 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7632
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7635
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007637 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7638
7639 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7640 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7641
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7648
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7651
7652 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7653 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7656 }
7657
7658 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7659 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7660
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 wpalMemoryCopy( pSendBuffer+usDataOffset,
7662 &halFinishScanReqMsg.finishScanParams,
7663 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007664
7665 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007667
7668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7673}/*WDI_ProcessFinishScanReq*/
7674
7675
7676/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007678==========================================================================*/
7679/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 @brief Process BSS Join for a given Session
7681
7682 @param pWDICtx: pointer to the WLAN DAL context
7683 pEventData: pointer to the event information structure
7684
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 @see
7686 @return Result of the function call
7687*/
7688WDI_Status
7689WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007690(
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 WDI_ControlBlockType* pWDICtx,
7692 WDI_JoinReqParamsType* pwdiJoinParams,
7693 WDI_JoinRspCb wdiJoinRspCb,
7694 void* pUserData
7695)
7696{
7697 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 wpt_uint16 usDataOffset = 0;
7700 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7705
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007706 wpalMutexAcquire(&pWDICtx->wptMutex);
7707
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 /*------------------------------------------------------------------------
7709 Check to see if we have any session with this BSSID already stored, we
7710 should not
7711 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7713 pwdiJoinParams->wdiReqInfo.macBSSID,
7714 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 if ( NULL != pBSSSes )
7717 {
7718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007719 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7720 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007721
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007722 /*reset the bAssociationInProgress otherwise the next
7723 *join request will be queued*/
7724 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7725 wpalMutexRelease(&pWDICtx->wptMutex);
7726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 }
7728
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 if ( NULL == pBSSSes )
7734 {
7735
7736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7737 "DAL has no free sessions - cannot run another join");
7738
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007739 /*reset the bAssociationInProgress otherwise the next
7740 *join request will be queued*/
7741 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 }
7745
7746 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7748 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 WDI_MAC_ADDR_LEN);
7750
7751 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007754
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 wpalMutexRelease(&pWDICtx->wptMutex);
7756
7757 /*-----------------------------------------------------------------------
7758 Get message buffer
7759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 sizeof(halJoinReqMsg.joinReqParams),
7762 &pSendBuffer, &usDataOffset, &usSendSize))||
7763 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7764 {
7765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7766 "Unable to get send buffer in join req %x %x %x",
7767 pUserData, pwdiJoinParams, wdiJoinRspCb);
7768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 }
7771
7772 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007774
7775 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 pwdiJoinParams->wdiReqInfo.macSTASelf,
7777 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007778
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7781
7782 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7783
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007784#ifdef WLAN_FEATURE_VOWIFI
7785 halJoinReqMsg.joinReqParams.maxTxPower =
7786 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7787#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7790#endif
7791
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7794 wdiSecondaryChannelOffset);
7795
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 wpalMemoryCopy( pSendBuffer+usDataOffset,
7797 &halJoinReqMsg.joinReqParams,
7798 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007799
7800 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007802
7803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7807 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007808
7809}/*WDI_ProcessBSSSessionJoinReq*/
7810
7811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007814
7815 @param pWDICtx: pointer to the WLAN DAL context
7816 pEventData: pointer to the event information structure
7817
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 @see
7819 @return Result of the function call
7820*/
7821WDI_Status
7822WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007823(
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 WDI_ControlBlockType* pWDICtx,
7825 WDI_EventInfoType* pEventData
7826)
7827{
7828 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7829 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7830 WDI_JoinRspCb wdiJoinRspCb = NULL;
7831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7832
7833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 -------------------------------------------------------------------------*/
7836 if (( NULL == pEventData ) ||
7837 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7838 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7839 {
7840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007845
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 /*-------------------------------------------------------------------------
7847 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 -------------------------------------------------------------------------*/
7850 wpalMutexAcquire(&pWDICtx->wptMutex);
7851
7852 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7853 {
7854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7855 "Association is currently in progress, queueing new join req");
7856
7857 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 pwdiJoinParams->wdiReqInfo.macBSSID);
7860
7861 wpalMutexRelease(&pWDICtx->wptMutex);
7862
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 }
7865
7866 /*Starting a new association */
7867 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7868 wpalMutexRelease(&pWDICtx->wptMutex);
7869
7870 /*Process the Join Request*/
7871 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7872 wdiJoinRspCb,pEventData->pUserData);
7873
7874}/*WDI_ProcessJoinReq*/
7875
7876
7877/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007878 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007880
7881 @param pWDICtx: pointer to the WLAN DAL context
7882 pEventData: pointer to the event information structure
7883
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 @see
7885 @return Result of the function call
7886*/
7887WDI_Status
7888WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007889(
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 WDI_ControlBlockType* pWDICtx,
7891 WDI_EventInfoType* pEventData
7892)
7893{
7894 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7895 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 wpt_uint16 uMsgSize = 0;
7899 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 wpt_uint16 usDataOffset = 0;
7901 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7906
7907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 -------------------------------------------------------------------------*/
7910 if (( NULL == pEventData ) ||
7911 ( NULL == pEventData->pEventData ) ||
7912 ( NULL == pEventData->pCBfnc ))
7913 {
7914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007918 }
7919
7920 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7921 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7922 /*-------------------------------------------------------------------------
7923 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 -------------------------------------------------------------------------*/
7926 wpalMutexAcquire(&pWDICtx->wptMutex);
7927
7928 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7932 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7933 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007934
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 {
7937#ifdef WLAN_FEATURE_VOWIFI_11R
7938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 if ( NULL == pBSSSes )
7943 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007944
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7946 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007947
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007951
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7954 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007956
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7960#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 * Request in case of IBSS*/
7963 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7964 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7965 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7966 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7967 {
7968 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 if ( NULL == pBSSSes )
7973 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007974
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7976 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007977
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007979 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007980 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007981
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7984 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007986
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7990 }
7991 else
7992 {
7993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7995 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7996 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7997
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 /* for IBSS testing */
7999 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 }
8002#endif
8003 }
8004
8005 /*------------------------------------------------------------------------
8006 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 ------------------------------------------------------------------------*/
8009 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8010 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8012 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8013 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8014 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008015
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008017
8018 wpalMutexRelease(&pWDICtx->wptMutex);
8019
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 }
8022
8023 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8025 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 sizeof(pWDICtx->wdiCachedConfigBssReq));
8027
8028 wpalMutexRelease(&pWDICtx->wptMutex);
8029
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8031#ifdef WLAN_FEATURE_11AC
8032 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008033 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 else
8035#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008036 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008037
8038 /*-----------------------------------------------------------------------
8039 Get message buffer
8040 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8043 ( usSendSize < (usDataOffset + uMsgSize )))
8044 {
8045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8046 "Unable to get send buffer in config bss req %x %x %x",
8047 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 }
8051
8052 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008053#ifdef WLAN_FEATURE_11AC
8054 if (WDI_getFwWlanFeatCaps(DOT11AC))
8055 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8056 &pwdiConfigBSSParams->wdiReqInfo);
8057 else
8058#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 &pwdiConfigBSSParams->wdiReqInfo);
8061
8062 /* Need to fill in the STA Index to invalid, since at this point we have not
8063 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008065
8066 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8068
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008069#ifdef WLAN_FEATURE_11AC
8070 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8071 wpalMemoryCopy( pSendBuffer+usDataOffset,
8072 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8073 uMsgSize);
8074 }else
8075#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008076 {
8077 if ( uMsgSize <= sizeof(tConfigBssParams) )
8078 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008079 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008080 &halConfigBssReqMsg.uBssParams.configBssParams,
8081 uMsgSize);
8082 }
8083 else
8084 {
8085 return WDI_STATUS_E_FAILURE;
8086 }
8087 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008088
8089 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091
8092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8096 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 WDI_CONFIG_BSS_RESP);
8098
8099}/*WDI_ProcessConfigBSSReq*/
8100
8101
8102/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008105
8106 @param pWDICtx: pointer to the WLAN DAL context
8107 pEventData: pointer to the event information structure
8108
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 @see
8110 @return Result of the function call
8111*/
8112WDI_Status
8113WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008114(
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 WDI_ControlBlockType* pWDICtx,
8116 WDI_EventInfoType* pEventData
8117)
8118{
8119 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8120 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 wpt_uint16 usDataOffset = 0;
8125 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008127
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8130
8131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 -------------------------------------------------------------------------*/
8134 if (( NULL == pEventData ) ||
8135 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8136 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8137 {
8138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 }
8143
8144 /*-------------------------------------------------------------------------
8145 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 -------------------------------------------------------------------------*/
8148 wpalMutexAcquire(&pWDICtx->wptMutex);
8149
8150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8154 pwdiDelBSSParams->ucBssIdx,
8155 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008156
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 {
8159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 "%s: BSS does not yet exist. ucBssIdx %d",
8161 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008162
8163 wpalMutexRelease(&pWDICtx->wptMutex);
8164
8165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008167
8168 /*------------------------------------------------------------------------
8169 Check if this BSS is being currently processed or queued,
8170 if queued - queue the new request as well
8171 ------------------------------------------------------------------------*/
8172 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8175 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8176 __func__, pwdiDelBSSParams->ucBssIdx);
8177
8178 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8179
8180 wpalMutexRelease(&pWDICtx->wptMutex);
8181
8182 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008184
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 /*-----------------------------------------------------------------------
8186 If we receive a Del BSS request for an association that is already in
8187 progress, it indicates that the assoc has failed => we no longer have
8188 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 -----------------------------------------------------------------------*/
8191 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8192 {
8193 /*We can switch to false here because even if a subsequent Join comes in
8194 it will only be processed when DAL transitions out of BUSY state which
8195 happens when the Del BSS request comes */
8196 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8197
8198 /*Former association is complete - prepare next pending assoc for
8199 processing */
8200 WDI_DequeueAssocRequest(pWDICtx);
8201 }
8202
8203 wpalMutexRelease(&pWDICtx->wptMutex);
8204 /*-----------------------------------------------------------------------
8205 Get message buffer
8206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 sizeof(halBssReqMsg.deleteBssParams),
8209 &pSendBuffer, &usDataOffset, &usSendSize))||
8210 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8211 {
8212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8213 "Unable to get send buffer in start req %x %x %x",
8214 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 }
8218
8219 /*Fill in the message request structure*/
8220
8221 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008222 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpalMemoryCopy( pSendBuffer+usDataOffset,
8225 &halBssReqMsg.deleteBssParams,
8226 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008227
8228 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
Jeff Johnsone7245742012-09-05 17:12:55 -07008231
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8237
Jeff Johnsone7245742012-09-05 17:12:55 -07008238
Jeff Johnson295189b2012-06-20 16:38:30 -07008239}/*WDI_ProcessDelBSSReq*/
8240
8241/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008244
8245 @param pWDICtx: pointer to the WLAN DAL context
8246 pEventData: pointer to the event information structure
8247
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 @see
8249 @return Result of the function call
8250*/
8251WDI_Status
8252WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008253(
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 WDI_ControlBlockType* pWDICtx,
8255 WDI_EventInfoType* pEventData
8256)
8257{
8258 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8259 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008263 wpt_uint16 usDataOffset = 0;
8264 wpt_uint16 usSendSize = 0;
8265 wpt_uint16 uMsgSize = 0;
8266 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008268
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8271
8272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 -------------------------------------------------------------------------*/
8275 if (( NULL == pEventData ) ||
8276 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8277 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8278 {
8279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 }
8284
8285 /*-------------------------------------------------------------------------
8286 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 -------------------------------------------------------------------------*/
8289 wpalMutexAcquire(&pWDICtx->wptMutex);
8290
8291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8295 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8296 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008297
8298 if ( NULL == pBSSSes )
8299 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8301 "%s: Association sequence for this BSS does not yet exist - "
8302 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8303 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008304
8305 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 }
8308
8309 /*------------------------------------------------------------------------
8310 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 ------------------------------------------------------------------------*/
8313 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8314 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8316 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8317 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008318
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008320
8321 wpalMutexRelease(&pWDICtx->wptMutex);
8322
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 }
8325
8326 /*-----------------------------------------------------------------------
8327 If Post Assoc was not yet received - the current association must
8328 be in progress
8329 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8332 {
8333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8334 "Association sequence for this BSS association no longer in "
8335 "progress - not allowed");
8336
8337 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 }
8340
8341 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 -----------------------------------------------------------------------*/
8344 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8345 {
8346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8347 "Post Assoc not allowed before JOIN - failing request");
8348
8349 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 }
8352
8353 wpalMutexRelease(&pWDICtx->wptMutex);
8354
8355 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8356 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8357 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8362 ( usSendSize < (usDataOffset + uMsgSize )))
8363 {
8364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8365 "Unable to get send buffer in start req %x %x %x",
8366 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 }
8370
8371 /*Copy the STA parameters */
8372 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8373 &pwdiPostAssocParams->wdiSTAParams );
8374
8375 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WDI_STATableFindStaidByAddr(pWDICtx,
8378 pwdiPostAssocParams->wdiSTAParams.macSTA,
8379 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8380 {
8381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8382 "This station does not exist in the WDI Station Table %d");
8383 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008384 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 }
8387
8388 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 pBSSSes->ucBSSIdx;
8391
8392 /*Copy the BSS parameters */
8393 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8394 &pwdiPostAssocParams->wdiBSSParams);
8395
8396 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 WDI_STATableFindStaidByAddr(pWDICtx,
8399 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 {
8402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8403 "This station does not exist in the WDI Station Table %d");
8404 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008405 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 }
8408
8409 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 pBSSSes->ucBSSIdx;
8412
Jeff Johnsone7245742012-09-05 17:12:55 -07008413
8414 wpalMemoryCopy( pSendBuffer+usDataOffset,
8415 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8416 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008417
8418 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8419
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8421 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8422 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008423
Jeff Johnsone7245742012-09-05 17:12:55 -07008424
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427
Jeff Johnsone7245742012-09-05 17:12:55 -07008428
8429 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008432
8433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8438
Jeff Johnsone7245742012-09-05 17:12:55 -07008439
Jeff Johnson295189b2012-06-20 16:38:30 -07008440}/*WDI_ProcessPostAssocReq*/
8441
8442/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008445
8446 @param pWDICtx: pointer to the WLAN DAL context
8447 pEventData: pointer to the event information structure
8448
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 @see
8450 @return Result of the function call
8451*/
8452WDI_Status
8453WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008454(
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 WDI_ControlBlockType* pWDICtx,
8456 WDI_EventInfoType* pEventData
8457)
8458{
8459 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8460 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 wpt_uint16 usDataOffset = 0;
8465 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8468
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8471
8472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 -------------------------------------------------------------------------*/
8475 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8476 ( NULL == pEventData->pCBfnc ))
8477 {
8478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 }
8483
8484 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8485 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8486 /*-------------------------------------------------------------------------
8487 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 -------------------------------------------------------------------------*/
8490 wpalMutexAcquire(&pWDICtx->wptMutex);
8491
8492 /*------------------------------------------------------------------------
8493 Find the BSS for which the request is made and identify WDI session
8494 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8496 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 &macBSSID))
8498 {
8499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8500 "This station does not exist in the WDI Station Table %d");
8501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 }
8504
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8506 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8509 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8510 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008511
8512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 }
8515
8516 /*------------------------------------------------------------------------
8517 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 ------------------------------------------------------------------------*/
8520 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8521 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8523 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8524 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 }
8530
8531 wpalMutexRelease(&pWDICtx->wptMutex);
8532 /*-----------------------------------------------------------------------
8533 Get message buffer
8534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 sizeof(halDelStaReqMsg.delStaParams),
8537 &pSendBuffer, &usDataOffset, &usSendSize))||
8538 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8539 {
8540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8541 "Unable to get send buffer in start req %x %x %x",
8542 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 }
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8548 wpalMemoryCopy( pSendBuffer+usDataOffset,
8549 &halDelStaReqMsg.delStaParams,
8550 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008551
8552 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008554
8555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8560
8561}/*WDI_ProcessDelSTAReq*/
8562
8563
8564/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008566==========================================================================*/
8567/**
8568 @brief Process Set BSS Key Request function (called when Main FSM
8569 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008570
8571 @param pWDICtx: pointer to the WLAN DAL context
8572 pEventData: pointer to the event information structure
8573
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 @see
8575 @return Result of the function call
8576*/
8577WDI_Status
8578WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008579(
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 WDI_ControlBlockType* pWDICtx,
8581 WDI_EventInfoType* pEventData
8582)
8583{
8584 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8585 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 wpt_uint16 usDataOffset = 0;
8590 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8593 wpt_uint8 keyIndex = 0;
8594
8595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8596
8597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 -------------------------------------------------------------------------*/
8600 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8601 ( NULL == pEventData->pCBfnc ))
8602 {
8603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 }
8608
8609 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8610 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8611 /*-------------------------------------------------------------------------
8612 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 -------------------------------------------------------------------------*/
8615 wpalMutexAcquire(&pWDICtx->wptMutex);
8616
8617 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8621 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8622 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008623
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 {
8626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8628 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008629
8630 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 }
8633
8634 /*------------------------------------------------------------------------
8635 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 ------------------------------------------------------------------------*/
8638 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8639 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8641 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8642 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008643
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 }
8648
8649
8650 wpalMutexRelease(&pWDICtx->wptMutex);
8651 /*-----------------------------------------------------------------------
8652 Get message buffer
8653 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8656 &pSendBuffer, &usDataOffset, &usSendSize))||
8657 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8658 {
8659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8660 "Unable to get send buffer in set bss key req %x %x %x",
8661 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 }
8665
8666 /*-----------------------------------------------------------------------
8667 Copy the Key parameters into the HAL message
8668 -----------------------------------------------------------------------*/
8669
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8674
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8677
8678 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8679 keyIndex++)
8680 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8683 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8684 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8685 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8686 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8687 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8694 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 WDI_MAX_KEY_LENGTH);
8697 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008698
8699 wpalMemoryCopy( pSendBuffer+usDataOffset,
8700 &halSetBssKeyReqMsg.setBssKeyParams,
8701 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
8703 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705
8706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8710 wdiSetBSSKeyRspCb, pEventData->pUserData,
8711 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008712
8713}/*WDI_ProcessSetBssKeyReq*/
8714
8715/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008718
8719 @param pWDICtx: pointer to the WLAN DAL context
8720 pEventData: pointer to the event information structure
8721
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 @see
8723 @return Result of the function call
8724*/
8725WDI_Status
8726WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008727(
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 WDI_ControlBlockType* pWDICtx,
8729 WDI_EventInfoType* pEventData
8730)
8731{
8732 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8733 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 wpt_uint16 usDataOffset = 0;
8738 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8742
8743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 -------------------------------------------------------------------------*/
8746 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8747 ( NULL == pEventData->pCBfnc ))
8748 {
8749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 }
8754
8755 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8756 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8757 /*-------------------------------------------------------------------------
8758 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 -------------------------------------------------------------------------*/
8761 wpalMutexAcquire(&pWDICtx->wptMutex);
8762
8763 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8767 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8768 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008769
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 {
8772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8774 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008775
8776 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 }
8779
8780 /*------------------------------------------------------------------------
8781 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 ------------------------------------------------------------------------*/
8784 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8785 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8787 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8788 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008789
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 }
8794
8795
8796 wpalMutexRelease(&pWDICtx->wptMutex);
8797
8798 /*-----------------------------------------------------------------------
8799 Get message buffer
8800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8803 &pSendBuffer, &usDataOffset, &usSendSize))||
8804 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8805 {
8806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8807 "Unable to get send buffer in set bss key req %x %x %x",
8808 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008811 }
8812 /*-----------------------------------------------------------------------
8813 Copy the Key parameters into the HAL message
8814 -----------------------------------------------------------------------*/
8815 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8819
8820 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8821
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8824
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 wpalMemoryCopy( pSendBuffer+usDataOffset,
8826 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8827 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008828
8829 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008838}/*WDI_ProcessRemoveBssKeyReq*/
8839
8840/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008843
8844 @param pWDICtx: pointer to the WLAN DAL context
8845 pEventData: pointer to the event information structure
8846
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 @see
8848 @return Result of the function call
8849*/
8850WDI_Status
8851WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008852(
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 WDI_ControlBlockType* pWDICtx,
8854 WDI_EventInfoType* pEventData
8855)
8856{
8857 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8858 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 wpt_uint16 usDataOffset = 0;
8862 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8867 wpt_uint8 keyIndex = 0;
8868
8869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8870
8871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 -------------------------------------------------------------------------*/
8874 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8875 ( NULL == pEventData->pCBfnc ))
8876 {
8877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 }
8882
8883 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8884 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8885 /*-------------------------------------------------------------------------
8886 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 -------------------------------------------------------------------------*/
8889 wpalMutexAcquire(&pWDICtx->wptMutex);
8890
8891 /*------------------------------------------------------------------------
8892 Find the BSS for which the request is made and identify WDI session
8893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8895 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 &macBSSID))
8897 {
8898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8899 "This station does not exist in the WDI Station Table %d");
8900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 }
8903
Jeff Johnsone7245742012-09-05 17:12:55 -07008904 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8905 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8908 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8909 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008910
8911 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008914
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 /*------------------------------------------------------------------------
8916 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 ------------------------------------------------------------------------*/
8919 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8920 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8922 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8923 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008924
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 }
8929
8930
8931 wpalMutexRelease(&pWDICtx->wptMutex);
8932 /*-----------------------------------------------------------------------
8933 Get message buffer
8934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8937 &pSendBuffer, &usDataOffset, &usSendSize))||
8938 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8939 {
8940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8941 "Unable to get send buffer in set bss key req %x %x %x",
8942 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 }
8946 /*-----------------------------------------------------------------------
8947 Copy the STA Key parameters into the HAL message
8948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8951
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8954
8955 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8956
8957 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8958
8959 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8960
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8962 keyIndex++)
8963 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8966 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8967 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8968 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8969 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8970 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8977 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 WDI_MAX_KEY_LENGTH);
8980 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008981
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 wpalMemoryCopy( pSendBuffer+usDataOffset,
8983 &halSetStaKeyReqMsg.setStaKeyParams,
8984 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008985
8986 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988
8989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8993 wdiSetSTAKeyRspCb, pEventData->pUserData,
8994 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008995
8996}/*WDI_ProcessSetSTAKeyReq*/
8997
8998/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009001
9002 @param pWDICtx: pointer to the WLAN DAL context
9003 pEventData: pointer to the event information structure
9004
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 @see
9006 @return Result of the function call
9007*/
9008WDI_Status
9009WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009010(
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 WDI_ControlBlockType* pWDICtx,
9012 WDI_EventInfoType* pEventData
9013)
9014{
9015 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9016 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9017 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 wpt_uint16 usDataOffset = 0;
9020 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 wpt_macAddr macBSSID;
9023 wpt_uint8 ucCurrentBSSSesIdx;
9024 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9026
9027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 -------------------------------------------------------------------------*/
9030 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9031 ( NULL == pEventData->pCBfnc ))
9032 {
9033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 }
9038
9039 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9040 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9041 /*-------------------------------------------------------------------------
9042 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 -------------------------------------------------------------------------*/
9045 wpalMutexAcquire(&pWDICtx->wptMutex);
9046
9047 /*------------------------------------------------------------------------
9048 Find the BSS for which the request is made and identify WDI session
9049 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9051 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 &macBSSID))
9053 {
9054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9055 "This station does not exist in the WDI Station Table %d");
9056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 }
9059
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9061 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9064 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9065 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009066
9067 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009070
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 /*------------------------------------------------------------------------
9072 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 ------------------------------------------------------------------------*/
9075 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9076 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9078 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9079 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009080
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 }
9085
9086
9087
9088 wpalMutexRelease(&pWDICtx->wptMutex);
9089 /*-----------------------------------------------------------------------
9090 Get message buffer
9091 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9094 &pSendBuffer, &usDataOffset, &usSendSize))||
9095 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9096 {
9097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9098 "Unable to get send buffer in set bss key req %x %x %x",
9099 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 }
9103
9104 /*-----------------------------------------------------------------------
9105 Copy the Key parameters into the HAL message
9106 -----------------------------------------------------------------------*/
9107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9110
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9113
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9116
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9119
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 wpalMemoryCopy( pSendBuffer+usDataOffset,
9121 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9122 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009123
9124 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009126
9127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009133
9134}/*WDI_ProcessRemoveSTAKeyReq*/
9135
9136/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009139
9140 @param pWDICtx: pointer to the WLAN DAL context
9141 pEventData: pointer to the event information structure
9142
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 @see
9144 @return Result of the function call
9145*/
9146WDI_Status
9147WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009148(
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 WDI_ControlBlockType* pWDICtx,
9150 WDI_EventInfoType* pEventData
9151)
9152{
9153 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9154 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9155 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 wpt_uint16 usDataOffset = 0;
9158 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9163 wpt_uint8 keyIndex = 0;
9164
9165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9166
9167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 -------------------------------------------------------------------------*/
9170 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9171 ( NULL == pEventData->pCBfnc ))
9172 {
9173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 }
9178
9179 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9180 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9181 /*-------------------------------------------------------------------------
9182 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 -------------------------------------------------------------------------*/
9185 wpalMutexAcquire(&pWDICtx->wptMutex);
9186
9187 /*------------------------------------------------------------------------
9188 Find the BSS for which the request is made and identify WDI session
9189 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9191 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 &macBSSID))
9193 {
9194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9195 "This station does not exist in the WDI Station Table %d");
9196 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 }
9199
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9201 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 {
9203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9205 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009206
9207 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009210
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 /*------------------------------------------------------------------------
9212 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 ------------------------------------------------------------------------*/
9215 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9216 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9218 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9219 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009220
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 }
9225
9226
9227 wpalMutexRelease(&pWDICtx->wptMutex);
9228 /*-----------------------------------------------------------------------
9229 Get message buffer
9230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9233 &pSendBuffer, &usDataOffset, &usSendSize))||
9234 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9235 {
9236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9237 "Unable to get send buffer in set bss key req %x %x %x",
9238 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 }
9242 /*-----------------------------------------------------------------------
9243 Copy the STA Key parameters into the HAL message
9244 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9247
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9250
9251 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9252
9253 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9254
9255 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9256
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9258 keyIndex++)
9259 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9262 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9263 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9264 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9265 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9266 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9273 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 WDI_MAX_KEY_LENGTH);
9276 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009277
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 wpalMemoryCopy( pSendBuffer+usDataOffset,
9279 &halSetStaKeyReqMsg.setStaKeyParams,
9280 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009281
9282 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009284
9285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9289 wdiSetSTAKeyRspCb, pEventData->pUserData,
9290 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009291
9292}/*WDI_ProcessSetSTABcastKeyReq*/
9293
9294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009297
9298 @param pWDICtx: pointer to the WLAN DAL context
9299 pEventData: pointer to the event information structure
9300
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 @see
9302 @return Result of the function call
9303*/
9304WDI_Status
9305WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009306(
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 WDI_ControlBlockType* pWDICtx,
9308 WDI_EventInfoType* pEventData
9309)
9310{
9311 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9312 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9313 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 wpt_uint16 usDataOffset = 0;
9316 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 wpt_macAddr macBSSID;
9319 wpt_uint8 ucCurrentBSSSesIdx;
9320 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9322
9323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 -------------------------------------------------------------------------*/
9326 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9327 ( NULL == pEventData->pCBfnc ))
9328 {
9329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 }
9334
9335 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9336 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9337 /*-------------------------------------------------------------------------
9338 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 -------------------------------------------------------------------------*/
9341 wpalMutexAcquire(&pWDICtx->wptMutex);
9342
9343 /*------------------------------------------------------------------------
9344 Find the BSS for which the request is made and identify WDI session
9345 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9347 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 &macBSSID))
9349 {
9350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9351 "This station does not exist in the WDI Station Table %d");
9352 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 }
9355
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9357 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9360 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9361 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009362
9363 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009366
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 /*------------------------------------------------------------------------
9368 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 ------------------------------------------------------------------------*/
9371 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9372 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9374 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9375 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009376
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 }
9381
9382
9383
9384 wpalMutexRelease(&pWDICtx->wptMutex);
9385 /*-----------------------------------------------------------------------
9386 Get message buffer
9387 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009389 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9390 &pSendBuffer, &usDataOffset, &usSendSize))||
9391 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9392 {
9393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9394 "Unable to get send buffer in set bss key req %x %x %x",
9395 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 }
9399
9400 /*-----------------------------------------------------------------------
9401 Copy the Key parameters into the HAL message
9402 -----------------------------------------------------------------------*/
9403
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9406
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9409
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9412
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9415
Jeff Johnsone7245742012-09-05 17:12:55 -07009416 wpalMemoryCopy( pSendBuffer+usDataOffset,
9417 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9418 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009419
9420 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422
9423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009429
9430}/*WDI_ProcessRemoveSTABcastKeyReq*/
9431
9432/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009434==========================================================================*/
9435/**
9436 @brief Process Add TSpec Request function (called when Main FSM
9437 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009438
9439 @param pWDICtx: pointer to the WLAN DAL context
9440 pEventData: pointer to the event information structure
9441
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 @see
9443 @return Result of the function call
9444*/
9445WDI_Status
9446WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009447(
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 WDI_ControlBlockType* pWDICtx,
9449 WDI_EventInfoType* pEventData
9450)
9451{
9452 WDI_AddTSReqParamsType* pwdiAddTSParams;
9453 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 wpt_uint16 usDataOffset = 0;
9458 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 wpt_macAddr macBSSID;
9461 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009462
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9464
9465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 -------------------------------------------------------------------------*/
9468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9469 ( NULL == pEventData->pCBfnc ))
9470 {
9471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 }
9476
9477 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9478 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9479 /*-------------------------------------------------------------------------
9480 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 -------------------------------------------------------------------------*/
9483 wpalMutexAcquire(&pWDICtx->wptMutex);
9484
9485 /*------------------------------------------------------------------------
9486 Find the BSS for which the request is made and identify WDI session
9487 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9489 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 &macBSSID))
9491 {
9492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9493 "This station does not exist in the WDI Station Table %d");
9494 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 }
9497
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9499 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9502 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9503 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009504
9505 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009508
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 /*------------------------------------------------------------------------
9510 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 ------------------------------------------------------------------------*/
9513 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9514 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9516 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9517 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009518
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 }
9523
9524 wpalMutexRelease(&pWDICtx->wptMutex);
9525 /*-----------------------------------------------------------------------
9526 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9530 sizeof(halAddTsParams),
9531 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 &usSendSize))||
9533 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9534 {
9535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9536 "Unable to get send buffer in set bss key req %x %x %x",
9537 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 }
9541
9542 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9543 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9544
9545 //TSPEC IE
9546 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9547 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9578
9579 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9594
9595 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009599 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9600
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 wpalMemoryCopy( pSendBuffer+usDataOffset,
9602 &halAddTsParams,
9603 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
9605 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
9608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009614}/*WDI_ProcessAddTSpecReq*/
9615
9616
9617/**
9618 @brief Process Del TSpec Request function (called when Main FSM
9619 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009620
9621 @param pWDICtx: pointer to the WLAN DAL context
9622 pEventData: pointer to the event information structure
9623
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 @see
9625 @return Result of the function call
9626*/
9627WDI_Status
9628WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009629(
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 WDI_ControlBlockType* pWDICtx,
9631 WDI_EventInfoType* pEventData
9632)
9633{
9634 WDI_DelTSReqParamsType* pwdiDelTSParams;
9635 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 wpt_uint16 usDataOffset = 0;
9640 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9643
9644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 -------------------------------------------------------------------------*/
9647 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9648 ( NULL == pEventData->pCBfnc ))
9649 {
9650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 }
9655
9656 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9657 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9658
9659 /*-------------------------------------------------------------------------
9660 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 -------------------------------------------------------------------------*/
9663 wpalMutexAcquire(&pWDICtx->wptMutex);
9664
9665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9669 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9670 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009671
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9675 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9676 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9677
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 }
9681
9682 /*------------------------------------------------------------------------
9683 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 ------------------------------------------------------------------------*/
9686 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9687 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9689 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9690 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009691
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 }
9696
9697
9698 wpalMutexRelease(&pWDICtx->wptMutex);
9699 /*-----------------------------------------------------------------------
9700 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9705 &pSendBuffer, &usDataOffset, &usSendSize))||
9706 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9707 {
9708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9709 "Unable to get send buffer in set bss key req %x %x %x",
9710 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 }
9714
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 wpalMemoryCopy( pSendBuffer+usDataOffset,
9716 &pwdiDelTSParams->wdiDelTSInfo,
9717 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009718
9719 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009721
9722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9726 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009727}/*WDI_ProcessDelTSpecReq*/
9728
9729/**
9730 @brief Process Update EDCA Params Request function (called when
9731 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009732
9733 @param pWDICtx: pointer to the WLAN DAL context
9734 pEventData: pointer to the event information structure
9735
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 @see
9737 @return Result of the function call
9738*/
9739WDI_Status
9740WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009741(
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 WDI_ControlBlockType* pWDICtx,
9743 WDI_EventInfoType* pEventData
9744)
9745{
9746 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9747 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 wpt_uint16 usDataOffset = 0;
9752 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9755
9756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 -------------------------------------------------------------------------*/
9759 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9760 ( NULL == pEventData->pCBfnc ))
9761 {
9762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 }
9767
9768 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9769 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9770 /*-------------------------------------------------------------------------
9771 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 -------------------------------------------------------------------------*/
9774 wpalMutexAcquire(&pWDICtx->wptMutex);
9775
9776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9780 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9781 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009782
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 {
9785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9787 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009788
9789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 }
9792
9793 /*------------------------------------------------------------------------
9794 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 ------------------------------------------------------------------------*/
9797 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9798 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9800 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9801 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009802
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808
9809 wpalMutexRelease(&pWDICtx->wptMutex);
9810 /*-----------------------------------------------------------------------
9811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9816 &pSendBuffer, &usDataOffset, &usSendSize))||
9817 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9818 {
9819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9820 "Unable to get send buffer in set bss key req %x %x %x",
9821 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 wpalMemoryCopy( pSendBuffer+usDataOffset,
9827 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9828 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
9833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9837 wdiUpdateEDCARspCb, pEventData->pUserData,
9838 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009839}/*WDI_ProcessUpdateEDCAParamsReq*/
9840
9841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009844
9845 @param pWDICtx: pointer to the WLAN DAL context
9846 pEventData: pointer to the event information structure
9847
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 @see
9849 @return Result of the function call
9850*/
9851WDI_Status
9852WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009853(
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 WDI_ControlBlockType* pWDICtx,
9855 WDI_EventInfoType* pEventData
9856)
9857{
9858 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9859 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 wpt_uint16 usDataOffset = 0;
9864 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 wpt_macAddr macBSSID;
9867
9868 tAddBASessionReqMsg halAddBASessionReq;
9869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9870
9871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 -------------------------------------------------------------------------*/
9874 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9875 ( NULL == pEventData->pCBfnc ))
9876 {
9877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9887 /*-------------------------------------------------------------------------
9888 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 -------------------------------------------------------------------------*/
9891 wpalMutexAcquire(&pWDICtx->wptMutex);
9892
9893 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9897 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 &macBSSID))
9899 {
9900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9901 "This station does not exist in the WDI Station Table %d");
9902 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 }
9905
9906
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009908
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9912 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9913 __func__, MAC_ADDR_ARRAY(macBSSID));
9914
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 }
9918
9919 /*------------------------------------------------------------------------
9920 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 ------------------------------------------------------------------------*/
9923 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9926 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9927 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009928
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 }
9933
9934
9935 wpalMutexRelease(&pWDICtx->wptMutex);
9936 /*-----------------------------------------------------------------------
9937 Get message buffer
9938 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9940 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 sizeof(halAddBASessionReq.addBASessionParams),
9942 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9945 {
9946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9947 "Unable to get send buffer in Add BA session req %x %x %x",
9948 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 }
9952
9953 halAddBASessionReq.addBASessionParams.staIdx =
9954 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9955 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9956 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9957 WDI_MAC_ADDR_LEN);
9958 halAddBASessionReq.addBASessionParams.baTID =
9959 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9960 halAddBASessionReq.addBASessionParams.baPolicy =
9961 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9962 halAddBASessionReq.addBASessionParams.baBufferSize =
9963 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9964 halAddBASessionReq.addBASessionParams.baTimeout =
9965 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9966 halAddBASessionReq.addBASessionParams.baSSN =
9967 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9968 halAddBASessionReq.addBASessionParams.baDirection =
9969 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9970
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 wpalMemoryCopy( pSendBuffer+usDataOffset,
9972 &halAddBASessionReq.addBASessionParams,
9973 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009974
9975 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009977
9978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9982 wdiAddBASessionRspCb, pEventData->pUserData,
9983 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009984}/*WDI_ProcessAddBASessionReq*/
9985
9986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009989
9990 @param pWDICtx: pointer to the WLAN DAL context
9991 pEventData: pointer to the event information structure
9992
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 @see
9994 @return Result of the function call
9995*/
9996WDI_Status
9997WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009998(
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 WDI_ControlBlockType* pWDICtx,
10000 WDI_EventInfoType* pEventData
10001)
10002{
10003 WDI_DelBAReqParamsType* pwdiDelBAParams;
10004 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 wpt_uint16 usDataOffset = 0;
10009 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 wpt_macAddr macBSSID;
10012 tDelBAParams halDelBAparam;
10013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10014
10015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 -------------------------------------------------------------------------*/
10018 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10019 ( NULL == pEventData->pCBfnc ))
10020 {
10021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 }
10026
10027 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10028 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10029 /*-------------------------------------------------------------------------
10030 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 -------------------------------------------------------------------------*/
10033 wpalMutexAcquire(&pWDICtx->wptMutex);
10034
10035 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10039 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 &macBSSID))
10041 {
10042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10043 "This station does not exist in the WDI Station Table %d");
10044 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 }
10047
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010049
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10053 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10054 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010055
10056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 }
10059
10060 /*------------------------------------------------------------------------
10061 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 ------------------------------------------------------------------------*/
10064 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10067 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10068 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010069
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 }
10074
10075 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 sizeof(halDelBAparam),
10078 &pSendBuffer, &usDataOffset, &usSendSize))||
10079 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10080 {
10081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10082 "Unable to get send buffer for DEL BA req %x %x %x",
10083 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 }
10087
10088 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10089 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10090 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10091
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 wpalMemoryCopy( pSendBuffer+usDataOffset,
10093 &halDelBAparam,
10094 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010095
10096 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010098
10099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10103 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010104}/*WDI_ProcessDelBAReq*/
10105
10106#ifdef FEATURE_WLAN_CCX
10107
10108WDI_Status
10109WDI_ProcessTSMStatsReq
10110(
10111 WDI_ControlBlockType* pWDICtx,
10112 WDI_EventInfoType* pEventData
10113)
10114{
10115 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10116 WDI_TsmRspCb wdiTSMRspCb;
10117 wpt_uint8 ucCurrentBSSSesIdx = 0;
10118 WDI_BSSSessionType* pBSSSes = NULL;
10119 wpt_uint8* pSendBuffer = NULL;
10120 wpt_uint16 usDataOffset = 0;
10121 wpt_uint16 usSendSize = 0;
10122 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10123 tTsmStatsParams halTsmStatsReqParams = {0};
10124
10125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10126
10127 /*-------------------------------------------------------------------------
10128 Sanity check
10129 -------------------------------------------------------------------------*/
10130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10131 ( NULL == pEventData->pCBfnc ))
10132 {
10133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 WDI_ASSERT(0);
10136 return WDI_STATUS_E_FAILURE;
10137 }
10138
10139 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10140 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10141 /*-------------------------------------------------------------------------
10142 Check to see if we are in the middle of an association, if so queue, if
10143 not it means it is free to process request
10144 -------------------------------------------------------------------------*/
10145 wpalMutexAcquire(&pWDICtx->wptMutex);
10146
10147 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10148 if ( NULL == pBSSSes )
10149 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10151 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10152 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010153
10154 wpalMutexRelease(&pWDICtx->wptMutex);
10155 return WDI_STATUS_E_NOT_ALLOWED;
10156 }
10157
10158 /*------------------------------------------------------------------------
10159 Check if this BSS is being currently processed or queued,
10160 if queued - queue the new request as well
10161 ------------------------------------------------------------------------*/
10162 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10163 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10165 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10166 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010167
10168 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10169 wpalMutexRelease(&pWDICtx->wptMutex);
10170 return wdiStatus;
10171 }
10172
10173 wpalMutexRelease(&pWDICtx->wptMutex);
10174 /*-----------------------------------------------------------------------
10175 Get message buffer
10176 ! TO DO : proper conversion into the HAL Message Request Format
10177 -----------------------------------------------------------------------*/
10178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10179 sizeof(halTsmStatsReqParams),
10180 &pSendBuffer, &usDataOffset, &usSendSize))||
10181 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10182 {
10183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10184 "Unable to get send buffer in set bss key req %x %x %x",
10185 pEventData, pwdiTSMParams, wdiTSMRspCb);
10186 WDI_ASSERT(0);
10187 return WDI_STATUS_E_FAILURE;
10188 }
10189
10190 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10191 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10192 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10193 WDI_MAC_ADDR_LEN);
10194 wpalMemoryCopy( pSendBuffer+usDataOffset,
10195 &halTsmStatsReqParams,
10196 sizeof(halTsmStatsReqParams));
10197
10198 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10199 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10200
10201 /*-------------------------------------------------------------------------
10202 Send TSM Stats Request to HAL
10203 -------------------------------------------------------------------------*/
10204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10205 wdiTSMRspCb, pEventData->pUserData,
10206 WDI_TSM_STATS_RESP);
10207}/*WDI_ProcessTSMStatsReq*/
10208
10209#endif
10210
10211
10212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010215
10216 @param pWDICtx: pointer to the WLAN DAL context
10217 pEventData: pointer to the event information structure
10218
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 @see
10220 @return Result of the function call
10221*/
10222WDI_Status
10223WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010224(
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 WDI_ControlBlockType* pWDICtx,
10226 WDI_EventInfoType* pEventData
10227)
10228{
10229 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10230 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 wpt_uint16 usDataOffset = 0;
10233 wpt_uint16 usSendSize = 0;
10234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10235
10236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 -------------------------------------------------------------------------*/
10239 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10240 ( NULL == pEventData->pCBfnc ))
10241 {
10242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 }
10247
10248 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10249 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10250 /*-----------------------------------------------------------------------
10251 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10256 &pSendBuffer, &usDataOffset, &usSendSize))||
10257 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10258 {
10259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10260 "Unable to get send buffer in set bss key req %x %x %x",
10261 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 }
10265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 wpalMemoryCopy( pSendBuffer+usDataOffset,
10267 &pwdiFlushAcParams->wdiFlushAcInfo,
10268 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010269
10270 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010272
10273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10277 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010278}/*WDI_ProcessFlushAcReq*/
10279
10280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010283
10284 @param pWDICtx: pointer to the WLAN DAL context
10285 pEventData: pointer to the event information structure
10286
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 @see
10288 @return Result of the function call
10289*/
10290WDI_Status
10291WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010292(
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 WDI_ControlBlockType* pWDICtx,
10294 WDI_EventInfoType* pEventData
10295)
10296{
10297 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10298 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 wpt_uint16 usDataOffset = 0;
10301 wpt_uint16 usSendSize = 0;
10302
10303 tBtAmpEventMsg haltBtAmpEventMsg;
10304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10305
10306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 -------------------------------------------------------------------------*/
10309 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10310 ( NULL == pEventData->pCBfnc ))
10311 {
10312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 }
10317
10318 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10319 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10320 /*-----------------------------------------------------------------------
10321 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010325 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10326 &pSendBuffer, &usDataOffset, &usSendSize))||
10327 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10328 {
10329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10330 "Unable to get send buffer in BT AMP event req %x %x %x",
10331 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 }
10335
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 wpalMemoryCopy( pSendBuffer+usDataOffset,
10339 &haltBtAmpEventMsg.btAmpEventParams,
10340 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
10342 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010344
10345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10349 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010350}/*WDI_ProcessBtAmpEventReq*/
10351
10352/**
10353 @brief Process Add STA self Request function (called when Main FSM
10354 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010355
10356 @param pWDICtx: pointer to the WLAN DAL context
10357 pEventData: pointer to the event information structure
10358
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 @see
10360 @return Result of the function call
10361*/
10362WDI_Status
10363WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010364(
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 WDI_ControlBlockType* pWDICtx,
10366 WDI_EventInfoType* pEventData
10367)
10368{
10369 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10370 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 wpt_uint16 usDataOffset = 0;
10373 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010374 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10376
10377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 -------------------------------------------------------------------------*/
10380 if (( NULL == pEventData ) ||
10381 ( NULL == pEventData->pEventData) ||
10382 ( NULL == pEventData->pCBfnc))
10383 {
10384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 }
10389
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10394 /*-----------------------------------------------------------------------
10395 Get message buffer
10396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10398 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010399 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010401 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 {
10403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10404 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10405 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 }
10409
10410 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10413
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010415 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10416 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10417 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10418 {
10419 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10420 }
10421 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10422 VOS_P2P_CLIENT_MODE) ||
10423 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10424 VOS_P2P_DEVICE))
10425 {
10426 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10427 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010429 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010430
10431 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010433
10434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10438 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10439 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010440}/*WDI_ProcessAddSTASelfReq*/
10441
10442
10443
10444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010447
10448 @param pWDICtx: pointer to the WLAN DAL context
10449 pEventData: pointer to the event information structure
10450
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 @see
10452 @return Result of the function call
10453*/
10454WDI_Status
10455WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010456(
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 WDI_ControlBlockType* pWDICtx,
10458 WDI_EventInfoType* pEventData
10459)
10460{
10461 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10462 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 wpt_uint16 usDataOffset = 0;
10465 wpt_uint16 usSendSize = 0;
10466 tDelStaSelfParams halSetDelSelfSTAParams;
10467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10468
10469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 -------------------------------------------------------------------------*/
10472 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10473 ( NULL == pEventData->pCBfnc ))
10474 {
10475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 }
10480
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10483 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10484
10485 /*-----------------------------------------------------------------------
10486 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10491 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10494 {
10495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10496 "Unable to get send buffer in Del Sta Self req %x %x %x",
10497 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 }
10501
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10504
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10506 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010507
10508 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010510
10511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10515 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 WDI_DEL_STA_SELF_RESP);
10517
10518}
10519
Jeff Johnsone7245742012-09-05 17:12:55 -070010520#ifdef FEATURE_OEM_DATA_SUPPORT
10521/**
10522 @brief Process Start Oem Data Request function (called when Main
10523 FSM allows it)
10524
10525 @param pWDICtx: pointer to the WLAN DAL context
10526 pEventData: pointer to the event information structure
10527
10528 @see
10529 @return Result of the function call
10530*/
10531WDI_Status
10532WDI_ProcessStartOemDataReq
10533(
10534 WDI_ControlBlockType* pWDICtx,
10535 WDI_EventInfoType* pEventData
10536)
10537{
10538 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10539 WDI_oemDataRspCb wdiOemDataRspCb;
10540 wpt_uint8* pSendBuffer = NULL;
10541 wpt_uint16 usDataOffset = 0;
10542 wpt_uint16 usSendSize = 0;
10543 wpt_uint16 reqLen;
10544 tStartOemDataReqParams* halStartOemDataReqParams;
10545
10546 /*-------------------------------------------------------------------------
10547 Sanity check
10548 -------------------------------------------------------------------------*/
10549 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10550 ( NULL == pEventData->pCBfnc ))
10551 {
10552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010553 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 WDI_ASSERT(0);
10555 return WDI_STATUS_E_FAILURE;
10556 }
10557
10558 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10559 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10560
10561 /*-----------------------------------------------------------------------
10562 Get message buffer
10563 -----------------------------------------------------------------------*/
10564
10565 reqLen = sizeof(tStartOemDataReqParams);
10566
10567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10568 WDI_START_OEM_DATA_REQ, reqLen,
10569 &pSendBuffer, &usDataOffset, &usSendSize))||
10570 (usSendSize < (usDataOffset + reqLen)))
10571 {
10572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10573 "Unable to get send buffer in Start Oem Data req %x %x %x",
10574 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10575 WDI_ASSERT(0);
10576 return WDI_STATUS_E_FAILURE;
10577 }
10578
10579 //copying WDI OEM DATA REQ PARAMS to shared memory
10580 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10581
10582 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10583 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10584
10585 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10586 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10587
10588 /*-------------------------------------------------------------------------
10589 Send Start Request to HAL
10590 -------------------------------------------------------------------------*/
10591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10592 wdiOemDataRspCb, pEventData->pUserData,
10593 WDI_START_OEM_DATA_RESP);
10594}/*WDI_ProcessStartOemDataReq*/
10595#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010596
10597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010600
10601 @param pWDICtx: pointer to the WLAN DAL context
10602 pEventData: pointer to the event information structure
10603
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 @see
10605 @return Result of the function call
10606*/
10607WDI_Status
10608WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010609(
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 WDI_ControlBlockType* pWDICtx,
10611 WDI_EventInfoType* pEventData
10612)
10613{
10614 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10615 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 wpt_uint16 usDataOffset = 0;
10618 wpt_uint16 usSendSize = 0;
10619 tHalWlanHostResumeReqParam halResumeReqParams;
10620
10621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10622
10623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 -------------------------------------------------------------------------*/
10626 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10627 ( NULL == pEventData->pCBfnc ))
10628 {
10629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010630 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 }
10634
10635 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10636 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10637
10638 /*-----------------------------------------------------------------------
10639 Get message buffer
10640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10643 &pSendBuffer, &usDataOffset, &usSendSize))||
10644 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10645 {
10646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 }
10652
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010655
10656 wpalMemoryCopy( pSendBuffer+usDataOffset,
10657 &halResumeReqParams,
10658 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010659
10660 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010662
10663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10667 wdiHostResumeRspCb, pEventData->pUserData,
10668 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010669}/*WDI_ProcessHostResumeReq*/
10670
10671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010674
10675 @param pWDICtx: pointer to the WLAN DAL context
10676 pEventData: pointer to the event information structure
10677
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 @see
10679 @return Result of the function call
10680*/
10681WDI_Status
10682WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010683(
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 WDI_ControlBlockType* pWDICtx,
10685 WDI_EventInfoType* pEventData
10686)
10687{
10688 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10689 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 wpt_uint16 usDataOffset = 0;
10692 wpt_uint16 usSendSize = 0;
10693 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10695
10696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 -------------------------------------------------------------------------*/
10699 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10700 ( NULL == pEventData->pCBfnc ))
10701 {
10702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010703 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 }
10707
10708 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10709 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010710
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 /*-----------------------------------------------------------------------
10712 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 sizeof(halTxPerTrackingReqParam),
10717 &pSendBuffer, &usDataOffset, &usSendSize))||
10718 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10719 {
10720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10721 "Unable to get send buffer in set tx per tracking req %x %x %x",
10722 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010726
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10728 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10729 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10730 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010731
10732 wpalMemoryCopy( pSendBuffer+usDataOffset,
10733 &halTxPerTrackingReqParam,
10734 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010735
10736 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010738
10739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10743 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010744}/*WDI_ProcessSetTxPerTrackingReq*/
10745
10746/*=========================================================================
10747 Indications
10748=========================================================================*/
10749
10750/**
10751 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010752
10753 @param pWDICtx: pointer to the WLAN DAL context
10754 pEventData: pointer to the event information structure
10755
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 @see
10757 @return Result of the function call
10758*/
10759WDI_Status
10760WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010761(
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 WDI_ControlBlockType* pWDICtx,
10763 WDI_EventInfoType* pEventData
10764)
10765{
10766 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 wpt_uint16 usDataOffset = 0;
10769 wpt_uint16 usSendSize = 0;
10770 WDI_Status wdiStatus;
10771 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10773
10774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 -------------------------------------------------------------------------*/
10777 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10778 {
10779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010780 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 }
10784
10785 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10786
10787 /*-----------------------------------------------------------------------
10788 Get message buffer
10789 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10791 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 sizeof(halWlanSuspendIndparams),
10793 &pSendBuffer, &usDataOffset, &usSendSize))||
10794 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10795 {
10796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10797 "Unable to get send buffer in Suspend Ind ");
10798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 }
10801
10802 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10803 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10804
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010806 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010807
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10809 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010810
10811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 -------------------------------------------------------------------------*/
10814 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010816
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10819}/*WDI_ProcessHostSuspendInd*/
10820
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010821
10822
10823/**
10824 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10825
10826 @param pWDICtx: pointer to the WLAN DAL context
10827 pEventData: pointer to the event information structure
10828
10829 @see
10830 @return Result of the function call
10831*/
10832WDI_Status
10833WDI_ProcessTrafficStatsInd
10834(
10835 WDI_ControlBlockType* pWDICtx,
10836 WDI_EventInfoType* pEventData
10837)
10838{
10839 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10840 wpt_uint8* pSendBuffer = NULL;
10841 wpt_uint16 usDataOffset = 0;
10842 wpt_uint16 usSendSize = 0;
10843 WDI_Status wdiStatus;
10844 tStatsClassBIndParams* pStatsClassBIndParams;
10845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10846
10847 /*-------------------------------------------------------------------------
10848 Sanity check
10849 -------------------------------------------------------------------------*/
10850 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10851 {
10852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10853 "%s: Invalid parameters in Traffic Stats ind",__func__);
10854 WDI_ASSERT(0);
10855 return WDI_STATUS_E_FAILURE;
10856 }
10857
10858 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10859
10860 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10861 {
10862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10863 "%s: Invalid parameters in Traffic Stats ind",__func__);
10864 WDI_ASSERT(0);
10865 return WDI_STATUS_E_FAILURE;
10866 }
10867
10868 /*-----------------------------------------------------------------------
10869 Get message buffer
10870 -----------------------------------------------------------------------*/
10871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10872 WDI_TRAFFIC_STATS_IND,
10873 sizeof(tStatsClassBIndParams),
10874 &pSendBuffer, &usDataOffset, &usSendSize))||
10875 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10876 {
10877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10878 "Unable to get send buffer in Traffic Stats Ind ");
10879 WDI_ASSERT(0);
10880 return WDI_STATUS_E_FAILURE;
10881 }
10882
10883 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10884
10885 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10886
10887 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10888 pTrafficStatsIndParams->pTrafficStats,
10889 pTrafficStatsIndParams->length);
10890
10891 /*-------------------------------------------------------------------------
10892 Send Suspend Request to HAL
10893 -------------------------------------------------------------------------*/
10894 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10895 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10896
10897 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10898 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10899}/*WDI_ProcessTrafficStatsInd*/
10900
Chet Lanctota96bb432013-03-18 10:26:30 -070010901#ifdef WLAN_FEATURE_11W
10902/**
10903 @brief Process Exclude Unencrypted Indications function (called
10904 when Main FSM allows it)
10905
10906 @param pWDICtx: pointer to the WLAN DAL context
10907 pEventData: pointer to the event information structure
10908
10909 @see
10910 @return Result of the function call
10911*/
10912WDI_Status
10913WDI_ProcessExcludeUnencryptInd
10914(
10915 WDI_ControlBlockType* pWDICtx,
10916 WDI_EventInfoType* pEventData
10917)
10918{
10919 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10920 wpt_uint8* pSendBuffer = NULL;
10921 wpt_uint16 usDataOffset = 0;
10922 wpt_uint16 usSendSize = 0;
10923 WDI_Status wdiStatus;
10924 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10926
10927 /*-------------------------------------------------------------------------
10928 Sanity check
10929 -------------------------------------------------------------------------*/
10930 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10931 {
10932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10933 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10934 WDI_ASSERT(0);
10935 return WDI_STATUS_E_FAILURE;
10936 }
10937
10938 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10939
10940 /*-----------------------------------------------------------------------
10941 Get message buffer
10942 -----------------------------------------------------------------------*/
10943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10944 WDI_EXCLUDE_UNENCRYPTED_IND,
10945 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10946 &pSendBuffer, &usDataOffset, &usSendSize))||
10947 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10948 {
10949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10950 "Unable to get send buffer in Exclude Unencrypted Ind ");
10951 WDI_ASSERT(0);
10952 return WDI_STATUS_E_FAILURE;
10953 }
10954
10955 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10956
10957 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10958
10959 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10960 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10961
10962 /*-------------------------------------------------------------------------
10963 Send Suspend Request to HAL
10964 -------------------------------------------------------------------------*/
10965 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10966 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10967
10968 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10969 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10970}/*WDI_ProcessExcludeUnencryptInd*/
10971#endif
10972
Yue Ma365933a2013-08-14 15:59:08 -070010973/**
10974 @brief Process Add Periodic Tx Pattern Indication function (called when
10975 Main FSM allows it)
10976
10977 @param pWDICtx: pointer to the WLAN DAL context
10978 pEventData: pointer to the event information structure
10979
10980 @see
10981 @return Result of the function call
10982*/
10983WDI_Status
10984WDI_ProcessAddPeriodicTxPtrnInd
10985(
10986 WDI_ControlBlockType* pWDICtx,
10987 WDI_EventInfoType* pEventData
10988)
10989{
10990 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
10991 wpt_uint8* pSendBuffer = NULL;
10992 wpt_uint16 usDataOffset = 0;
10993 wpt_uint16 usSendSize = 0;
10994 WDI_Status wdiStatus;
10995 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
10996 wpt_uint8 selfStaIdx = 0;
10997
10998 /*-------------------------------------------------------------------------
10999 Sanity check
11000 -------------------------------------------------------------------------*/
11001 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11002 {
11003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11004 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11005 WDI_ASSERT(0);
11006 return WDI_STATUS_E_FAILURE;
11007 }
11008
11009 pAddPeriodicTxPtrnParams =
11010 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11011
11012 /*------------------------------------------------------------------------
11013 Get message buffer
11014 ------------------------------------------------------------------------*/
11015 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11016 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11017 &pSendBuffer, &usDataOffset, &usSendSize))||
11018 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11019 {
11020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11021 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11022 __func__);
11023 WDI_ASSERT(0);
11024 return WDI_STATUS_E_FAILURE;
11025 }
11026
11027 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11028
11029 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11030 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11031 &selfStaIdx))
11032 {
11033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11034 "%s: Failed to get selfStaIdx!", __func__);
11035
11036 return WDI_STATUS_E_FAILURE;
11037 }
11038
11039 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11040 halAddPeriodicTxPtrn->ucPtrnId =
11041 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11042 halAddPeriodicTxPtrn->usPtrnSize =
11043 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11044 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11045 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11046
11047 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11048 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11049 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11050
11051 /*-------------------------------------------------------------------------
11052 Send Indication to HAL
11053 -------------------------------------------------------------------------*/
11054 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11055 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11056
11057 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11058
11059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11060 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11061
11062 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11063} /* WDI_ProcessAddPeriodicTxPtrnInd */
11064
11065/**
11066 @brief Process Delete Periodic Tx Pattern Indication function (called when
11067 Main FSM allows it)
11068
11069 @param pWDICtx: pointer to the WLAN DAL context
11070 pEventData: pointer to the event information structure
11071
11072 @see
11073 @return Result of the function call
11074*/
11075WDI_Status
11076WDI_ProcessDelPeriodicTxPtrnInd
11077(
11078 WDI_ControlBlockType* pWDICtx,
11079 WDI_EventInfoType* pEventData
11080)
11081{
11082 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11083 wpt_uint8* pSendBuffer = NULL;
11084 wpt_uint16 usDataOffset = 0;
11085 wpt_uint16 usSendSize = 0;
11086 WDI_Status wdiStatus;
11087 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11088 wpt_uint8 selfStaIdx = 0;
11089
11090 /*-------------------------------------------------------------------------
11091 Sanity check
11092 -------------------------------------------------------------------------*/
11093 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11094 {
11095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11096 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11097 WDI_ASSERT(0);
11098 return WDI_STATUS_E_FAILURE;
11099 }
11100
11101 pDelPeriodicTxPtrnParams =
11102 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11103
11104 /*------------------------------------------------------------------------
11105 Get message buffer
11106 ------------------------------------------------------------------------*/
11107 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11108 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11109 &pSendBuffer, &usDataOffset, &usSendSize))||
11110 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11111 {
11112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11113 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11114 __func__);
11115 WDI_ASSERT(0);
11116 return WDI_STATUS_E_FAILURE;
11117 }
11118
11119 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11120
11121 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11122 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11123 &selfStaIdx))
11124 {
11125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11126 "%s: Failed to get selfStaIdx!", __func__);
11127
11128 return WDI_STATUS_E_FAILURE;
11129 }
11130
11131 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11132 halDelPeriodicTxPtrn->uPatternIdBitmap =
11133 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11134
11135 /*-------------------------------------------------------------------------
11136 Send Indication to HAL
11137 -------------------------------------------------------------------------*/
11138 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11139 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11140
11141 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11142
11143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11144 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11145
11146 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11147} /* WDI_ProcessDelPeriodicTxPtrnInd */
11148
Jeff Johnson295189b2012-06-20 16:38:30 -070011149/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011151==========================================================================*/
11152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011155
11156 @param pWDICtx: pointer to the WLAN DAL context
11157 pEventData: pointer to the event information structure
11158
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 @see
11160 @return Result of the function call
11161*/
11162WDI_Status
11163WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011164(
Jeff Johnson295189b2012-06-20 16:38:30 -070011165 WDI_ControlBlockType* pWDICtx,
11166 WDI_EventInfoType* pEventData
11167)
11168{
11169 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11170 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 wpt_uint16 usDataOffset = 0;
11173 wpt_uint16 usSendSize = 0;
11174 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11176
11177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 -------------------------------------------------------------------------*/
11180 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11181 ( NULL == pEventData->pCBfnc ))
11182 {
11183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 }
11188
11189 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11190 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11191 /*-----------------------------------------------------------------------
11192 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 sizeof(halSwitchChannelReq.switchChannelParams),
11197 &pSendBuffer, &usDataOffset, &usSendSize))||
11198 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11199 {
11200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11201 "Unable to get send buffer in channel switch req %x %x %x",
11202 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 }
11206
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011209#ifndef WLAN_FEATURE_VOWIFI
11210 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11212#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11215
11216#ifdef WLAN_FEATURE_VOWIFI
11217 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011218 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011219 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11220 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11221 WDI_MAC_ADDR_LEN);
11222 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11223 pwdiSwitchChParams->wdiChInfo.macBSSId,
11224 WDI_MAC_ADDR_LEN);
11225#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 wpalMemoryCopy( pSendBuffer+usDataOffset,
11227 &halSwitchChannelReq.switchChannelParams,
11228 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011229
11230 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232
11233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11237 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011238}/*WDI_ProcessChannelSwitchReq*/
11239
11240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011243
11244 @param pWDICtx: pointer to the WLAN DAL context
11245 pEventData: pointer to the event information structure
11246
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 @see
11248 @return Result of the function call
11249*/
11250WDI_Status
11251WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011252(
Jeff Johnson295189b2012-06-20 16:38:30 -070011253 WDI_ControlBlockType* pWDICtx,
11254 WDI_EventInfoType* pEventData
11255)
11256{
11257 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11258 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 wpt_uint16 usDataOffset = 0;
11263 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011265
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 tConfigStaReqMsg halConfigStaReqMsg;
11267 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11269
11270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 -------------------------------------------------------------------------*/
11273 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11274 ( NULL == pEventData->pCBfnc ))
11275 {
11276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 }
11281
11282 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11283 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11284 /*-------------------------------------------------------------------------
11285 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 -------------------------------------------------------------------------*/
11288 wpalMutexAcquire(&pWDICtx->wptMutex);
11289
11290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11294 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11295 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011296
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11300 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11301 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011302
11303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 }
11306
11307 /*------------------------------------------------------------------------
11308 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011310 ------------------------------------------------------------------------*/
11311 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11312 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11314 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11315 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011316
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 }
11321
11322 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011323
11324 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11325#ifdef WLAN_FEATURE_11AC
11326 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011327 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 else
11329#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011330 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011331
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 /*-----------------------------------------------------------------------
11333 Get message buffer
11334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11336 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011339 {
11340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11341 "Unable to get send buffer in config sta req %x %x %x",
11342 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011345 }
11346
11347 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 &pwdiConfigSTAParams->wdiReqInfo);
11350
11351 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11352 {
11353 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011355 WDI_STATableFindStaidByAddr(pWDICtx,
11356 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011357 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 {
11359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11360 "This station does not exist in the WDI Station Table %d");
11361 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011362 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 }
11365 }
11366 else
11367 {
11368 /* Need to fill in the STA Index to invalid, since at this point we have not
11369 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011370 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 }
11372
11373 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011375
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 wpalMemoryCopy( pSendBuffer+usDataOffset,
11377 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011378 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011379
11380 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011382
Jeff Johnsone7245742012-09-05 17:12:55 -070011383 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11384 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 sizeof(pWDICtx->wdiCachedConfigStaReq));
11386
11387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11391 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011392}/*WDI_ProcessConfigStaReq*/
11393
11394
11395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011397 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011398
11399 @param pWDICtx: pointer to the WLAN DAL context
11400 pEventData: pointer to the event information structure
11401
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 @see
11403 @return Result of the function call
11404*/
11405WDI_Status
11406WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011407(
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 WDI_ControlBlockType* pWDICtx,
11409 WDI_EventInfoType* pEventData
11410)
11411{
11412 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11413 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 wpt_uint16 usDataOffset = 0;
11418 wpt_uint16 usSendSize = 0;
11419 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11422
11423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 -------------------------------------------------------------------------*/
11426 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11427 ( NULL == pEventData->pCBfnc ))
11428 {
11429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 }
11434
11435 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11436 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11437 /*-------------------------------------------------------------------------
11438 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 -------------------------------------------------------------------------*/
11441 wpalMutexAcquire(&pWDICtx->wptMutex);
11442
11443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11447 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11448 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011449
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011451 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11454 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 }
11456 else
11457 {
11458 /*------------------------------------------------------------------------
11459 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 ------------------------------------------------------------------------*/
11462 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11463 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11465 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11466 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11467
11468 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 }
11472 }
11473 /* If the link is set to enter IDLE - the Session allocated for this BSS
11474 will be deleted on the Set Link State response coming from HAL
11475 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11478
11479 wpalMutexRelease(&pWDICtx->wptMutex);
11480 /*-----------------------------------------------------------------------
11481 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011484
11485 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011486 sizeof(halLinkStateReqMsg),
11487 &pSendBuffer, &usDataOffset, &usSendSize))||
11488 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11489 {
11490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11491 "Unable to get send buffer in set bss key req %x %x %x",
11492 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 }
11496
11497 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11498 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11499
11500 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11501 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11502
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11505
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 wpalMemoryCopy( pSendBuffer+usDataOffset,
11507 &halLinkStateReqMsg,
11508 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011509
11510 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011512
11513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11517 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011518}/*WDI_ProcessSetLinkStateReq*/
11519
11520
11521/**
11522 @brief Process Get Stats Request function (called when Main FSM
11523 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011524
11525 @param pWDICtx: pointer to the WLAN DAL context
11526 pEventData: pointer to the event information structure
11527
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 @see
11529 @return Result of the function call
11530*/
11531WDI_Status
11532WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011533(
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 WDI_ControlBlockType* pWDICtx,
11535 WDI_EventInfoType* pEventData
11536)
11537{
11538 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11539 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 wpt_uint16 usDataOffset = 0;
11542 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 WDI_BSSSessionType* pBSSSes = NULL;
11545 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 tHalStatsReqMsg halStatsReqMsg;
11548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11549
11550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 -------------------------------------------------------------------------*/
11553 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11554 ( NULL == pEventData->pCBfnc ) )
11555 {
11556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 }
11561
11562 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11563 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11564
11565 /*-------------------------------------------------------------------------
11566 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 -------------------------------------------------------------------------*/
11569 wpalMutexAcquire(&pWDICtx->wptMutex);
11570
11571 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11575 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 &macBSSID))
11577 {
11578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11579 "This station does not exist in the WDI Station Table %d");
11580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 }
11583
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11585 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11588 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11589 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011590
11591 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 }
11594
11595 /*------------------------------------------------------------------------
11596 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 ------------------------------------------------------------------------*/
11599 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11600 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11602 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11603 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011604
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 }
11609
11610
11611 wpalMutexRelease(&pWDICtx->wptMutex);
11612
11613 /*-----------------------------------------------------------------------
11614 Get message buffer
11615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 sizeof(halStatsReqMsg.statsReqParams),
11618 &pSendBuffer, &usDataOffset, &usSendSize))||
11619 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11620 {
11621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "Unable to get send buffer in set bss key req %x %x %x",
11623 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 }
11627
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 wpalMemoryCopy( pSendBuffer+usDataOffset,
11633 &halStatsReqMsg.statsReqParams,
11634 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011635
11636 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011638
11639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11643 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011644}/*WDI_ProcessGetStatsReq*/
11645
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011646#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11647/**
11648 @brief Process Get Roam Rssi Request function (called when Main FSM
11649 allows it)
11650
11651 @param pWDICtx: pointer to the WLAN DAL context
11652 pEventData: pointer to the event information structure
11653
11654 @see
11655 @return Result of the function call
11656*/
11657WDI_Status
11658WDI_ProcessGetRoamRssiReq
11659(
11660 WDI_ControlBlockType* pWDICtx,
11661 WDI_EventInfoType* pEventData
11662)
11663{
11664 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11665 WDI_GetStatsRspCb wdiGetStatsRspCb;
11666 wpt_uint8* pSendBuffer = NULL;
11667 wpt_uint16 usDataOffset = 0;
11668 wpt_uint16 usSendSize = 0;
11669 wpt_uint8 ucCurrentBSSSesIdx = 0;
11670 WDI_BSSSessionType* pBSSSes = NULL;
11671 wpt_macAddr macBSSID;
11672 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11673 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11675 /*-------------------------------------------------------------------------
11676 Sanity check
11677 -------------------------------------------------------------------------*/
11678 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11679 ( NULL == pEventData->pCBfnc ) )
11680 {
11681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11682 "%s: Invalid parameters", __func__);
11683 WDI_ASSERT(0);
11684 return WDI_STATUS_E_FAILURE;
11685 }
11686
11687 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11688 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11689
11690 /*-------------------------------------------------------------------------
11691 Check to see if we are in the middle of an association, if so queue, if
11692 not it means it is free to process request
11693 -------------------------------------------------------------------------*/
11694 wpalMutexAcquire(&pWDICtx->wptMutex);
11695
11696 /*------------------------------------------------------------------------
11697 Find the BSS for which the request is made
11698 ------------------------------------------------------------------------*/
11699 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11700 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11701 &macBSSID))
11702 {
11703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11704 "This station does not exist in the WDI Station Table %d");
11705 wpalMutexRelease(&pWDICtx->wptMutex);
11706 return WDI_STATUS_E_FAILURE;
11707 }
11708
11709 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11710 if ( NULL == pBSSSes )
11711 {
11712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11713 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11714 __func__, MAC_ADDR_ARRAY(macBSSID));
11715
11716 wpalMutexRelease(&pWDICtx->wptMutex);
11717 return WDI_STATUS_E_NOT_ALLOWED;
11718 }
11719
11720 /*------------------------------------------------------------------------
11721 Check if this BSS is being currently processed or queued,
11722 if queued - queue the new request as well
11723 ------------------------------------------------------------------------*/
11724 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11725 {
11726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11727 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11728 __func__, MAC_ADDR_ARRAY(macBSSID));
11729
11730 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11731 wpalMutexRelease(&pWDICtx->wptMutex);
11732 return wdiStatus;
11733 }
11734
11735 wpalMutexRelease(&pWDICtx->wptMutex);
11736
11737 /*-----------------------------------------------------------------------
11738 Get message buffer
11739 -----------------------------------------------------------------------*/
11740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11741 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11742 &pSendBuffer, &usDataOffset, &usSendSize))||
11743 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11744 {
11745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11746 "Unable to get send buffer in set bss key req %x %x %x",
11747 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11748 WDI_ASSERT(0);
11749 return WDI_STATUS_E_FAILURE;
11750 }
11751
11752 halRssiRoamReqMsg.roamRssiReqParams.staId =
11753 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11754 wpalMemoryCopy( pSendBuffer+usDataOffset,
11755 &halRssiRoamReqMsg.roamRssiReqParams,
11756 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11757
11758 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11759 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11760
11761 /*-------------------------------------------------------------------------
11762 Send Get STA Request to HAL
11763 -------------------------------------------------------------------------*/
11764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11765 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11766}/*WDI_ProcessGetRoamRssiReq*/
11767#endif
11768
Jeff Johnson295189b2012-06-20 16:38:30 -070011769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011772
11773 @param pWDICtx: pointer to the WLAN DAL context
11774 pEventData: pointer to the event information structure
11775
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 @see
11777 @return Result of the function call
11778*/
11779WDI_Status
11780WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011781(
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 WDI_ControlBlockType* pWDICtx,
11783 WDI_EventInfoType* pEventData
11784)
11785{
11786 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11787 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11788
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 wpt_uint16 usDataOffset = 0;
11791 wpt_uint16 usSendSize = 0;
11792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11793
11794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011796 -------------------------------------------------------------------------*/
11797 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11798 ( NULL == pEventData->pCBfnc))
11799 {
11800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 }
11805
11806 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11807 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11808
11809 /*-----------------------------------------------------------------------
11810 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011811 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 -----------------------------------------------------------------------*/
11813
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11816 &pSendBuffer, &usDataOffset, &usSendSize))||
11817 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11818 {
11819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11820 "Unable to get send buffer in set bss key req %x %x %x",
11821 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 }
11825
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 wpalMemoryCopy( pSendBuffer+usDataOffset,
11827 &pwdiUpdateCfgParams->uConfigBufferLen,
11828 sizeof(wpt_uint32));
11829 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11830 pwdiUpdateCfgParams->pConfigBuffer,
11831 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011832
11833 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011834 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011835
11836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 -------------------------------------------------------------------------*/
11839
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11841 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011842
11843}/*WDI_ProcessUpdateCfgReq*/
11844
11845
11846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011849
11850 @param pWDICtx: pointer to the WLAN DAL context
11851 pEventData: pointer to the event information structure
11852
Jeff Johnson295189b2012-06-20 16:38:30 -070011853 @see
11854 @return Result of the function call
11855*/
11856WDI_Status
11857WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011858(
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 WDI_ControlBlockType* pWDICtx,
11860 WDI_EventInfoType* pEventData
11861)
11862{
11863 WDI_AddBAReqParamsType* pwdiAddBAParams;
11864 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 wpt_uint16 usDataOffset = 0;
11869 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 wpt_macAddr macBSSID;
11872
11873 tAddBAReqMsg halAddBAReq;
11874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11875
11876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 -------------------------------------------------------------------------*/
11879 if (( NULL == pEventData ) ||
11880 ( NULL == pEventData->pEventData) ||
11881 ( NULL == pEventData->pCBfnc ))
11882 {
11883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 }
11888
11889 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11890 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11891
11892 /*-------------------------------------------------------------------------
11893 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011894 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 -------------------------------------------------------------------------*/
11896 wpalMutexAcquire(&pWDICtx->wptMutex);
11897
11898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11902 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 &macBSSID))
11904 {
11905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11906 "This station does not exist in the WDI Station Table %d");
11907 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 }
11910
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11912 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11915 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11916 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011917
11918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 }
11921
11922 /*------------------------------------------------------------------------
11923 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011924 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011925 ------------------------------------------------------------------------*/
11926 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11927 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11929 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11930 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011931
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 }
11936
11937
11938 wpalMutexRelease(&pWDICtx->wptMutex);
11939 /*-----------------------------------------------------------------------
11940 Get message buffer
11941 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 sizeof(halAddBAReq.addBAParams),
11944 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11947 {
11948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11949 "Unable to get send buffer in Add BA req %x %x %x",
11950 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 }
11954
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11957 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11958#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11961#endif
11962
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 wpalMemoryCopy( pSendBuffer+usDataOffset,
11964 &halAddBAReq.addBAParams,
11965 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011966
11967 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011969
11970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11974 wdiAddBARspCb, pEventData->pUserData,
11975 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011976}/*WDI_ProcessAddBAReq*/
11977
11978
11979
11980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011983
11984 @param pWDICtx: pointer to the WLAN DAL context
11985 pEventData: pointer to the event information structure
11986
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 @see
11988 @return Result of the function call
11989*/
11990WDI_Status
11991WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011992(
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 WDI_ControlBlockType* pWDICtx,
11994 WDI_EventInfoType* pEventData
11995)
11996{
11997 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11998 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 wpt_uint16 usDataOffset = 0;
12003 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 wpt_uint16 index;
12006 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012007
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 tTriggerBAReqMsg halTriggerBAReq;
12009 tTriggerBaReqCandidate* halTriggerBACandidate;
12010 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12012
12013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 -------------------------------------------------------------------------*/
12016 if (( NULL == pEventData ) ||
12017 ( NULL == pEventData->pEventData ) ||
12018 ( NULL == pEventData->pCBfnc ))
12019 {
12020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012024 }
12025
12026 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12027 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12028 /*-------------------------------------------------------------------------
12029 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012030 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 -------------------------------------------------------------------------*/
12032 wpalMutexAcquire(&pWDICtx->wptMutex);
12033
12034 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12038 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 &macBSSID))
12040 {
12041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12042 "This station does not exist in the WDI Station Table %d");
12043 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 }
12046
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12048 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12051 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12052 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012053
12054 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 }
12057
12058 /*------------------------------------------------------------------------
12059 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 ------------------------------------------------------------------------*/
12062 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12063 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12065 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12066 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012067
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 }
12072
12073
12074 wpalMutexRelease(&pWDICtx->wptMutex);
12075 /*-----------------------------------------------------------------------
12076 Get message buffer
12077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12079 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12083 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12088 {
12089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12090 "Unable to get send buffer in Trigger BA req %x %x %x",
12091 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 }
12095
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 wpalMemoryCopy( pSendBuffer+usDataOffset,
12102 &halTriggerBAReq.triggerBAParams,
12103 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012104
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12107 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12108 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012109
12110 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 index++)
12112 {
12113 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12114 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12115 halTriggerBACandidate++;
12116 wdiTriggerBACandidate++;
12117 }
12118
12119 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012121
12122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012123 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12126 wdiTriggerBARspCb, pEventData->pUserData,
12127 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012128}/*WDI_ProcessTriggerBAReq*/
12129
12130
12131
12132/**
12133 @brief Process Update Beacon Params Request function (called when Main FSM
12134 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012135
12136 @param pWDICtx: pointer to the WLAN DAL context
12137 pEventData: pointer to the event information structure
12138
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 @see
12140 @return Result of the function call
12141*/
12142WDI_Status
12143WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012144(
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 WDI_ControlBlockType* pWDICtx,
12146 WDI_EventInfoType* pEventData
12147)
12148{
12149 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12150 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 wpt_uint16 usDataOffset = 0;
12153 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12156
12157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 -------------------------------------------------------------------------*/
12160 if (( NULL == pEventData ) ||
12161 ( NULL == pEventData->pEventData) ||
12162 ( NULL == pEventData->pCBfnc))
12163 {
12164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 }
12169
12170 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12171 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12172 /*-----------------------------------------------------------------------
12173 Get message buffer
12174 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 sizeof(halUpdateBeaconParams),
12177 &pSendBuffer, &usDataOffset, &usSendSize))||
12178 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12179 {
12180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12181 "Unable to get send buffer in set bss key req %x %x %x",
12182 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 }
12186
12187 /*BSS Index of the BSS*/
12188 halUpdateBeaconParams.bssIdx =
12189 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12190 /*shortPreamble mode. HAL should update all the STA rates when it
12191 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12194 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12197 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12200
12201 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012204 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012205 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12214 halUpdateBeaconParams.fRIFSMode =
12215 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012217 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12218
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12220 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012221
12222 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012224
12225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12229 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012230}/*WDI_ProcessUpdateBeaconParamsReq*/
12231
12232
12233
12234/**
12235 @brief Process Send Beacon template Request function (called when Main FSM
12236 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012237
12238 @param pWDICtx: pointer to the WLAN DAL context
12239 pEventData: pointer to the event information structure
12240
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 @see
12242 @return Result of the function call
12243*/
12244WDI_Status
12245WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012246(
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 WDI_ControlBlockType* pWDICtx,
12248 WDI_EventInfoType* pEventData
12249)
12250{
12251 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12252 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 wpt_uint16 usDataOffset = 0;
12255 wpt_uint16 usSendSize = 0;
12256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12257
12258 tSendBeaconReqMsg halSendBeaconReq;
12259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 -------------------------------------------------------------------------*/
12262 if (( NULL == pEventData ) ||
12263 ( NULL == pEventData->pEventData ) ||
12264 ( NULL == pEventData->pCBfnc ))
12265 {
12266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 }
12271
12272 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12273 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12274 /*-----------------------------------------------------------------------
12275 Get message buffer
12276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 sizeof(halSendBeaconReq.sendBeaconParam),
12279 &pSendBuffer, &usDataOffset, &usSendSize))||
12280 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12281 {
12282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12283 "Unable to get send buffer in send beacon req %x %x %x",
12284 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 }
12288
12289 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12290 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12291 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12294 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12295 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12296 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012299 /* usP2PIeOffset should be atleast greater than timIeOffset */
12300 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12301 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12302 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12303 {
12304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12305 "Invalid usP2PIeOffset %hu",
12306 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12307 WDI_ASSERT(0);
12308 return WDI_STATUS_E_FAILURE;
12309 }
12310
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012313
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 wpalMemoryCopy( pSendBuffer+usDataOffset,
12315 &halSendBeaconReq.sendBeaconParam,
12316 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012317
12318 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012320
12321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12325 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012326}/*WDI_ProcessSendBeaconParamsReq*/
12327
12328/**
12329 @brief Process Update Beacon Params Request function (called when Main FSM
12330 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012331
12332 @param pWDICtx: pointer to the WLAN DAL context
12333 pEventData: pointer to the event information structure
12334
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 @see
12336 @return Result of the function call
12337*/
12338WDI_Status
12339WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012340(
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 WDI_ControlBlockType* pWDICtx,
12342 WDI_EventInfoType* pEventData
12343)
12344{
12345 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12346 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 wpt_uint16 usDataOffset = 0;
12349 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12352
12353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 -------------------------------------------------------------------------*/
12356 if (( NULL == pEventData ) ||
12357 ( NULL == pEventData->pEventData) ||
12358 ( NULL == pEventData->pCBfnc))
12359 {
12360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 }
12365
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12370 /*-----------------------------------------------------------------------
12371 Get message buffer
12372 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 sizeof(halUpdateProbeRspTmplParams),
12375 &pSendBuffer, &usDataOffset, &usSendSize))||
12376 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12377 {
12378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12379 "Unable to get send buffer in set bss key req %x %x %x",
12380 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 }
12384
12385 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 WDI_MAC_ADDR_LEN);
12388
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12391
12392 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12393 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012394 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012395
12396
12397 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12398 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12399 WDI_PROBE_REQ_BITMAP_IE_LEN);
12400
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 wpalMemoryCopy( pSendBuffer+usDataOffset,
12402 &halUpdateProbeRspTmplParams,
12403 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012404
12405 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407
12408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12412 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12413 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012414}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12415
12416/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012419
12420 @param pWDICtx: pointer to the WLAN DAL context
12421 pEventData: pointer to the event information structure
12422
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 @see
12424 @return Result of the function call
12425*/
12426WDI_Status
12427WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012428(
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 WDI_ControlBlockType* pWDICtx,
12430 WDI_EventInfoType* pEventData
12431)
12432{
12433
12434 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12435 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12436
12437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 -------------------------------------------------------------------------*/
12440 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12445 {
12446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 }
12451
12452 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12455
12456 /*cache the wdi nv request message here if the the first fragment
12457 * To issue the request to HAL for the next fragment */
12458 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12459 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12461 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12463
12464 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12465 pWDICtx->pRspCBUserData = pEventData->pUserData;
12466 }
12467
12468 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12469}
12470
12471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012474
12475 @param pWDICtx: pointer to the WLAN DAL context
12476 pEventData: pointer to the event information structure
12477
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 @see
12479 @return Result of the function call
12480*/
12481WDI_Status WDI_ProcessSetMaxTxPowerReq
12482(
12483 WDI_ControlBlockType* pWDICtx,
12484 WDI_EventInfoType* pEventData
12485)
12486{
12487 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12488 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 wpt_uint16 usDataOffset = 0;
12491 wpt_uint16 usSendSize = 0;
12492 tSetMaxTxPwrReq halSetMaxTxPower;
12493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12494
12495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 -------------------------------------------------------------------------*/
12498 if (( NULL == pEventData ) ||
12499 ( NULL == pEventData->pEventData ) ||
12500 ( NULL == pEventData->pCBfnc ))
12501 {
12502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12511
12512 /*-----------------------------------------------------------------------
12513 Get message buffer
12514 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012515if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12517 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012519)))
12520 {
12521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12522 "Unable to get Set Max Tx Power req %x %x %x",
12523 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012526 }
12527
12528 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12529 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12530 WDI_MAC_ADDR_LEN);
12531
12532 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12533 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12534 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012535 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012536 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012537
12538 wpalMemoryCopy( pSendBuffer+usDataOffset,
12539 &halSetMaxTxPower.setMaxTxPwrParams,
12540 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012541
12542 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012543 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012544
12545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12549 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12550 WDI_SET_MAX_TX_POWER_RESP);
12551
Jeff Johnson295189b2012-06-20 16:38:30 -070012552}
12553
schangd82195a2013-03-13 18:41:24 -070012554/**
12555 @brief Process Set Tx Power Request function (called when Main
12556 FSM allows it)
12557
12558 @param pWDICtx: pointer to the WLAN DAL context
12559 pEventData: pointer to the event information structure
12560
12561 @see
12562 @return Result of the function call
12563*/
12564WDI_Status WDI_ProcessSetTxPowerReq
12565(
12566 WDI_ControlBlockType* pWDICtx,
12567 WDI_EventInfoType* pEventData
12568)
12569{
12570 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12571 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12572 wpt_uint8* pSendBuffer = NULL;
12573 wpt_uint16 usDataOffset = 0;
12574 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012575 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12577
12578 /*-------------------------------------------------------------------------
12579 Sanity check
12580 -------------------------------------------------------------------------*/
12581 if (( NULL == pEventData ) ||
12582 ( NULL == pEventData->pEventData ) ||
12583 ( NULL == pEventData->pCBfnc ))
12584 {
12585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12586 "%s: Invalid parameters", __func__);
12587 WDI_ASSERT(0);
12588 return WDI_STATUS_E_FAILURE;
12589 }
12590
12591 pwdiSetTxPowerParams =
12592 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12593 wdiSetTxPowerRspCb =
12594 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12595
12596 /*-----------------------------------------------------------------------
12597 Get message buffer
12598 -----------------------------------------------------------------------*/
12599 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12600 sizeof(tSetTxPwrReqParams),
12601 &pSendBuffer, &usDataOffset, &usSendSize))||
12602 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12603 )))
12604 {
12605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12606 "Unable to get Set Max Tx Power req %x %x %x",
12607 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12608 WDI_ASSERT(0);
12609 return WDI_STATUS_E_FAILURE;
12610 }
12611
Leo Changa37e2a92013-03-25 17:39:58 -070012612 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12613 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12614 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012615
12616 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12617 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12618
12619 /*-------------------------------------------------------------------------
12620 Send Set Tx Power Request to HAL
12621 -------------------------------------------------------------------------*/
12622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12623 wdiSetTxPowerRspCb, pEventData->pUserData,
12624 WDI_SET_TX_POWER_RESP);
12625}
Jeff Johnson295189b2012-06-20 16:38:30 -070012626
12627/**
12628 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12629 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012630
12631 @param pWDICtx: pointer to the WLAN DAL context
12632 pEventData: pointer to the event information structure
12633
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 @see
12635 @return Result of the function call
12636*/
12637WDI_Status
12638WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012639(
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 WDI_ControlBlockType* pWDICtx,
12641 WDI_EventInfoType* pEventData
12642)
12643{
12644 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12645 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 wpt_uint16 usDataOffset = 0;
12648 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012649 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12651
12652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 -------------------------------------------------------------------------*/
12655 if (( NULL == pEventData ) ||
12656 ( NULL == pEventData->pEventData) ||
12657 ( NULL == pEventData->pCBfnc))
12658 {
12659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 }
12664
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12669 /*-----------------------------------------------------------------------
12670 Get message buffer
12671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12673 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 sizeof(halSetP2PGONOAParams),
12675 &pSendBuffer, &usDataOffset, &usSendSize))||
12676 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12677 {
12678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12679 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12680 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 }
12684
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12689 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12698
Jeff Johnsone7245742012-09-05 17:12:55 -070012699 wpalMemoryCopy( pSendBuffer+usDataOffset,
12700 &halSetP2PGONOAParams,
12701 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012702
12703 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012705
12706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12710 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12711 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012712}/*WDI_ProcessP2PGONOAReq*/
12713
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012714#ifdef FEATURE_WLAN_TDLS
12715
12716/**
12717 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12718 allows it)
12719
12720 @param pWDICtx: pointer to the WLAN DAL context
12721 pEventData: pointer to the event information structure
12722
12723 @see
12724 @return Result of the function call
12725*/
12726WDI_Status
12727WDI_ProcessTdlsLinkEstablishReq
12728(
12729 WDI_ControlBlockType* pWDICtx,
12730 WDI_EventInfoType* pEventData
12731)
12732{
12733 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12734 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12735 wpt_uint8* pSendBuffer = NULL;
12736 wpt_uint16 usDataOffset = 0;
12737 wpt_uint16 usSendSize = 0;
12738
12739 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12741
12742 /*-------------------------------------------------------------------------
12743 Sanity check
12744 -------------------------------------------------------------------------*/
12745 if (( NULL == pEventData ) ||
12746 ( NULL == pEventData->pEventData) ||
12747 ( NULL == pEventData->pCBfnc))
12748 {
12749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12750 "%s: Invalid parameters", __func__);
12751 WDI_ASSERT(0);
12752 return WDI_STATUS_E_FAILURE;
12753 }
12754 pwdiTDLSLinkEstablishReqParams =
12755 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12756 wdiTDLSLinkEstablishReqRspCb =
12757 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12758
12759
12760 /*-----------------------------------------------------------------------
12761 Get message buffer
12762 -----------------------------------------------------------------------*/
12763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12764 WDI_TDLS_LINK_ESTABLISH_REQ,
12765 sizeof(halSetTDLSLinkEstablishParams),
12766 &pSendBuffer, &usDataOffset, &usSendSize))||
12767 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12768 {
12769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12770 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12771 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12772 WDI_ASSERT(0);
12773 return WDI_STATUS_E_FAILURE;
12774 }
12775
12776 halSetTDLSLinkEstablishParams.staIdx =
12777 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12778 halSetTDLSLinkEstablishParams.bIsResponder =
12779 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12780 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12781 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12782 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12783 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12784 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12785 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12786 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12787 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12788 halSetTDLSLinkEstablishParams.aAck = 0;
12789 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12790 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12791 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12792
12793 wpalMemoryCopy( pSendBuffer+usDataOffset,
12794 &halSetTDLSLinkEstablishParams,
12795 sizeof(halSetTDLSLinkEstablishParams));
12796
12797 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12798 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12799
12800 /*-------------------------------------------------------------------------
12801 Send Update Probe Resp Template Request to HAL
12802 -------------------------------------------------------------------------*/
12803 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12804 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12805 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12806 return 0;
12807}/*WDI_ProcessTdlsLinkEstablishReq*/
12808
12809
12810#endif
12811
Jeff Johnson295189b2012-06-20 16:38:30 -070012812
12813
12814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 @param None
12818
12819 @see
12820 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012821*/
12822void
12823WDI_SetPowerStateCb
12824(
12825 wpt_status status,
12826 unsigned int dxePhyAddr,
12827 void *pContext
12828)
12829{
12830 wpt_status wptStatus;
12831 WDI_ControlBlockType *pCB = NULL;
12832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12833 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12834 {
12835 //it shouldn't happen, put an error msg
12836 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 /*
12838 * Trigger the event to bring the Enter BMPS req function to come
12839 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012840*/
12841 if( NULL != pContext )
12842 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012843 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 }
12845 else
12846 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 pCB = &gWDICb;
12849 }
12850 pCB->dxePhyAddr = dxePhyAddr;
12851 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12852 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12853 {
12854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12855 "Failed to set an event");
12856
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 }
12859 return;
12860}
12861
12862
12863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012866
12867 @param pWDICtx: pointer to the WLAN DAL context
12868 pEventData: pointer to the event information structure
12869
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 @see
12871 @return Result of the function call
12872*/
12873WDI_Status
12874WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012875(
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 WDI_ControlBlockType* pWDICtx,
12877 WDI_EventInfoType* pEventData
12878)
12879{
Jeff Johnson43971f52012-07-17 12:26:56 -070012880 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 wpt_uint16 usDataOffset = 0;
12884 wpt_uint16 usSendSize = 0;
12885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12886
12887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 -------------------------------------------------------------------------*/
12890 if (( NULL == pEventData ) ||
12891 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12892 {
12893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012896 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 }
12898
12899 /*-----------------------------------------------------------------------
12900 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 0,
12905 &pSendBuffer, &usDataOffset, &usSendSize))||
12906 ( usSendSize < (usDataOffset )))
12907 {
12908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12909 "Unable to get send buffer in Enter IMPS req %x %x",
12910 pEventData, wdiEnterImpsRspCb);
12911 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012912 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 }
12914
12915 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012916 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12917 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 {
12919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12920 "WDI Init failed to reset an event");
12921
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012923 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 }
12925
12926 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012927 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12928 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12930 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12931 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012932 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012933 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012934
12935 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012936 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012938 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12939 WDI_SET_POWER_STATE_TIMEOUT);
12940 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 {
12942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12943 "WDI Init failed to wait on an event");
12944
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012946 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 }
12948
12949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12953 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012954
12955fail:
12956 // Release the message buffer so we don't leak
12957 wpalMemoryFree(pSendBuffer);
12958
12959failRequest:
12960 //WDA should have failure check to avoid the memory leak
12961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012962}/*WDI_ProcessEnterImpsReq*/
12963
12964/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012967
12968 @param pWDICtx: pointer to the WLAN DAL context
12969 pEventData: pointer to the event information structure
12970
Jeff Johnson295189b2012-06-20 16:38:30 -070012971 @see
12972 @return Result of the function call
12973*/
12974WDI_Status
12975WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012976(
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 WDI_ControlBlockType* pWDICtx,
12978 WDI_EventInfoType* pEventData
12979)
12980{
12981 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 wpt_uint16 usDataOffset = 0;
12984 wpt_uint16 usSendSize = 0;
12985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12986
12987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 -------------------------------------------------------------------------*/
12990 if (( NULL == pEventData ) ||
12991 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12992 {
12993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 }
12998
12999 /*-----------------------------------------------------------------------
13000 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 0,
13005 &pSendBuffer, &usDataOffset, &usSendSize))||
13006 ( usSendSize < (usDataOffset )))
13007 {
13008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13009 "Unable to get send buffer in Exit IMPS req %x %x",
13010 pEventData, wdiExitImpsRspCb);
13011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 }
13014
13015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13019 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013020}/*WDI_ProcessExitImpsReq*/
13021
13022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013025
13026 @param pWDICtx: pointer to the WLAN DAL context
13027 pEventData: pointer to the event information structure
13028
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 @see
13030 @return Result of the function call
13031*/
13032WDI_Status
13033WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013034(
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 WDI_ControlBlockType* pWDICtx,
13036 WDI_EventInfoType* pEventData
13037)
13038{
13039 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13040 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 wpt_uint16 usDataOffset = 0;
13043 wpt_uint16 usSendSize = 0;
13044 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013045 wpt_status wptStatus;
13046
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13048
13049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 -------------------------------------------------------------------------*/
13052 if (( NULL == pEventData ) ||
13053 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13054 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13055 {
13056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013059 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 }
13061
13062 /*-----------------------------------------------------------------------
13063 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 sizeof(enterBmpsReq),
13068 &pSendBuffer, &usDataOffset, &usSendSize))||
13069 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13070 {
13071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13072 "Unable to get send buffer in Enter BMPS req %x %x %x",
13073 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13074 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013075 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 }
13077
13078 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013079 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13080 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 {
13082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13083 "WDI Init failed to reset an event");
13084
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013086 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 }
13088
13089 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013090 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13091 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13092 {
13093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13094 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13095 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013096 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013097 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013098
13099/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013100 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013102 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13103 WDI_SET_POWER_STATE_TIMEOUT);
13104 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 {
13106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13107 "WDI Init failed to wait on an event");
13108
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013110 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 }
13112
13113 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13114
13115 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13116 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13117 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13118 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13119
13120 // For CCX and 11R Roaming
13121 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13122 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13123 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13124
13125 wpalMemoryCopy( pSendBuffer+usDataOffset,
13126 &enterBmpsReq,
13127 sizeof(enterBmpsReq));
13128
13129 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013131
13132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13136 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013137
13138fail:
13139 // Release the message buffer so we don't leak
13140 wpalMemoryFree(pSendBuffer);
13141
13142failRequest:
13143 //WDA should have failure check to avoid the memory leak
13144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013145}/*WDI_ProcessEnterBmpsReq*/
13146
13147/**
13148 @brief Process Exit BMPS Request function (called when Main FSM
13149 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013150
13151 @param pWDICtx: pointer to the WLAN DAL context
13152 pEventData: pointer to the event information structure
13153
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 @see
13155 @return Result of the function call
13156*/
13157WDI_Status
13158WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013159(
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 WDI_ControlBlockType* pWDICtx,
13161 WDI_EventInfoType* pEventData
13162)
13163{
13164 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13165 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 wpt_uint16 usDataOffset = 0;
13168 wpt_uint16 usSendSize = 0;
13169 tHalExitBmpsReqParams exitBmpsReq;
13170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13171
13172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 -------------------------------------------------------------------------*/
13175 if (( NULL == pEventData ) ||
13176 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13177 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13178 {
13179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 }
13184
13185 /*-----------------------------------------------------------------------
13186 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 sizeof(exitBmpsReq),
13191 &pSendBuffer, &usDataOffset, &usSendSize))||
13192 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13193 {
13194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13195 "Unable to get send buffer in Exit BMPS req %x %x %x",
13196 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 }
13200 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13201
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13203
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 wpalMemoryCopy( pSendBuffer+usDataOffset,
13205 &exitBmpsReq,
13206 sizeof(exitBmpsReq));
13207
13208 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013210
13211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013212 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13215 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013216}/*WDI_ProcessExitBmpsReq*/
13217
13218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013221
13222 @param pWDICtx: pointer to the WLAN DAL context
13223 pEventData: pointer to the event information structure
13224
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 @see
13226 @return Result of the function call
13227*/
13228WDI_Status
13229WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013230(
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 WDI_ControlBlockType* pWDICtx,
13232 WDI_EventInfoType* pEventData
13233)
13234{
13235 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13236 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 wpt_uint16 usDataOffset = 0;
13239 wpt_uint16 usSendSize = 0;
13240 tUapsdReqParams enterUapsdReq;
13241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13242
13243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 -------------------------------------------------------------------------*/
13246 if (( NULL == pEventData ) ||
13247 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13248 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13249 {
13250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 }
13255
13256 /*-----------------------------------------------------------------------
13257 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 sizeof(enterUapsdReq),
13262 &pSendBuffer, &usDataOffset, &usSendSize))||
13263 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13264 {
13265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13266 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13267 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 }
13271
13272 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13273 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13274 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13275 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13276 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13277 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13278 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13279 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 wpalMemoryCopy( pSendBuffer+usDataOffset,
13283 &enterUapsdReq,
13284 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013285
13286 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013288
13289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13293 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013294}/*WDI_ProcessEnterUapsdReq*/
13295
13296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013299
13300 @param pWDICtx: pointer to the WLAN DAL context
13301 pEventData: pointer to the event information structure
13302
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 @see
13304 @return Result of the function call
13305*/
13306WDI_Status
13307WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013308(
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 WDI_ControlBlockType* pWDICtx,
13310 WDI_EventInfoType* pEventData
13311)
13312{
13313 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 wpt_uint16 usDataOffset = 0;
13316 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013317 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13318 wpt_uint8 bssIdx = 0;
13319
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13321
13322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 -------------------------------------------------------------------------*/
13325 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013326 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013327 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13328 {
13329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 }
13334
13335 /*-----------------------------------------------------------------------
13336 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013340 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013342 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 {
13344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13345 "Unable to get send buffer in Exit UAPSD req %x %x",
13346 pEventData, wdiExitUapsdRspCb);
13347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 }
13350
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013351 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13352
13353 wpalMemoryCopy( pSendBuffer+usDataOffset,
13354 &bssIdx,
13355 sizeof(wpt_uint8));
13356
13357 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13358 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13359
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013361 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013362 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13364 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013365}/*WDI_ProcessExitUapsdReq*/
13366
13367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013370
13371 @param pWDICtx: pointer to the WLAN DAL context
13372 pEventData: pointer to the event information structure
13373
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 @see
13375 @return Result of the function call
13376*/
13377WDI_Status
13378WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013379(
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 WDI_ControlBlockType* pWDICtx,
13381 WDI_EventInfoType* pEventData
13382)
13383{
13384 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13385 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 wpt_uint16 usDataOffset = 0;
13388 wpt_uint16 usSendSize = 0;
13389 tUapsdInfo uapsdAcParamsReq;
13390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13391
13392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 -------------------------------------------------------------------------*/
13395 if (( NULL == pEventData ) ||
13396 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13397 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13398 {
13399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 }
13404
13405 /*-----------------------------------------------------------------------
13406 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 sizeof(uapsdAcParamsReq),
13411 &pSendBuffer, &usDataOffset, &usSendSize))||
13412 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13413 {
13414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13415 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13416 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 }
13420
13421 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13422 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13423 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13424 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13425 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13426 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13427
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 wpalMemoryCopy( pSendBuffer+usDataOffset,
13429 &uapsdAcParamsReq,
13430 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013431
13432 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013434
13435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013438 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13439 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013440}/*WDI_ProcessSetUapsdAcParamsReq*/
13441
13442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013445
13446 @param pWDICtx: pointer to the WLAN DAL context
13447 pEventData: pointer to the event information structure
13448
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 @see
13450 @return Result of the function call
13451*/
13452WDI_Status
13453WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013454(
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 WDI_ControlBlockType* pWDICtx,
13456 WDI_EventInfoType* pEventData
13457)
13458{
13459 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13460 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 wpt_uint16 usDataOffset = 0;
13463 wpt_uint16 usSendSize = 0;
13464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13465
13466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 -------------------------------------------------------------------------*/
13469 if (( NULL == pEventData ) ||
13470 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13471 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13472 {
13473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 }
13478
13479 /*-----------------------------------------------------------------------
13480 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13485 &pSendBuffer, &usDataOffset, &usSendSize))||
13486 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13487 {
13488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13489 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13490 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 }
13494
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 wpalMemoryCopy( pSendBuffer+usDataOffset,
13496 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13497 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013498
13499 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013501
13502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13506 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013507}/*WDI_ProcessUpdateUapsdParamsReq*/
13508
13509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013512
13513 @param pWDICtx: pointer to the WLAN DAL context
13514 pEventData: pointer to the event information structure
13515
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 @see
13517 @return Result of the function call
13518*/
13519WDI_Status
13520WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013521(
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 WDI_ControlBlockType* pWDICtx,
13523 WDI_EventInfoType* pEventData
13524)
13525{
13526 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13527 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 wpt_uint16 usDataOffset = 0;
13530 wpt_uint16 usSendSize = 0;
13531 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13532
13533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13534
13535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 -------------------------------------------------------------------------*/
13538 if (( NULL == pEventData ) ||
13539 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13540 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13541 {
13542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 }
13547
13548 /*-----------------------------------------------------------------------
13549 Get message buffer
13550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 sizeof(halRxpFilterParams),
13553 &pSendBuffer, &usDataOffset, &usSendSize))||
13554 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13555 {
13556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13557 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13558 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 }
13562
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13567
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 wpalMemoryCopy( pSendBuffer+usDataOffset,
13569 &halRxpFilterParams,
13570 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013571
13572 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013574
13575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13579 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013580}/*WDI_ProcessConfigureRxpFilterReq*/
13581
13582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013585
13586 @param pWDICtx: pointer to the WLAN DAL context
13587 pEventData: pointer to the event information structure
13588
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 @see
13590 @return Result of the function call
13591*/
13592WDI_Status
13593WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013594(
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 WDI_ControlBlockType* pWDICtx,
13596 WDI_EventInfoType* pEventData
13597)
13598{
13599 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13600 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 wpt_uint16 usDataOffset = 0;
13603 wpt_uint16 usSendSize = 0;
13604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13605
13606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 -------------------------------------------------------------------------*/
13609 if (( NULL == pEventData ) ||
13610 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13611 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13612 {
13613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013617 }
13618
13619 /*-----------------------------------------------------------------------
13620 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13625 &pSendBuffer, &usDataOffset, &usSendSize))||
13626 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13627 {
13628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13629 "Unable to get send buffer in Set beacon filter req %x %x %x",
13630 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 }
13634
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 wpalMemoryCopy( pSendBuffer+usDataOffset,
13636 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13637 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13638 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13639 &pwdiBeaconFilterParams->aFilters[0],
13640 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013641
13642 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013643 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013644
13645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13649 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013650}/*WDI_ProcessSetBeaconFilterReq*/
13651
13652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013655
13656 @param pWDICtx: pointer to the WLAN DAL context
13657 pEventData: pointer to the event information structure
13658
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 @see
13660 @return Result of the function call
13661*/
13662WDI_Status
13663WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013664(
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 WDI_ControlBlockType* pWDICtx,
13666 WDI_EventInfoType* pEventData
13667)
13668{
13669 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13670 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 wpt_uint16 usDataOffset = 0;
13673 wpt_uint16 usSendSize = 0;
13674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13675
13676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 -------------------------------------------------------------------------*/
13679 if (( NULL == pEventData ) ||
13680 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13681 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13682 {
13683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 }
13688
13689 /*-----------------------------------------------------------------------
13690 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13695 &pSendBuffer, &usDataOffset, &usSendSize))||
13696 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13697 {
13698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13699 "Unable to get send buffer in remove beacon filter req %x %x %x",
13700 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 }
13704
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 wpalMemoryCopy( pSendBuffer+usDataOffset,
13706 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13707 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013708
13709 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013711
13712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13716 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013717}
13718
13719/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013720 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013722
13723 @param pWDICtx: pointer to the WLAN DAL context
13724 pEventData: pointer to the event information structure
13725
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 @see
13727 @return Result of the function call
13728*/
13729WDI_Status
13730WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013731(
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 WDI_ControlBlockType* pWDICtx,
13733 WDI_EventInfoType* pEventData
13734)
13735{
13736 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13737 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 wpt_uint16 usDataOffset = 0;
13740 wpt_uint16 usSendSize = 0;
13741 tHalRSSIThresholds rssiThresholdsReq;
13742 WDI_Status ret_status = 0;
13743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13744
13745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 -------------------------------------------------------------------------*/
13748 if (( NULL == pEventData ) ||
13749 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13750 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13751 {
13752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 }
13757
13758 /*-----------------------------------------------------------------------
13759 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013762 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013763 sizeof(rssiThresholdsReq),
13764 &pSendBuffer, &usDataOffset, &usSendSize))||
13765 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13766 {
13767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13768 "Unable to get send buffer in remove beacon filter req %x %x %x",
13769 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 }
13773
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013784 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13794
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 wpalMemoryCopy( pSendBuffer+usDataOffset,
13796 &rssiThresholdsReq,
13797 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013798
13799 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013801
13802 /*-------------------------------------------------------------------------
13803 Send Set threshold req to HAL
13804 -------------------------------------------------------------------------*/
13805 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13806 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13807 {
13808 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13809 // req. Then as a result of processing the threshold cross ind, we trigger
13810 // a Set threshold req, then we need to indicate to WDI that it needs to
13811 // go to busy state as a result of the indication as we sent a req in the
13812 // same WDI context.
13813 // Hence expected state transition is to busy.
13814 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13815 }
13816
13817 return ret_status;
13818}
13819
13820/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013822 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013823
13824 @param pWDICtx: pointer to the WLAN DAL context
13825 pEventData: pointer to the event information structure
13826
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 @see
13828 @return Result of the function call
13829*/
13830WDI_Status
13831WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013832(
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 WDI_ControlBlockType* pWDICtx,
13834 WDI_EventInfoType* pEventData
13835)
13836{
13837 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13838 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 wpt_uint16 usDataOffset = 0;
13841 wpt_uint16 usSendSize = 0;
13842 tHalHostOffloadReq hostOffloadParams;
13843 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013844 wpt_uint8 ucCurrentBSSSesIdx = 0;
13845 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013846
13847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13848
13849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 -------------------------------------------------------------------------*/
13852 if (( NULL == pEventData ) ||
13853 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13854 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13855 {
13856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013859 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 }
13861
13862 /*-----------------------------------------------------------------------
13863 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13868 &pSendBuffer, &usDataOffset, &usSendSize))||
13869 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13870 {
13871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13872 "Unable to get send buffer in host offload req %x %x %x",
13873 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13874 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013875 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 }
13877
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013878 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13879 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13880 &pBSSSes);
13881 if ( NULL == pBSSSes )
13882 {
13883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013884 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13885 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013886 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013887 }
13888
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13890 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013891
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13893 {
13894 // ARP Offload
13895 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13896 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13897 4);
13898 }
13899 else
13900 {
13901 // NS Offload
13902 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13903 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13904 16);
13905
13906#ifdef WLAN_NS_OFFLOAD
13907 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13908 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13909 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13910 16);
13911 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13912 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13913 16);
13914 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13915 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13916 16);
13917 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13918 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13919 16);
13920 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13921 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13922 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013923 nsOffloadParams.srcIPv6AddrValid =
13924 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13925
13926 nsOffloadParams.targetIPv6Addr1Valid =
13927 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13928
13929 nsOffloadParams.targetIPv6Addr2Valid =
13930 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13931
13932 nsOffloadParams.slotIndex =
13933 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013934
Jeff Johnson295189b2012-06-20 16:38:30 -070013935#endif // WLAN_NS_OFFLOAD
13936 }
13937
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013938 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13939
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 // copy hostOffloadParams into pSendBuffer
13941 wpalMemoryCopy( pSendBuffer+usDataOffset,
13942 &hostOffloadParams,
13943 sizeof(hostOffloadParams));
13944
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013945 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013947 // copy nsOffloadParams into pSendBuffer
13948 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013949 &nsOffloadParams,
13950 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013951 }
13952 else
13953 {
13954#ifdef WLAN_NS_OFFLOAD
13955 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13956 {
13957 // copy nsOffloadParams into pSendBuffer
13958 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13959 &nsOffloadParams,
13960 sizeof(nsOffloadParams));
13961 }
13962#endif
13963 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013964
13965 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013967
13968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13972 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013973
13974fail:
13975 // Release the message buffer so we don't leak
13976 wpalMemoryFree(pSendBuffer);
13977
13978failRequest:
13979 //WDA should have failure check to avoid the memory leak
13980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013981}/*WDI_ProcessHostOffloadReq*/
13982
13983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013986
13987 @param pWDICtx: pointer to the WLAN DAL context
13988 pEventData: pointer to the event information structure
13989
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 @see
13991 @return Result of the function call
13992*/
13993WDI_Status
13994WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013995(
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 WDI_ControlBlockType* pWDICtx,
13997 WDI_EventInfoType* pEventData
13998)
13999{
14000 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14001 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 wpt_uint16 usDataOffset = 0;
14004 wpt_uint16 usSendSize = 0;
14005 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014006 wpt_uint8 ucCurrentBSSSesIdx = 0;
14007 WDI_BSSSessionType* pBSSSes = NULL;
14008
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14010
14011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 -------------------------------------------------------------------------*/
14014 if (( NULL == pEventData ) ||
14015 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14016 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14017 {
14018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14019 "Invalid parameters in Keep Alive req");
14020 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014021 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 }
14023
14024 /*-----------------------------------------------------------------------
14025 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014026 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 sizeof(keepAliveReq),
14030 &pSendBuffer, &usDataOffset, &usSendSize))||
14031 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14032 {
14033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14034 "Unable to get send buffer in keep alive req %x %x %x",
14035 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14036 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014037 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 }
14039
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014040 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14041 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14042 &pBSSSes);
14043 if ( NULL == pBSSSes )
14044 {
14045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014046 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014047 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014048 }
14049
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14051 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14052
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014053 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014054
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14056 {
14057 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14058 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14059 HAL_IPV4_ADDR_LEN);
14060 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14061 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 wpalMemoryCopy(keepAliveReq.destMacAddr,
14064 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14065 HAL_MAC_ADDR_LEN);
14066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014067
14068 wpalMemoryCopy( pSendBuffer+usDataOffset,
14069 &keepAliveReq,
14070 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014071
14072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14073 "Process keep alive req %d",sizeof(keepAliveReq));
14074
14075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14076 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14077
14078 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014080
14081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14082 "Sending keep alive req to HAL");
14083
14084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14088 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014089
14090fail:
14091 // Release the message buffer so we don't leak
14092 wpalMemoryFree(pSendBuffer);
14093
14094failRequest:
14095 //WDA should have failure check to avoid the memory leak
14096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014097}/*WDI_ProcessKeepAliveReq*/
14098
14099
14100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014103
14104 @param pWDICtx: pointer to the WLAN DAL context
14105 pEventData: pointer to the event information structure
14106
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 @see
14108 @return Result of the function call
14109*/
14110WDI_Status
14111WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014112(
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 WDI_ControlBlockType* pWDICtx,
14114 WDI_EventInfoType* pEventData
14115)
14116{
14117 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14118 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 wpt_uint16 usDataOffset = 0;
14121 wpt_uint16 usSendSize = 0;
14122 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014123 wpt_uint8 ucCurrentBSSSesIdx = 0;
14124 WDI_BSSSessionType* pBSSSes = NULL;
14125
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14127
14128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 -------------------------------------------------------------------------*/
14131 if (( NULL == pEventData ) ||
14132 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14133 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14134 {
14135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014138 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 }
14140
14141 /*-----------------------------------------------------------------------
14142 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 sizeof(wowlAddBcPtrnReq),
14147 &pSendBuffer, &usDataOffset, &usSendSize))||
14148 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14149 {
14150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14151 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14152 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14153 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014154 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 }
14156
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014157 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14158 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14159 &pBSSSes);
14160 if ( NULL == pBSSSes )
14161 {
14162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014163 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014164 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014165 }
14166
Jeff Johnsone7245742012-09-05 17:12:55 -070014167 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014168 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14175
14176 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14177 {
14178 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14179 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14180 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14181 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14182 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14183 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14184 }
14185 else
14186 {
14187 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14188 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14189 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14190 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14191 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14192 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14193
14194 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14195 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14196 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14197 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14198 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14199 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14200 }
14201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014202 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14203
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 wpalMemoryCopy( pSendBuffer+usDataOffset,
14205 &wowlAddBcPtrnReq,
14206 sizeof(wowlAddBcPtrnReq));
14207
14208 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014210
14211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014212 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14215 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014216fail:
14217 // Release the message buffer so we don't leak
14218 wpalMemoryFree(pSendBuffer);
14219
14220failRequest:
14221 //WDA should have failure check to avoid the memory leak
14222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014223}/*WDI_ProcessWowlAddBcPtrnReq*/
14224
14225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014228
14229 @param pWDICtx: pointer to the WLAN DAL context
14230 pEventData: pointer to the event information structure
14231
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 @see
14233 @return Result of the function call
14234*/
14235WDI_Status
14236WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014237(
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 WDI_ControlBlockType* pWDICtx,
14239 WDI_EventInfoType* pEventData
14240)
14241{
14242 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14243 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 wpt_uint16 usDataOffset = 0;
14246 wpt_uint16 usSendSize = 0;
14247 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014248 wpt_uint8 ucCurrentBSSSesIdx = 0;
14249 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14251
14252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 -------------------------------------------------------------------------*/
14255 if (( NULL == pEventData ) ||
14256 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14257 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14258 {
14259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014262 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 }
14264
14265 /*-----------------------------------------------------------------------
14266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 sizeof(wowlDelBcPtrnReq),
14271 &pSendBuffer, &usDataOffset, &usSendSize))||
14272 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14273 {
14274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14275 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14276 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14277 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014278 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 }
14280
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14282 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14283 &pBSSSes);
14284 if ( NULL == pBSSSes )
14285 {
14286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014287 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014288 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014289 }
14290
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014293
14294 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14295
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 wpalMemoryCopy( pSendBuffer+usDataOffset,
14297 &wowlDelBcPtrnReq,
14298 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014299
14300 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014302
14303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014304 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14307 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014308
14309fail:
14310 // Release the message buffer so we don't leak
14311 wpalMemoryFree(pSendBuffer);
14312
14313failRequest:
14314 //WDA should have failure check to avoid the memory leak
14315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014316}/*WDI_ProcessWowlDelBcPtrnReq*/
14317
14318/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014321
14322 @param pWDICtx: pointer to the WLAN DAL context
14323 pEventData: pointer to the event information structure
14324
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 @see
14326 @return Result of the function call
14327*/
14328WDI_Status
14329WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014330(
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 WDI_ControlBlockType* pWDICtx,
14332 WDI_EventInfoType* pEventData
14333)
14334{
14335 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14336 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 wpt_uint16 usDataOffset = 0;
14339 wpt_uint16 usSendSize = 0;
14340 tHalWowlEnterParams wowlEnterReq;
14341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14342
14343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 -------------------------------------------------------------------------*/
14346 if (( NULL == pEventData ) ||
14347 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14348 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14349 {
14350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 }
14355
14356 /*-----------------------------------------------------------------------
14357 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 sizeof(wowlEnterReq),
14362 &pSendBuffer, &usDataOffset, &usSendSize))||
14363 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14364 {
14365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14366 "Unable to get send buffer in Wowl enter req %x %x %x",
14367 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 }
14371
Kumar Anand21a26022013-07-22 14:35:34 -070014372 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14373
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014388 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14390
14391#ifdef WLAN_WAKEUP_EVENTS
14392 wowlEnterReq.ucWoWEAPIDRequestEnable =
14393 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14394
14395 wowlEnterReq.ucWoWEAPOL4WayEnable =
14396 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14397
14398 wowlEnterReq.ucWowNetScanOffloadMatch =
14399 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14400
14401 wowlEnterReq.ucWowGTKRekeyError =
14402 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14403
14404 wowlEnterReq.ucWoWBSSConnLoss =
14405 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14406#endif // WLAN_WAKEUP_EVENTS
14407
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014408 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14409
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14411 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14412 sizeof(tSirMacAddr));
14413
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 wpalMemoryCopy( pSendBuffer+usDataOffset,
14415 &wowlEnterReq,
14416 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014417
14418 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014420
14421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14425 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014426}/*WDI_ProcessWowlEnterReq*/
14427
14428/**
14429 @brief Process Wowl exit Request function (called when Main FSM
14430 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014431
14432 @param pWDICtx: pointer to the WLAN DAL context
14433 pEventData: pointer to the event information structure
14434
Jeff Johnson295189b2012-06-20 16:38:30 -070014435 @see
14436 @return Result of the function call
14437*/
14438WDI_Status
14439WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014440(
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 WDI_ControlBlockType* pWDICtx,
14442 WDI_EventInfoType* pEventData
14443)
14444{
14445 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014446 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 wpt_uint16 usDataOffset = 0;
14449 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014450 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14452
14453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 -------------------------------------------------------------------------*/
14456 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014457 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14459 {
14460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 }
14465
14466 /*-----------------------------------------------------------------------
14467 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014471 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014473 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 {
14475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14476 "Unable to get send buffer in Wowl Exit req %x %x",
14477 pEventData, wdiWowlExitCb);
14478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 }
14481
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014482 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14483
14484 wpalMemoryCopy( pSendBuffer+usDataOffset,
14485 &wowlExitparams,
14486 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14491 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014492}/*WDI_ProcessWowlExitReq*/
14493
14494/**
14495 @brief Process Configure Apps Cpu Wakeup State Request function
14496 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014497
14498 @param pWDICtx: pointer to the WLAN DAL context
14499 pEventData: pointer to the event information structure
14500
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 @see
14502 @return Result of the function call
14503*/
14504WDI_Status
14505WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014506(
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 WDI_ControlBlockType* pWDICtx,
14508 WDI_EventInfoType* pEventData
14509)
14510{
14511 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14512 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 wpt_uint16 usDataOffset = 0;
14515 wpt_uint16 usSendSize = 0;
14516 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14518
14519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 -------------------------------------------------------------------------*/
14522 if (( NULL == pEventData ) ||
14523 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14524 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14525 {
14526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 }
14531
14532 /*-----------------------------------------------------------------------
14533 Get message buffer
14534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 sizeof(halCfgAppsCpuWakeupStateReqParams),
14537 &pSendBuffer, &usDataOffset, &usSendSize))||
14538 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14539 {
14540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14541 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14542 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 }
14546
Jeff Johnsone7245742012-09-05 17:12:55 -070014547 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14549
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 wpalMemoryCopy( pSendBuffer+usDataOffset,
14551 &halCfgAppsCpuWakeupStateReqParams,
14552 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014553
14554 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014556
14557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14561 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14562 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014563}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14564
14565#ifdef WLAN_FEATURE_VOWIFI_11R
14566/**
14567 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14568 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014569
14570 @param pWDICtx: pointer to the WLAN DAL context
14571 pEventData: pointer to the event information structure
14572
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 @see
14574 @return Result of the function call
14575*/
14576WDI_Status
14577WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014578(
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 WDI_ControlBlockType* pWDICtx,
14580 WDI_EventInfoType* pEventData
14581)
14582{
14583 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14584 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 wpt_uint16 usDataOffset = 0;
14589 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 wpt_macAddr macBSSID;
14592 tAggrAddTsReq halAggrAddTsReq;
14593 int i;
14594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14595
14596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014598 -------------------------------------------------------------------------*/
14599 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14600 ( NULL == pEventData->pCBfnc ))
14601 {
14602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 }
14607 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14608 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14609 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14610 /*-------------------------------------------------------------------------
14611 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 -------------------------------------------------------------------------*/
14614 wpalMutexAcquire(&pWDICtx->wptMutex);
14615
14616 /*------------------------------------------------------------------------
14617 Find the BSS for which the request is made and identify WDI session
14618 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014619 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14620 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 &macBSSID))
14622 {
14623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14624 "This station does not exist in the WDI Station Table %d");
14625 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 }
14628
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14630 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14633 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14634 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014635
14636 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014639
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 /*------------------------------------------------------------------------
14641 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014642 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 ------------------------------------------------------------------------*/
14644 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14645 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14647 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14648 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014649
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 }
14654
14655 wpalMutexRelease(&pWDICtx->wptMutex);
14656 /*-----------------------------------------------------------------------
14657 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 sizeof(tAggrAddTsParams),
14662 &pSendBuffer, &usDataOffset, &usSendSize))||
14663 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14664 {
14665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14666 "Unable to get send buffer in set bss key req %x %x %x",
14667 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 }
14671
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14676
14677 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14678 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14685 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14688 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14691 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14694 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14697 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14700 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14703 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14706 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014707 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014711
14712
14713 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14743 }
14744
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 wpalMemoryCopy( pSendBuffer+usDataOffset,
14746 &halAggrAddTsReq,
14747 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014748
14749 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751
14752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014758}/*WDI_ProcessAggrAddTSpecReq*/
14759#endif /* WLAN_FEATURE_VOWIFI_11R */
14760
14761/**
14762 @brief Process Shutdown Request function (called when Main FSM
14763 allows it)
14764
14765 @param pWDICtx: pointer to the WLAN DAL context
14766 pEventData: pointer to the event information structure
14767
14768 @see
14769 @return Result of the function call
14770*/
14771WDI_Status
14772WDI_ProcessShutdownReq
14773(
14774 WDI_ControlBlockType* pWDICtx,
14775 WDI_EventInfoType* pEventData
14776 )
14777{
14778 wpt_status wptStatus;
14779
14780
14781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14782
14783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 -------------------------------------------------------------------------*/
14786 if ( NULL == pEventData )
14787 {
14788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 WDI_ASSERT(0);
14791 return WDI_STATUS_E_FAILURE;
14792 }
14793
14794 wpalMutexAcquire(&pWDICtx->wptMutex);
14795
14796
14797 gWDIInitialized = eWLAN_PAL_FALSE;
14798 /*! TO DO: stop the data services */
14799 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14800 {
14801 /*Stop the STA Table !UT- check this logic again
14802 It is safer to do it here than on the response - because a stop is imminent*/
14803 WDI_STATableStop(pWDICtx);
14804
14805 /* Stop Transport Driver, DXE */
14806 WDTS_Stop(pWDICtx);
14807 }
14808
14809 /*Clear all pending request*/
14810 WDI_ClearPendingRequests(pWDICtx);
14811 /* Close Data transport*/
14812 /* FTM mode does not open Data Path */
14813 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14814 {
14815 WDTS_Close(pWDICtx);
14816 }
14817 /*Close the STA Table !UT- check this logic again*/
14818 WDI_STATableClose(pWDICtx);
14819 /*close the PAL */
14820 wptStatus = wpalClose(pWDICtx->pPALContext);
14821 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14822 {
14823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14824 "Failed to wpal Close %d", wptStatus);
14825 WDI_ASSERT(0);
14826 }
14827
14828 /*Transition back to init state*/
14829 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14830
14831 wpalMutexRelease(&pWDICtx->wptMutex);
14832
14833 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014835
14836
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838}/*WDI_ProcessShutdownReq*/
14839
14840/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014842========================================================================*/
14843
14844/**
14845 @brief Process Start Response function (called when a response
14846 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014847
14848 @param pWDICtx: pointer to the WLAN DAL context
14849 pEventData: pointer to the event information structure
14850
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 @see
14852 @return Result of the function call
14853*/
14854WDI_Status
14855WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014856(
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 WDI_ControlBlockType* pWDICtx,
14858 WDI_EventInfoType* pEventData
14859)
14860{
14861 WDI_StartRspParamsType wdiRspParams;
14862 WDI_StartRspCb wdiStartRspCb = NULL;
14863
14864 tHalMacStartRspParams* startRspParams;
14865
14866#ifndef HAL_SELF_STA_PER_BSS
14867 WDI_AddStaParams wdiAddSTAParam = {0};
14868#endif
14869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14870
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 -------------------------------------------------------------------------*/
14875 if (( NULL == pEventData ) ||
14876 ( NULL == pEventData->pEventData) ||
14877 ( NULL == wdiStartRspCb ))
14878 {
14879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 }
14884
14885 /*-------------------------------------------------------------------------
14886 Extract response and send it to UMAC
14887 -------------------------------------------------------------------------*/
14888 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14889 {
14890 // not enough data was received
14891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14892 "Invalid response length in Start Resp Expect %x Rcvd %x",
14893 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 }
14897
14898 /*-------------------------------------------------------------------------
14899 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 -------------------------------------------------------------------------*/
14902 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14903
14904 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14905 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14906 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14907 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14908 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14909 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14910 wdiRspParams.wlanReportedVersion.major =
14911 startRspParams->wcnssWlanVersion.major;
14912 wdiRspParams.wlanReportedVersion.minor =
14913 startRspParams->wcnssWlanVersion.minor;
14914 wdiRspParams.wlanReportedVersion.version =
14915 startRspParams->wcnssWlanVersion.version;
14916 wdiRspParams.wlanReportedVersion.revision =
14917 startRspParams->wcnssWlanVersion.revision;
14918 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14919 startRspParams->wcnssCrmVersionString,
14920 sizeof(wdiRspParams.wcnssSoftwareVersion));
14921 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14922 startRspParams->wcnssWlanVersionString,
14923 sizeof(wdiRspParams.wcnssHardwareVersion));
14924 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14925
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014926 /*Save the HAL Version*/
14927 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14928
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 wpalMutexAcquire(&pWDICtx->wptMutex);
14930 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14931 {
14932 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14933
14934 /*Cache the start response for further use*/
14935 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 sizeof(pWDICtx->wdiCachedStartRspParams));
14938
14939 }
14940 else
14941 {
14942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14943 "Failed to start device with status %s(%d)",
14944 WDI_getHALStatusMsgString(startRspParams->status),
14945 startRspParams->status);
14946
14947 /*Set the expected state transition to stopped - because the start has
14948 failed*/
14949 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14950
14951 wpalMutexRelease(&pWDICtx->wptMutex);
14952
14953 /*Notify UMAC*/
14954 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014955
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14957
14958 /*Although the response is an error - it was processed by our function
14959 so as far as the caller is concerned this is a succesful reponse processing*/
14960 return WDI_STATUS_SUCCESS;
14961 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014962
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 wpalMutexRelease(&pWDICtx->wptMutex);
14964
14965 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14966 {
14967 /* FTM mode does not need to execute below */
14968 /* Notify UMAC */
14969 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14970 return WDI_STATUS_SUCCESS;
14971 }
14972
14973 /* START the Data transport */
14974 WDTS_startTransport(pWDICtx);
14975
14976 /*Start the STA Table !- check this logic again*/
14977 WDI_STATableStart(pWDICtx);
14978
14979#ifndef HAL_SELF_STA_PER_BSS
14980 /* Store the Self STA Index */
14981 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14982
14983 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14984 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14985 WDI_MAC_ADDR_LEN);
14986
14987 /* At this point add the self-STA */
14988
14989 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14990 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14991 /*! TO DO: wdiAddSTAParam.dpuSig */
14992 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14993 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14994 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14995
14996 //all DPU indices are the same for self STA
14997 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14998 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014999 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15001 WDI_MAC_ADDR_LEN);
15002 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15003 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15004
15005 /* Note: Since we don't get an explicit config STA request for self STA, we
15006 add the self STA upon receiving the Start response message. But the
15007 self STA entry in the table is deleted when WDI gets an explicit delete STA
15008 request */
15009 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15010#endif
15011
15012 /*Notify UMAC*/
15013 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15014
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015016}/*WDI_ProcessStartRsp*/
15017
15018
15019/**
15020 @brief Process Stop Response function (called when a response
15021 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015022
15023 @param pWDICtx: pointer to the WLAN DAL context
15024 pEventData: pointer to the event information structure
15025
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 @see
15027 @return Result of the function call
15028*/
15029WDI_Status
15030WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015031(
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 WDI_ControlBlockType* pWDICtx,
15033 WDI_EventInfoType* pEventData
15034)
15035{
15036 WDI_Status wdiStatus;
15037 WDI_StopRspCb wdiStopRspCb = NULL;
15038
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15041
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 -------------------------------------------------------------------------*/
15046 if (( NULL == pEventData ) ||
15047 ( NULL == pEventData->pEventData) ||
15048 ( NULL == wdiStopRspCb ))
15049 {
15050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 }
15055
15056 /*-------------------------------------------------------------------------
15057 Extract response and send it to UMAC
15058 -------------------------------------------------------------------------*/
15059 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15060 {
15061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15062 "Invalid response length in Stop Resp %x %x",
15063 pEventData->uEventDataSize);
15064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 }
15067
15068 /*-------------------------------------------------------------------------
15069 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015072 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15073 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 sizeof(halMacStopRspMsg.stopRspParams));
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015077
15078 wpalMutexAcquire(&pWDICtx->wptMutex);
15079
15080 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 --------------------------------------------------------------------------*/
15083 if ( WDI_STATUS_SUCCESS != wdiStatus )
15084 {
15085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15086 "Failed to stop the device with status %s (%d)",
15087 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15088 halMacStopRspMsg.stopRspParams.status);
15089
Jeff Johnsone7245742012-09-05 17:12:55 -070015090 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15091
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015095
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15097
15098 /*Transition now as WDI may get preempted imediately after it sends
15099 up the Stop Response and it will not get to process the state transition
15100 from Main Rsp function*/
15101 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15102 wpalMutexRelease(&pWDICtx->wptMutex);
15103
15104 /*! TO DO: - STOP the Data transport */
15105
15106 /*Notify UMAC*/
15107 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15108
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015110}/*WDI_ProcessStopRsp*/
15111
15112/**
15113 @brief Process Close Rsp function (called when a response
15114 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015115
15116 @param pWDICtx: pointer to the WLAN DAL context
15117 pEventData: pointer to the event information structure
15118
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 @see
15120 @return Result of the function call
15121*/
15122WDI_Status
15123WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015124(
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 WDI_ControlBlockType* pWDICtx,
15126 WDI_EventInfoType* pEventData
15127)
15128{
15129 /*There is no close response comming from HAL - function just kept for
15130 simmetry */
15131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015133}/*WDI_ProcessCloseRsp*/
15134
15135
15136/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015138============================================================================*/
15139
15140/**
15141 @brief Process Init Scan Rsp function (called when a response
15142 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015143
15144 @param pWDICtx: pointer to the WLAN DAL context
15145 pEventData: pointer to the event information structure
15146
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 @see
15148 @return Result of the function call
15149*/
15150WDI_Status
15151WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015152(
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 WDI_ControlBlockType* pWDICtx,
15154 WDI_EventInfoType* pEventData
15155)
15156{
15157 WDI_Status wdiStatus;
15158 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015160 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15162
15163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 -------------------------------------------------------------------------*/
15166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15167 ( NULL == pEventData->pEventData))
15168 {
15169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 }
15174
15175 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15176 if( NULL == wdiInitScanRspCb)
15177 {
15178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015179 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 }
15183
15184 /*-------------------------------------------------------------------------
15185 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15189 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 sizeof(halInitScanRspMsg.initScanRspParams));
15191
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015193
15194 if ( pWDICtx->bInBmps )
15195 {
15196 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015197 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15198 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15200 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15201 WDI_ASSERT(0);
15202 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 }
15204
15205 /*Notify UMAC*/
15206 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15207
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015209}/*WDI_ProcessInitScanRsp*/
15210
15211
15212/**
15213 @brief Process Start Scan Rsp function (called when a response
15214 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015215
15216 @param pWDICtx: pointer to the WLAN DAL context
15217 pEventData: pointer to the event information structure
15218
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 @see
15220 @return Result of the function call
15221*/
15222WDI_Status
15223WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015224(
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 WDI_ControlBlockType* pWDICtx,
15226 WDI_EventInfoType* pEventData
15227)
15228{
15229 WDI_StartScanRspParamsType wdiStartScanParams;
15230 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015231
15232 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15234
15235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 -------------------------------------------------------------------------*/
15238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15239 ( NULL == pEventData->pEventData))
15240 {
15241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 }
15246
15247 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15248 if( NULL == wdiStartScanRspCb)
15249 {
15250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015251 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 }
15255
15256 /*-------------------------------------------------------------------------
15257 Extract response and send it to UMAC
15258 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15260 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 sizeof(halStartScanRspMsg.startScanRspParams));
15262
15263 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15264 halStartScanRspMsg.startScanRspParams.status);
15265#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 halStartScanRspMsg.startScanRspParams.startTSF,
15270 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015271#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015272
15273 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15274 {
15275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15276 "Start scan failed with status %s (%d)",
15277 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15278 halStartScanRspMsg.startScanRspParams.status);
15279 /* send the status to UMAC, don't return from here*/
15280 }
15281
15282 /*Notify UMAC*/
15283 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15284
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015286
15287}/*WDI_ProcessStartScanRsp*/
15288
15289
15290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015293
15294 @param pWDICtx: pointer to the WLAN DAL context
15295 pEventData: pointer to the event information structure
15296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 @see
15298 @return Result of the function call
15299*/
15300WDI_Status
15301WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015302(
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 WDI_ControlBlockType* pWDICtx,
15304 WDI_EventInfoType* pEventData
15305)
15306{
15307 WDI_Status wdiStatus;
15308 tHalEndScanRspMsg halEndScanRspMsg;
15309 WDI_EndScanRspCb wdiEndScanRspCb;
15310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15311
15312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 -------------------------------------------------------------------------*/
15315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15316 ( NULL == pEventData->pEventData))
15317 {
15318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 }
15323
15324 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15325
15326 /*-------------------------------------------------------------------------
15327 Extract response and send it to UMAC
15328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015329 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15330 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 sizeof(halEndScanRspMsg.endScanRspParams));
15332
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015334
15335 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15336 {
15337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15338 "End Scan failed with status %s (%d )",
15339 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15340 halEndScanRspMsg.endScanRspParams.status);
15341 /* send the status to UMAC, don't return from here*/
15342 }
15343
15344 /*Notify UMAC*/
15345 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15346
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015348}/*WDI_ProcessEndScanRsp*/
15349
15350
15351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015354
15355 @param pWDICtx: pointer to the WLAN DAL context
15356 pEventData: pointer to the event information structure
15357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 @see
15359 @return Result of the function call
15360*/
15361WDI_Status
15362WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015363(
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 WDI_ControlBlockType* pWDICtx,
15365 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015366)
Jeff Johnson295189b2012-06-20 16:38:30 -070015367{
15368 WDI_Status wdiStatus;
15369 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015370
15371 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15373
15374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 -------------------------------------------------------------------------*/
15377 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15378 ( NULL == pEventData->pEventData))
15379 {
15380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015381 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 }
15385
15386 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15387
15388 /*-------------------------------------------------------------------------
15389 Extract response and send it to UMAC
15390 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15392 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15394
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015396
15397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 halFinishScanRspMsg.finishScanRspParams.status);
15400
15401 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15402 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15403 {
15404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15405 "Finish Scan failed with status %s (%d)",
15406 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15407 halFinishScanRspMsg.finishScanRspParams.status);
15408 /* send the status to UMAC, don't return from here*/
15409 }
15410
15411 /*Notify UMAC*/
15412 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15413
Jeff Johnsone7245742012-09-05 17:12:55 -070015414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015415}/*WDI_ProcessFinishScanRsp*/
15416
15417/**
15418 @brief Process Join Response function (called when a response
15419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015420
15421 @param pWDICtx: pointer to the WLAN DAL context
15422 pEventData: pointer to the event information structure
15423
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 @see
15425 @return Result of the function call
15426*/
15427WDI_Status
15428WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015429(
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 WDI_ControlBlockType* pWDICtx,
15431 WDI_EventInfoType* pEventData
15432)
15433{
15434 WDI_Status wdiStatus;
15435 WDI_JoinRspCb wdiJoinRspCb;
15436 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015437
15438 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15440
15441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 -------------------------------------------------------------------------*/
15444 if (( NULL == pWDICtx ) ||
15445 ( NULL == pWDICtx->pfncRspCB ) ||
15446 ( NULL == pEventData ) ||
15447 ( NULL == pEventData->pEventData))
15448 {
15449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 }
15454
15455 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15456
15457 /*-------------------------------------------------------------------------
15458 Extract response and send it to UMAC
15459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15461 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 sizeof(halJoinRspMsg.joinRspParams));
15463
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015465
15466 wpalMutexAcquire(&pWDICtx->wptMutex);
15467
15468 /*-----------------------------------------------------------------------
15469 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15474 {
15475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015476 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15477 "association no longer in progress %d - mysterious HAL response",
15478 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015479
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 }
15484
15485 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15486
15487 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 -----------------------------------------------------------------------*/
15490 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15491 {
15492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15493 "Join only allowed in Joining state - failure state is %d "
15494 "strange HAL response", pBSSSes->wdiAssocState);
15495
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15497
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 }
15501
15502
15503 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 -----------------------------------------------------------------------*/
15506 if ( WDI_STATUS_SUCCESS != wdiStatus )
15507 {
15508 /*Association was failed by HAL - remove session*/
15509 WDI_DeleteSession(pWDICtx, pBSSSes);
15510
15511 /*Association no longer in progress */
15512 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15513
15514 /*Association no longer in progress - prepare pending assoc for processing*/
15515 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015516
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 }
15518 else
15519 {
15520 /*Transition to state Joining - this may be redundant as we are supposed
15521 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 }
15524
15525 wpalMutexRelease(&pWDICtx->wptMutex);
15526
15527 /*Notify UMAC*/
15528 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15529
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015531}/*WDI_ProcessJoinRsp*/
15532
15533
15534/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015537
15538 @param pWDICtx: pointer to the WLAN DAL context
15539 pEventData: pointer to the event information structure
15540
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 @see
15542 @return Result of the function call
15543*/
15544WDI_Status
15545WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015546(
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 WDI_ControlBlockType* pWDICtx,
15548 WDI_EventInfoType* pEventData
15549)
15550{
15551 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15552 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 WDI_BSSSessionType* pBSSSes = NULL;
15555
Jeff Johnsone7245742012-09-05 17:12:55 -070015556 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15558 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015559
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15561
15562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 -------------------------------------------------------------------------*/
15565 if (( NULL == pEventData ) ||
15566 ( NULL == pEventData->pEventData))
15567 {
15568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 }
15573
15574 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15575
15576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15580 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 sizeof(halConfigBssRspMsg.configBssRspParams));
15582
15583 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15584 halConfigBssRspMsg.configBssRspParams.status);
15585 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015587 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15589 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015590
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015592
15593 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015595
15596 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015598
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015600
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15604 #endif
15605 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15606 halConfigBssRspMsg.configBssRspParams.staMac,
15607 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015608
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 wpalMutexAcquire(&pWDICtx->wptMutex);
15610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015612 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015613 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15614 wdiConfigBSSParams.macBSSID,
15615 &pBSSSes);
15616
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 /*-----------------------------------------------------------------------
15618 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 -----------------------------------------------------------------------*/
15621 if ( NULL == pBSSSes )
15622 {
15623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15624 "Association sequence for this BSS does not yet exist "
15625 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015626
15627 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15628
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015632
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 /*Save data for this BSS*/
15634 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15635 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15646 pBSSSes->bcastStaIdx =
15647 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015648
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015650
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 /*-------------------------------------------------------------------------
15652 Add Peer STA
15653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15656 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015657
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 wdiAddSTAParam.ucHTCapable =
15662 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15663 wdiAddSTAParam.ucStaType =
15664 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15665
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15668 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670
15671 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15672 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15673 WDI_MAC_ADDR_LEN);
15674
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015688
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15690 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015691
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15693 /*-------------------------------------------------------------------------
15694 Add Broadcast STA only in AP mode
15695 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015696 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015697 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 {
15699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15700 "Add BCAST STA to table for index: %d",
15701 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015702
15703 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015705
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15707 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15708 }
15709 wpalMutexRelease(&pWDICtx->wptMutex);
15710 }
15711 else
15712 {
15713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15714 "Config BSS RSP failed with status : %s(%d)",
15715 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 halConfigBssRspMsg.configBssRspParams.status);
15718
Jeff Johnsone7245742012-09-05 17:12:55 -070015719
Jeff Johnson295189b2012-06-20 16:38:30 -070015720 /*Association was failed by HAL - remove session*/
15721 WDI_DeleteSession(pWDICtx, pBSSSes);
15722
15723 /*Association no longer in progress */
15724 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15725
15726 /*Association no longer in progress - prepare pending assoc for processing*/
15727 WDI_DequeueAssocRequest(pWDICtx);
15728
15729 }
15730
15731 /*Notify UMAC*/
15732 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15733
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015735}/*WDI_ProcessConfigBSSRsp*/
15736
15737
15738/**
15739 @brief Process Del BSS Response function (called when a response
15740 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015741
15742 @param pWDICtx: pointer to the WLAN DAL context
15743 pEventData: pointer to the event information structure
15744
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 @see
15746 @return Result of the function call
15747*/
15748WDI_Status
15749WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015750(
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 WDI_ControlBlockType* pWDICtx,
15752 WDI_EventInfoType* pEventData
15753)
15754{
15755 WDI_DelBSSRspParamsType wdiDelBSSParams;
15756 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 WDI_BSSSessionType* pBSSSes = NULL;
15759
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15762
15763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 -------------------------------------------------------------------------*/
15766 if (( NULL == pEventData ) ||
15767 ( NULL == pEventData->pEventData))
15768 {
15769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 }
15774
15775 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15776
15777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15781 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 sizeof(halDelBssRspMsg.deleteBssRspParams));
15783
15784
15785 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015787
15788 wpalMutexAcquire(&pWDICtx->wptMutex);
15789
15790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15794 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15795 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015796
15797 /*-----------------------------------------------------------------------
15798 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 -----------------------------------------------------------------------*/
15801 if ( NULL == pBSSSes )
15802 {
15803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15804 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015805 "association no longer in progress - mysterious HAL response");
15806
15807 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15808
15809 wpalMutexRelease(&pWDICtx->wptMutex);
15810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015812
15813 /*Extract BSSID for the response to UMAC*/
15814 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15815 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15816
15817 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15818
15819 /*-----------------------------------------------------------------------
15820 The current session will be deleted
15821 -----------------------------------------------------------------------*/
15822 WDI_DeleteSession(pWDICtx, pBSSSes);
15823
15824
15825 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15826 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015828 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015829 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015830
15831 /* Delete the STA's in this BSS */
15832 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 wpalMutexRelease(&pWDICtx->wptMutex);
15835
15836 /*Notify UMAC*/
15837 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15838
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015840}/*WDI_ProcessDelBSSRsp*/
15841
15842/**
15843 @brief Process Post Assoc Rsp function (called when a response
15844 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015845
15846 @param pWDICtx: pointer to the WLAN DAL context
15847 pEventData: pointer to the event information structure
15848
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 @see
15850 @return Result of the function call
15851*/
15852WDI_Status
15853WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015854(
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 WDI_ControlBlockType* pWDICtx,
15856 WDI_EventInfoType* pEventData
15857)
15858{
15859 WDI_PostAssocRspParamsType wdiPostAssocParams;
15860 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15865
15866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 -------------------------------------------------------------------------*/
15869 if (( NULL == pEventData ) ||
15870 ( NULL == pEventData->pEventData))
15871 {
15872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 }
15877
15878 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15879
15880 /*-------------------------------------------------------------------------
15881 Extract response and send it to UMAC
15882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15884 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 sizeof(halPostAssocRspMsg.postAssocRspParams));
15886
15887 /*Extract the Post Assoc STA Params */
15888
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15895
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 wdiPostAssocParams.wdiStatus =
15897 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015898
15899 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15900 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15902 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_MAC_ADDR_LEN);
15904
15905 /* Extract Post Assoc BSS Params */
15906
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15908 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15909 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015910
15911 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15912 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15915 .macSTA, WDI_MAC_ADDR_LEN);
15916
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15919
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15922
15923 wdiPostAssocParams.bssParams.ucBSSIdx =
15924 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15925
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15928
15929 wpalMutexAcquire(&pWDICtx->wptMutex);
15930
15931 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015934 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015936 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015937
15938 /*-----------------------------------------------------------------------
15939 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 -----------------------------------------------------------------------*/
15942 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015943 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15945 {
15946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15947 "Association sequence for this BSS does not yet exist or "
15948 "association no longer in progress - mysterious HAL response");
15949
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15951
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 }
15955
15956 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 -----------------------------------------------------------------------*/
15959 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15960 {
15961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15962 "Post Assoc not allowed before JOIN - failing request "
15963 "strange HAL response");
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15966
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 }
15970
15971 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015972 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015973 -----------------------------------------------------------------------*/
15974 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15975 {
15976 /*Association was failed by HAL - remove session*/
15977 WDI_DeleteSession(pWDICtx, pBSSSes);
15978 }
15979 else
15980 {
15981 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015982 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015983
15984 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015989 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15993
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15996 }
15997
15998 /*Association no longer in progress */
15999 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16000
16001 /*Association no longer in progress - prepare pending assoc for processing*/
16002 WDI_DequeueAssocRequest(pWDICtx);
16003
16004 wpalMutexRelease(&pWDICtx->wptMutex);
16005
16006 /*Notify UMAC*/
16007 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16008
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010}/*WDI_ProcessPostAssocRsp*/
16011
16012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016015
16016 @param pWDICtx: pointer to the WLAN DAL context
16017 pEventData: pointer to the event information structure
16018
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 @see
16020 @return Result of the function call
16021*/
16022WDI_Status
16023WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016024(
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 WDI_ControlBlockType* pWDICtx,
16026 WDI_EventInfoType* pEventData
16027)
16028{
16029 WDI_DelSTARspParamsType wdiDelSTARsp;
16030 WDI_DelSTARspCb wdiDelSTARspCb;
16031 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16034
16035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 -------------------------------------------------------------------------*/
16038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16039 ( NULL == pEventData->pEventData))
16040 {
16041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 }
16046
16047 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16048
16049 /*-------------------------------------------------------------------------
16050 Extract response and send it to UMAC
16051 -------------------------------------------------------------------------*/
16052 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016053 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 sizeof(halDelStaRspMsg.delStaRspParams));
16055
16056 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016057 wdiDelSTARsp.wdiStatus =
16058 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016059
16060 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16061
16062 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16063 if(staType == WDI_STA_ENTRY_SELF)
16064 {
16065 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16066
16067 /* At this point add the self-STA */
16068
16069 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16070 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16071 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16072
16073#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16074#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16075
16076 //all DPU indices are the same for self STA
16077 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16078 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16079 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16080 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16081 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16082 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016083
16084 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 }
16086 else
16087 {
16088 //Delete the station in the table
16089 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16090 }
16091
16092 /*Notify UMAC*/
16093 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16094
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016096}/*WDI_ProcessDelSTARsp*/
16097
16098
16099/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016101==========================================================================*/
16102
16103/**
16104 @brief Process Set BSS Key Rsp function (called when a response
16105 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016106
16107 @param pWDICtx: pointer to the WLAN DAL context
16108 pEventData: pointer to the event information structure
16109
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 @see
16111 @return Result of the function call
16112*/
16113WDI_Status
16114WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016115(
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 WDI_ControlBlockType* pWDICtx,
16117 WDI_EventInfoType* pEventData
16118)
16119{
16120 WDI_Status wdiStatus;
16121 eHalStatus halStatus;
16122 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16124
16125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 -------------------------------------------------------------------------*/
16128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16129 ( NULL == pEventData->pEventData))
16130 {
16131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 }
16136
16137 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16138
16139 /*-------------------------------------------------------------------------
16140 Extract response and send it to UMAC
16141 -------------------------------------------------------------------------*/
16142 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016144
16145 if ( eHAL_STATUS_SUCCESS != halStatus )
16146 {
16147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16148 "Set BSS Key failed with status %s (%d)",
16149 WDI_getHALStatusMsgString(halStatus),
16150 halStatus);
16151 /* send the status to UMAC, don't return from here*/
16152 }
16153
16154 /*Notify UMAC*/
16155 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16156
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016158}/*WDI_ProcessSetBssKeyRsp*/
16159
16160/**
16161 @brief Process Remove BSS Key Rsp function (called when a response
16162 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016163
16164 @param pWDICtx: pointer to the WLAN DAL context
16165 pEventData: pointer to the event information structure
16166
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 @see
16168 @return Result of the function call
16169*/
16170WDI_Status
16171WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016172(
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 WDI_ControlBlockType* pWDICtx,
16174 WDI_EventInfoType* pEventData
16175)
16176{
16177 WDI_Status wdiStatus;
16178 eHalStatus halStatus;
16179 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16181
16182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 -------------------------------------------------------------------------*/
16185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16186 ( NULL == pEventData->pEventData))
16187 {
16188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 }
16193
16194 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16195
16196 /*-------------------------------------------------------------------------
16197 Extract response and send it to UMAC
16198 -------------------------------------------------------------------------*/
16199 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016201
16202 if ( eHAL_STATUS_SUCCESS != halStatus )
16203 {
16204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16205 "Remove BSS Key failed with status %s (%d )",
16206 WDI_getHALStatusMsgString(halStatus),
16207 halStatus);
16208 /* send the status to UMAC, don't return from here*/
16209 }
16210
16211 /*Notify UMAC*/
16212 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16213
Jeff Johnsone7245742012-09-05 17:12:55 -070016214 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016215}/*WDI_ProcessSetBssKeyRsp*/
16216
16217
16218/**
16219 @brief Process Set STA Key Rsp function (called when a response
16220 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016221
16222 @param pWDICtx: pointer to the WLAN DAL context
16223 pEventData: pointer to the event information structure
16224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 @see
16226 @return Result of the function call
16227*/
16228WDI_Status
16229WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016230(
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 WDI_ControlBlockType* pWDICtx,
16232 WDI_EventInfoType* pEventData
16233)
16234{
16235 WDI_Status wdiStatus;
16236 eHalStatus halStatus;
16237 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16239
16240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 -------------------------------------------------------------------------*/
16243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16244 ( NULL == pEventData->pEventData))
16245 {
16246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016250 }
16251
16252 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16253
16254 /*-------------------------------------------------------------------------
16255 Extract response and send it to UMAC
16256 -------------------------------------------------------------------------*/
16257 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016259
16260 if ( eHAL_STATUS_SUCCESS != halStatus )
16261 {
16262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16263 "Set STA Key failed with status %s (%d)",
16264 WDI_getHALStatusMsgString(halStatus),
16265 halStatus);
16266 /* send the status to UMAC, don't return from here*/
16267 }
16268
16269 /*Notify UMAC*/
16270 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16271
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016273}/*WDI_ProcessSetSTAKeyRsp*/
16274
16275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016278
16279 @param pWDICtx: pointer to the WLAN DAL context
16280 pEventData: pointer to the event information structure
16281
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 @see
16283 @return Result of the function call
16284*/
16285WDI_Status
16286WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016287(
Jeff Johnson295189b2012-06-20 16:38:30 -070016288 WDI_ControlBlockType* pWDICtx,
16289 WDI_EventInfoType* pEventData
16290)
16291{
16292 WDI_Status wdiStatus;
16293 eHalStatus halStatus;
16294 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16296
16297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 -------------------------------------------------------------------------*/
16300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16301 ( NULL == pEventData->pEventData))
16302 {
16303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 }
16308
16309 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16310
16311 /*-------------------------------------------------------------------------
16312 Extract response and send it to UMAC
16313 -------------------------------------------------------------------------*/
16314 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016316
16317 if ( eHAL_STATUS_SUCCESS != halStatus )
16318 {
16319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16320 "Remove STA Key failed with status %s (%d)",
16321 WDI_getHALStatusMsgString(halStatus),
16322 halStatus);
16323 /* send the status to UMAC, don't return from here*/
16324 }
16325
16326 /*Notify UMAC*/
16327 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16328
Jeff Johnsone7245742012-09-05 17:12:55 -070016329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016330}/*WDI_ProcessRemoveStaKeyRsp*/
16331
16332/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016333 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016334 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016335
16336 @param pWDICtx: pointer to the WLAN DAL context
16337 pEventData: pointer to the event information structure
16338
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 @see
16340 @return Result of the function call
16341*/
16342WDI_Status
16343WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016344(
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 WDI_ControlBlockType* pWDICtx,
16346 WDI_EventInfoType* pEventData
16347)
16348{
16349 WDI_Status wdiStatus;
16350 eHalStatus halStatus;
16351 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16353
16354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016356 -------------------------------------------------------------------------*/
16357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16358 ( NULL == pEventData->pEventData))
16359 {
16360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 }
16365
16366 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16367
16368 /*-------------------------------------------------------------------------
16369 Extract response and send it to UMAC
16370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016371 wpalMemoryCopy( &halStatus,
16372 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 sizeof(halStatus));
16374
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016376
16377 if ( eHAL_STATUS_SUCCESS != halStatus )
16378 {
16379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16380 "Set STA Key failed with status %s (%d)",
16381 WDI_getHALStatusMsgString(halStatus),
16382 halStatus);
16383 /* send the status to UMAC, don't return from here*/
16384 }
16385
16386 /*Notify UMAC*/
16387 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16388
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016390}/*WDI_ProcessSetSTABcastKeyRsp*/
16391
16392/**
16393 @brief Process Remove STA Bcast Key Rsp function (called when a
16394 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016395
16396 @param pWDICtx: pointer to the WLAN DAL context
16397 pEventData: pointer to the event information structure
16398
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 @see
16400 @return Result of the function call
16401*/
16402WDI_Status
16403WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016404(
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 WDI_ControlBlockType* pWDICtx,
16406 WDI_EventInfoType* pEventData
16407)
16408{
16409 WDI_Status wdiStatus;
16410 eHalStatus halStatus;
16411 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16413
16414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016416 -------------------------------------------------------------------------*/
16417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16418 ( NULL == pEventData->pEventData))
16419 {
16420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 }
16425
16426 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16427
16428 /*-------------------------------------------------------------------------
16429 Extract response and send it to UMAC
16430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 wpalMemoryCopy( &halStatus,
16432 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 sizeof(halStatus));
16434
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016436
16437 if ( eHAL_STATUS_SUCCESS != halStatus )
16438 {
16439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16440 "Remove STA Key failed with status %s (%d)",
16441 WDI_getHALStatusMsgString(halStatus),
16442 halStatus);
16443 /* send the status to UMAC, don't return from here*/
16444 }
16445
16446 /*Notify UMAC*/
16447 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16448
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016450}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16451
16452
16453/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016454 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016455==========================================================================*/
16456
16457/**
16458 @brief Process Add TSpec Rsp function (called when a response
16459 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016460
16461 @param pWDICtx: pointer to the WLAN DAL context
16462 pEventData: pointer to the event information structure
16463
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 @see
16465 @return Result of the function call
16466*/
16467WDI_Status
16468WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016469(
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 WDI_ControlBlockType* pWDICtx,
16471 WDI_EventInfoType* pEventData
16472)
16473{
16474 WDI_Status wdiStatus;
16475 eHalStatus halStatus;
16476 WDI_AddTsRspCb wdiAddTsRspCb;
16477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16478
16479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 -------------------------------------------------------------------------*/
16482 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16483 ( NULL == pEventData->pEventData))
16484 {
16485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016486 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016489 }
16490
16491 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16492
16493 /*-------------------------------------------------------------------------
16494 Extract response and send it to UMAC
16495 -------------------------------------------------------------------------*/
16496 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016497 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016498
16499 /*Notify UMAC*/
16500 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16501
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016503}/*WDI_ProcessAddTSpecRsp*/
16504
16505
16506/**
16507 @brief Process Del TSpec Rsp function (called when a response
16508 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016509
16510 @param pWDICtx: pointer to the WLAN DAL context
16511 pEventData: pointer to the event information structure
16512
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 @see
16514 @return Result of the function call
16515*/
16516WDI_Status
16517WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016518(
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 WDI_ControlBlockType* pWDICtx,
16520 WDI_EventInfoType* pEventData
16521)
16522{
16523 WDI_Status wdiStatus;
16524 eHalStatus halStatus;
16525 WDI_DelTsRspCb wdiDelTsRspCb;
16526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16527
16528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 -------------------------------------------------------------------------*/
16531 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16532 ( NULL == pEventData->pEventData))
16533 {
16534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 }
16539
16540 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16541
16542 /*-------------------------------------------------------------------------
16543 Extract response and send it to UMAC
16544 -------------------------------------------------------------------------*/
16545 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016546 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016547
16548 /*Notify UMAC*/
16549 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16550
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016552}/*WDI_ProcessDelTSpecRsp*/
16553
16554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016557
16558 @param pWDICtx: pointer to the WLAN DAL context
16559 pEventData: pointer to the event information structure
16560
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 @see
16562 @return Result of the function call
16563*/
16564WDI_Status
16565WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016566(
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 WDI_ControlBlockType* pWDICtx,
16568 WDI_EventInfoType* pEventData
16569)
16570{
16571 WDI_Status wdiStatus;
16572 eHalStatus halStatus;
16573 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16575
16576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 -------------------------------------------------------------------------*/
16579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16580 ( NULL == pEventData->pEventData))
16581 {
16582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 }
16587
16588 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16589
16590 /*-------------------------------------------------------------------------
16591 Extract response and send it to UMAC
16592 -------------------------------------------------------------------------*/
16593 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016594 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016595
16596 /*Notify UMAC*/
16597 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16598
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016600}/*WDI_ProcessUpdateEDCAParamsRsp*/
16601
16602
16603/**
16604 @brief Process Add BA Rsp function (called when a response
16605 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016606
16607 @param pWDICtx: pointer to the WLAN DAL context
16608 pEventData: pointer to the event information structure
16609
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 @see
16611 @return Result of the function call
16612*/
16613WDI_Status
16614WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016615(
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 WDI_ControlBlockType* pWDICtx,
16617 WDI_EventInfoType* pEventData
16618)
16619{
16620 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16621
16622 tAddBASessionRspParams halBASessionRsp;
16623 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16624
Jeff Johnsone7245742012-09-05 17:12:55 -070016625
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16627
16628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 -------------------------------------------------------------------------*/
16631 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16632 ( NULL == pEventData->pEventData))
16633 {
16634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 }
16639
16640 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16641
16642 /*-------------------------------------------------------------------------
16643 Extract response and send it to UMAC
16644 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016645 wpalMemoryCopy( &halBASessionRsp,
16646 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 sizeof(halBASessionRsp));
16648
16649 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16650
Jeff Johnson43971f52012-07-17 12:26:56 -070016651 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 {
16653 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16654 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16655 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16656 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16657 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16658 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16659 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16660 }
16661
16662 /*Notify UMAC*/
16663 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16664
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016666}/*WDI_ProcessAddSessionBARsp*/
16667
16668
16669/**
16670 @brief Process Del BA Rsp function (called when a response
16671 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016672
16673 @param pWDICtx: pointer to the WLAN DAL context
16674 pEventData: pointer to the event information structure
16675
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 @see
16677 @return Result of the function call
16678*/
16679WDI_Status
16680WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016681(
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 WDI_ControlBlockType* pWDICtx,
16683 WDI_EventInfoType* pEventData
16684)
16685{
16686 WDI_Status wdiStatus;
16687 eHalStatus halStatus;
16688 WDI_DelBARspCb wdiDelBARspCb;
16689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16690
16691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 -------------------------------------------------------------------------*/
16694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16695 ( NULL == pEventData->pEventData))
16696 {
16697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 }
16702
16703 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16704
16705 /*-------------------------------------------------------------------------
16706 Extract response and send it to UMAC
16707 -------------------------------------------------------------------------*/
16708 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016710
16711 if ( eHAL_STATUS_SUCCESS == halStatus )
16712 {
16713 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16714 }
16715
16716 /*Notify UMAC*/
16717 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16718
Jeff Johnsone7245742012-09-05 17:12:55 -070016719 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016720}/*WDI_ProcessDelBARsp*/
16721
16722#ifdef FEATURE_WLAN_CCX
16723/**
16724 @brief Process TSM Stats Rsp function (called when a response
16725 is being received over the bus from HAL)
16726
16727 @param pWDICtx: pointer to the WLAN DAL context
16728 pEventData: pointer to the event information structure
16729
16730 @see
16731 @return Result of the function call
16732*/
16733WDI_Status
16734WDI_ProcessTsmStatsRsp
16735(
16736 WDI_ControlBlockType* pWDICtx,
16737 WDI_EventInfoType* pEventData
16738)
16739{
16740 WDI_TsmRspCb wdiTsmStatsRspCb;
16741 tTsmStatsRspMsg halTsmStatsRspMsg;
16742 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16744
16745 /*-------------------------------------------------------------------------
16746 Sanity check
16747 -------------------------------------------------------------------------*/
16748 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16749 ( NULL == pEventData->pEventData))
16750 {
16751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 WDI_ASSERT(0);
16754 return WDI_STATUS_E_FAILURE;
16755 }
16756
16757 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16758
16759 /*-------------------------------------------------------------------------
16760 Unpack HAL Response Message - the header was already extracted by the
16761 main Response Handling procedure
16762 -------------------------------------------------------------------------*/
16763 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16764 pEventData->pEventData,
16765 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16766
16767 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16768 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16769 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16770 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16771 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16772 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16773 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16774 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16775 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16776 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16777 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16778 halTsmStatsRspMsg.tsmStatsRspParams.status);
16779
16780 /*Notify UMAC*/
16781 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16782
16783 return WDI_STATUS_SUCCESS;
16784}/*WDI_ProcessTsmStatsRsp*/
16785
16786#endif
16787
16788
16789
16790/**
16791 @brief Process Flush AC Rsp function (called when a response
16792 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016793
16794 @param pWDICtx: pointer to the WLAN DAL context
16795 pEventData: pointer to the event information structure
16796
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 @see
16798 @return Result of the function call
16799*/
16800WDI_Status
16801WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016802(
Jeff Johnson295189b2012-06-20 16:38:30 -070016803 WDI_ControlBlockType* pWDICtx,
16804 WDI_EventInfoType* pEventData
16805)
16806{
16807 WDI_Status wdiStatus;
16808 eHalStatus halStatus;
16809 WDI_FlushAcRspCb wdiFlushAcRspCb;
16810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16811
16812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 -------------------------------------------------------------------------*/
16815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16816 ( NULL == pEventData->pEventData))
16817 {
16818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 }
16823
16824 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16825
16826 /*-------------------------------------------------------------------------
16827 Extract response and send it to UMAC
16828 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 wpalMemoryCopy( &halStatus,
16830 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 sizeof(halStatus));
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016834
16835 /*Notify UMAC*/
16836 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16837
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016839}/*WDI_ProcessFlushAcRsp*/
16840
16841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016844
16845 @param pWDICtx: pointer to the WLAN DAL context
16846 pEventData: pointer to the event information structure
16847
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 @see
16849 @return Result of the function call
16850*/
16851WDI_Status
16852WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016853(
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 WDI_ControlBlockType* pWDICtx,
16855 WDI_EventInfoType* pEventData
16856)
16857{
16858 WDI_Status wdiStatus;
16859 eHalStatus halStatus;
16860 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16862
16863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 -------------------------------------------------------------------------*/
16866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16867 ( NULL == pEventData->pEventData))
16868 {
16869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 }
16874
16875 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16876
16877 /*-------------------------------------------------------------------------
16878 Extract response and send it to UMAC
16879 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 wpalMemoryCopy( &halStatus,
16881 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 sizeof(halStatus));
16883
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016885
16886 /*Notify UMAC*/
16887 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16888
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890}/*WDI_ProcessBtAmpEventRsp*/
16891
16892
16893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016896
16897 @param pWDICtx: pointer to the WLAN DAL context
16898 pEventData: pointer to the event information structure
16899
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 @see
16901 @return Result of the function call
16902*/
16903WDI_Status
16904WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016905(
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 WDI_ControlBlockType* pWDICtx,
16907 WDI_EventInfoType* pEventData
16908)
16909{
16910 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16911 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16912 tAddStaSelfRspMsg halAddStaSelfRsp;
16913 WDI_AddStaParams wdiAddSTAParam = {0};
16914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16915
16916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 -------------------------------------------------------------------------*/
16919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16920 ( NULL == pEventData->pEventData))
16921 {
16922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 }
16927
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16930
16931 /*-------------------------------------------------------------------------
16932 Extract response and send it to UMAC
16933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16935 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16937
16938
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 wdiAddSTASelfParams.wdiStatus =
16940 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016941
Jeff Johnsone7245742012-09-05 17:12:55 -070016942 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016946 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016947 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16948
16949 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16950 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16951 WDI_MAC_ADDR_LEN);
16952
16953
16954#ifdef HAL_SELF_STA_PER_BSS
16955
16956 /* At this point add the self-STA */
16957
16958 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16959 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16960 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16961
16962 //all DPU indices are the same for self STA
16963
16964 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016965 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16967 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16968 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16969 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16970 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16971
16972 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16973 WDI_MAC_ADDR_LEN);
16974
16975 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16976 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16977
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16980 {
16981 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16982 }
16983#endif
16984
16985 /*Notify UMAC*/
16986 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16987
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016989}/*WDI_ProcessAddSTASelfRsp*/
16990
16991
16992
16993/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016994 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016996
16997 @param pWDICtx: pointer to the WLAN DAL context
16998 pEventData: pointer to the event information structure
16999
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 @see
17001 @return Result of the function call
17002*/
17003WDI_Status
17004WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017005(
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 WDI_ControlBlockType* pWDICtx,
17007 WDI_EventInfoType* pEventData
17008)
17009{
17010 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17011 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17012 tDelStaSelfRspParams delStaSelfRspParams;
17013 wpt_uint8 ucStaIdx;
17014
17015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17016
17017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 -------------------------------------------------------------------------*/
17020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17021 ( NULL == pEventData->pEventData))
17022 {
17023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 }
17028
17029 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17030
17031 /*-------------------------------------------------------------------------
17032 Extract response and send it to UMAC
17033 -------------------------------------------------------------------------*/
17034
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 (wpt_uint8*)pEventData->pEventData,
17037 sizeof(tDelStaSelfRspParams));
17038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wdiDelStaSelfRspParams.wdiStatus =
17040 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017041
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17044 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17045 {
17046 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 delStaSelfRspParams.selfMacAddr,
17049 &ucStaIdx);
17050 if(WDI_STATUS_E_FAILURE == wdiStatus)
17051 {
17052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017053 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 }
17057 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17058 }
17059
17060 /*Notify UMAC*/
17061 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17062
17063 return WDI_STATUS_SUCCESS;
17064}
17065
Jeff Johnsone7245742012-09-05 17:12:55 -070017066#ifdef FEATURE_OEM_DATA_SUPPORT
17067/**
17068 @brief Start Oem Data Rsp function (called when a
17069 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017070
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 @param pWDICtx: pointer to the WLAN DAL context
17072 pEventData: pointer to the event information structure
17073
17074 @see
17075 @return Result of the function call
17076*/
17077#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17078
17079WDI_Status
17080WDI_ProcessStartOemDataRsp
17081(
17082 WDI_ControlBlockType* pWDICtx,
17083 WDI_EventInfoType* pEventData
17084)
17085{
17086 WDI_oemDataRspCb wdiOemDataRspCb;
17087 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17088 tStartOemDataRspParams* halStartOemDataRspParams;
17089
17090 /*-------------------------------------------------------------------------
17091 Sanity check
17092 -------------------------------------------------------------------------*/
17093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17094 ( NULL == pEventData->pEventData))
17095 {
17096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017097 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 WDI_ASSERT(0);
17099 return WDI_STATUS_E_FAILURE;
17100 }
17101
17102 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17103
17104 /*-------------------------------------------------------------------------
17105 Extract response and send it to UMAC
17106 -------------------------------------------------------------------------*/
17107 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17108
17109
17110 //It is the responsibility of the application code to check for failure
17111 //conditions!
17112
17113 //Allocate memory for WDI OEM DATA RSP structure
17114 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17115
17116 if(NULL == wdiOemDataRspParams)
17117 {
17118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17119 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17120 pWDICtx, pEventData, pEventData->pEventData);
17121 WDI_ASSERT(0);
17122 return WDI_STATUS_E_FAILURE;
17123 }
17124
17125 /* Populate WDI structure members */
17126 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17127
17128 /*Notify UMAC*/
17129 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17130
17131 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17132 wpalMemoryFree(wdiOemDataRspParams);
17133
17134 return WDI_STATUS_SUCCESS;
17135}/*WDI_PrcoessStartOemDataRsp*/
17136#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017137
17138/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017140===========================================================================*/
17141
17142/**
17143 @brief Process Channel Switch Rsp function (called when a response
17144 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017145
17146 @param pWDICtx: pointer to the WLAN DAL context
17147 pEventData: pointer to the event information structure
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 @see
17150 @return Result of the function call
17151*/
17152WDI_Status
17153WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017154(
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 WDI_ControlBlockType* pWDICtx,
17156 WDI_EventInfoType* pEventData
17157)
17158{
17159 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17160 WDI_SwitchChRspCb wdiChSwitchRspCb;
17161 tSwitchChannelRspParams halSwitchChannelRsp;
17162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17163
17164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 -------------------------------------------------------------------------*/
17167 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17168 ( NULL == pEventData->pEventData))
17169 {
17170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 }
17175
17176 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17177
17178 /*-------------------------------------------------------------------------
17179 Extract response and send it to UMAC
17180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 (wpt_uint8*)pEventData->pEventData,
17183 sizeof(halSwitchChannelRsp));
17184
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 wdiSwitchChRsp.wdiStatus =
17186 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17188
17189#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017191#endif
17192
17193 /*Notify UMAC*/
17194 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17195
Jeff Johnsone7245742012-09-05 17:12:55 -070017196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017197}/*WDI_ProcessChannelSwitchRsp*/
17198
17199
17200/**
17201 @brief Process Config STA Rsp function (called when a response
17202 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017203
17204 @param pWDICtx: pointer to the WLAN DAL context
17205 pEventData: pointer to the event information structure
17206
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 @see
17208 @return Result of the function call
17209*/
17210WDI_Status
17211WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017212(
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 WDI_ControlBlockType* pWDICtx,
17214 WDI_EventInfoType* pEventData
17215)
17216{
17217 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17218 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17219 WDI_AddStaParams wdiAddSTAParam;
17220
17221 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017223
Jeff Johnsone7245742012-09-05 17:12:55 -070017224 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17226
17227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 -------------------------------------------------------------------------*/
17230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17231 ( NULL == pEventData->pEventData))
17232 {
17233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 }
17238
17239 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17240
17241 /*-------------------------------------------------------------------------
17242 Extract response and send it to UMAC
17243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017244 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17245 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 sizeof(halConfigStaRsp.configStaRspParams));
17247
17248
17249 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17250 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17251 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17252 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17253 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17254
17255 /* MAC Address of STA - take from cache as it does not come back in the
17256 response*/
17257 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017258 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017260
17261 wdiCfgSTAParams.wdiStatus =
17262 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263
17264 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17265 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17266 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17267
17268 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17269 {
17270 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17271 {
17272 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17275 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017276
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017278 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017280 wdiAddSTAParam.ucHTCapable =
17281 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17282 wdiAddSTAParam.ucStaType =
17283 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017284 wdiAddSTAParam.ucRmfEnabled =
17285 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017286
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17289 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017290 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017291
17292 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17293 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17294 WDI_MAC_ADDR_LEN);
17295
17296 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17297 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17298 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017299
17300 if ( NULL == pBSSSes )
17301 {
17302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17303 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017304
Jeff Johnson295189b2012-06-20 16:38:30 -070017305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 }
17308
17309 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017310 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017316 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017319
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17321 }
17322 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17323 {
17324 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17325
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017334 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017338 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 halConfigStaRsp.configStaRspParams.ucUcastSig;
17340 }
17341 }
17342
17343 /*Notify UMAC*/
17344 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17345
Jeff Johnsone7245742012-09-05 17:12:55 -070017346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017347}/*WDI_ProcessConfigStaRsp*/
17348
17349
17350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017353
17354 @param pWDICtx: pointer to the WLAN DAL context
17355 pEventData: pointer to the event information structure
17356
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 @see
17358 @return Result of the function call
17359*/
17360WDI_Status
17361WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017362(
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 WDI_ControlBlockType* pWDICtx,
17364 WDI_EventInfoType* pEventData
17365)
17366{
17367 WDI_Status wdiStatus;
17368 eHalStatus halStatus;
17369 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17370
17371 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17374
17375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 -------------------------------------------------------------------------*/
17378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17379 ( NULL == pEventData->pEventData))
17380 {
17381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017385 }
17386
17387 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17388
17389 wpalMutexAcquire(&pWDICtx->wptMutex);
17390
17391 /*If the link is being transitioned to idle - the BSS is to be deleted
17392 - this type of ending a session is possible when UMAC has failed an
17393 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17396 {
17397 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017400 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17401 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17402 &pBSSSes);
17403
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 /*-----------------------------------------------------------------------
17405 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 -----------------------------------------------------------------------*/
17408 if ( NULL == pBSSSes )
17409 {
17410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17411 "Set link response received outside association session");
17412 }
17413 else
17414 {
17415 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17416 will be del BSS coming after this to stop the beaconing & cleaning up the
17417 sessions*/
17418 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17419 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17420 {
17421 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 -----------------------------------------------------------------------*/
17424 WDI_DeleteSession(pWDICtx, pBSSSes);
17425
17426 /*-----------------------------------------------------------------------
17427 Check to see if this association is in progress - if so disable the
17428 flag as this has ended
17429 -----------------------------------------------------------------------*/
17430 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017432 /*Association no longer in progress */
17433 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17434 /*Association no longer in progress - prepare pending assoc for processing*/
17435 WDI_DequeueAssocRequest(pWDICtx);
17436 }
17437 }
17438 }
17439 }
17440 /* If the link state has been set to POST ASSOC, reset the "association in
17441 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17444 {
17445 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17446 WDI_DequeueAssocRequest(pWDICtx);
17447 }
17448
17449 wpalMutexRelease(&pWDICtx->wptMutex);
17450
17451 /*-------------------------------------------------------------------------
17452 Extract response and send it to UMAC
17453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 wpalMemoryCopy( &halStatus,
17455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 sizeof(halStatus));
17457
Jeff Johnsone7245742012-09-05 17:12:55 -070017458 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017459
17460 /*Notify UMAC*/
17461 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17462
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017464}/*WDI_ProcessSetLinkStateRsp*/
17465
17466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017469
17470 @param pWDICtx: pointer to the WLAN DAL context
17471 pEventData: pointer to the event information structure
17472
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 @see
17474 @return Result of the function call
17475*/
17476WDI_Status
17477WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017478(
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 WDI_ControlBlockType* pWDICtx,
17480 WDI_EventInfoType* pEventData
17481)
17482{
17483 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17484 WDI_GetStatsRspCb wdiGetStatsRspCb;
17485 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017486
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17488
17489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 -------------------------------------------------------------------------*/
17492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17493 ( NULL == pEventData->pEventData))
17494 {
17495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 }
17500
17501 /*-------------------------------------------------------------------------
17502 Extract response and send it to UMAC
17503 -------------------------------------------------------------------------*/
17504 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17505
17506 /*allocate the stats response buffer */
17507 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17508 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17509 + sizeof(WDI_GetStatsRspParamsType));
17510
17511 if(NULL == wdiGetStatsRsp)
17512 {
17513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17514 "Failed to allocate memory in Get Stats Response %x %x %x ",
17515 pWDICtx, pEventData, pEventData->pEventData);
17516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 }
17519
17520 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17521
17522 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17523 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17524 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17525 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17526 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17527 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17528
17529 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17530 wpalMemoryCopy(wdiGetStatsRsp + 1,
17531 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17532 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17533
17534 /*Notify UMAC*/
17535 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17536
17537 wpalMemoryFree(wdiGetStatsRsp);
17538
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017540}/*WDI_ProcessGetStatsRsp*/
17541
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017542#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17543/**
17544 @brief Process Get Roam Rssi Rsp function (called when a response is
17545 being received over the bus from HAL)
17546
17547 @param pWDICtx: pointer to the WLAN DAL context
17548 pEventData: pointer to the event information structure
17549
17550 @see
17551 @return Result of the function call
17552*/
17553WDI_Status
17554WDI_ProcessGetRoamRssiRsp
17555(
17556 WDI_ControlBlockType* pWDICtx,
17557 WDI_EventInfoType* pEventData
17558)
17559{
17560 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17561 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17562 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17564
17565 /*-------------------------------------------------------------------------
17566 Sanity check
17567 -------------------------------------------------------------------------*/
17568 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17569 ( NULL == pEventData->pEventData))
17570 {
17571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17572 "%s: Invalid parameters", __func__);
17573 WDI_ASSERT(0);
17574 return WDI_STATUS_E_FAILURE;
17575 }
17576
17577 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17578 if(NULL == wdiGetRoamRssiRspCb)
17579 {
17580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17581 "%s: call back function is NULL", __func__);
17582 WDI_ASSERT(0);
17583 return WDI_STATUS_E_FAILURE;
17584 }
17585
17586 /*-------------------------------------------------------------------------
17587 Extract response and send it to UMAC
17588 -------------------------------------------------------------------------*/
17589 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17590 pEventData->pEventData,
17591 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17592
17593 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17594 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17595 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17596
17597 /*Notify UMAC*/
17598 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17599
17600 return WDI_STATUS_SUCCESS;
17601}/*WDI_ProcessGetRoamRssiRsp*/
17602#endif
17603
Jeff Johnson295189b2012-06-20 16:38:30 -070017604
17605/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017607 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017608
17609 @param pWDICtx: pointer to the WLAN DAL context
17610 pEventData: pointer to the event information structure
17611
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 @see
17613 @return Result of the function call
17614*/
17615WDI_Status
17616WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017617(
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 WDI_ControlBlockType* pWDICtx,
17619 WDI_EventInfoType* pEventData
17620)
17621{
17622 WDI_Status wdiStatus;
17623 eHalStatus halStatus;
17624 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17626
17627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 -------------------------------------------------------------------------*/
17630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17631 ( NULL == pEventData->pEventData))
17632 {
17633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 }
17638
17639 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17640
17641 /*-------------------------------------------------------------------------
17642 Extract response and send it to UMAC
17643 -------------------------------------------------------------------------*/
17644 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017646
17647 /*Notify UMAC*/
17648 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17649
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017651}/*WDI_ProcessUpdateCfgRsp*/
17652
17653
17654
17655/**
17656 @brief Process Add BA Rsp function (called when a response
17657 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017658
17659 @param pWDICtx: pointer to the WLAN DAL context
17660 pEventData: pointer to the event information structure
17661
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 @see
17663 @return Result of the function call
17664*/
17665WDI_Status
17666WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017667(
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 WDI_ControlBlockType* pWDICtx,
17669 WDI_EventInfoType* pEventData
17670)
17671{
17672 WDI_AddBARspCb wdiAddBARspCb;
17673
17674 tAddBARspParams halAddBARsp;
17675 WDI_AddBARspinfoType wdiAddBARsp;
17676
17677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17678
17679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 -------------------------------------------------------------------------*/
17682 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17683 ( NULL == pEventData->pEventData))
17684 {
17685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 }
17690
17691 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17692
17693 /*-------------------------------------------------------------------------
17694 Extract response and send it to UMAC
17695 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 wpalMemoryCopy( &halAddBARsp,
17697 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017698 sizeof(halAddBARsp));
17699
17700 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17701
Jeff Johnson43971f52012-07-17 12:26:56 -070017702 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 {
17704 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17705 }
17706
17707 /*Notify UMAC*/
17708 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17709
Jeff Johnsone7245742012-09-05 17:12:55 -070017710 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017711}/*WDI_ProcessAddSessionBARsp*/
17712
17713/**
17714 @brief Process Add BA Rsp function (called when a response
17715 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017716
17717 @param pWDICtx: pointer to the WLAN DAL context
17718 pEventData: pointer to the event information structure
17719
Jeff Johnson295189b2012-06-20 16:38:30 -070017720 @see
17721 @return Result of the function call
17722*/
17723WDI_Status
17724WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017725(
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 WDI_ControlBlockType* pWDICtx,
17727 WDI_EventInfoType* pEventData
17728)
17729{
17730 WDI_TriggerBARspCb wdiTriggerBARspCb;
17731
17732 tTriggerBARspParams* halTriggerBARsp;
17733 tTriggerBaRspCandidate* halBaCandidate;
17734 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17735 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17736 wpt_uint16 index;
17737 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017738 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17740
17741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 -------------------------------------------------------------------------*/
17744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17745 ( NULL == pEventData->pEventData))
17746 {
17747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 }
17752
17753 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17754
17755 /*-------------------------------------------------------------------------
17756 Extract response and send it to UMAC
17757 -------------------------------------------------------------------------*/
17758 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17759
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017760 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17761
17762 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17763 {
17764 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017767
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017768 if(NULL == wdiTriggerBARsp)
17769 {
17770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17771 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17772 pWDICtx, pEventData, pEventData->pEventData);
17773 WDI_ASSERT(0);
17774 return WDI_STATUS_E_FAILURE;
17775 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017776
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017777 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17778
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017780 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017781 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17782
17783 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17784 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17785
17786 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17787 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017788 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017789 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17790 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17791 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017792 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17796 }
17797 wdiTriggerBARspCandidate++;
17798 halBaCandidate++;
17799 }
17800 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017801 else
17802 {
17803 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17804
17805 if(NULL == wdiTriggerBARsp)
17806 {
17807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17808 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17809 pWDICtx, pEventData, pEventData->pEventData);
17810 WDI_ASSERT(0);
17811 return WDI_STATUS_E_FAILURE;
17812 }
17813
17814 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17815
17816 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017817
17818 /*Notify UMAC*/
17819 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17820
17821 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017822 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017823}/*WDI_ProcessAddSessionBARsp*/
17824
17825/**
17826 @brief Process Update Beacon Params Rsp function (called when a response
17827 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017828
17829 @param pWDICtx: pointer to the WLAN DAL context
17830 pEventData: pointer to the event information structure
17831
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 @see
17833 @return Result of the function call
17834*/
17835WDI_Status
17836WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017837(
Jeff Johnson295189b2012-06-20 16:38:30 -070017838 WDI_ControlBlockType* pWDICtx,
17839 WDI_EventInfoType* pEventData
17840)
17841{
17842 WDI_Status wdiStatus;
17843 eHalStatus halStatus;
17844 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17846
17847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 -------------------------------------------------------------------------*/
17850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17851 ( NULL == pEventData->pEventData))
17852 {
17853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 }
17858
17859 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17860
17861 /*-------------------------------------------------------------------------
17862 Extract response and send it to UMAC
17863 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017864 wpalMemoryCopy( &halStatus,
17865 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 sizeof(halStatus));
17867
Jeff Johnsone7245742012-09-05 17:12:55 -070017868 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017869
17870 /*Notify UMAC*/
17871 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17872
Jeff Johnsone7245742012-09-05 17:12:55 -070017873 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017874}/*WDI_ProcessUpdateBeaconParamsRsp*/
17875
17876/**
17877 @brief Process Send Beacon template Rsp function (called when a response
17878 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017879
17880 @param pWDICtx: pointer to the WLAN DAL context
17881 pEventData: pointer to the event information structure
17882
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 @see
17884 @return Result of the function call
17885*/
17886WDI_Status
17887WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017888(
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 WDI_ControlBlockType* pWDICtx,
17890 WDI_EventInfoType* pEventData
17891)
17892{
17893 WDI_Status wdiStatus;
17894 eHalStatus halStatus;
17895 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17897
17898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 -------------------------------------------------------------------------*/
17901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17902 ( NULL == pEventData->pEventData))
17903 {
17904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017908 }
17909
17910 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17911
17912 /*-------------------------------------------------------------------------
17913 Extract response and send it to UMAC
17914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 wpalMemoryCopy( &halStatus,
17916 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 sizeof(halStatus));
17918
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017920
17921 /*Notify UMAC*/
17922 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17923
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017925}/*WDI_ProcessSendBeaconParamsRsp*/
17926
Jeff Johnsone7245742012-09-05 17:12:55 -070017927
Jeff Johnson295189b2012-06-20 16:38:30 -070017928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017929 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017930 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017931
17932 @param pWDICtx: pointer to the WLAN DAL context
17933 pEventData: pointer to the event information structure
17934
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 @see
17936 @return Result of the function call
17937*/
17938WDI_Status
17939WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017940(
Jeff Johnson295189b2012-06-20 16:38:30 -070017941 WDI_ControlBlockType* pWDICtx,
17942 WDI_EventInfoType* pEventData
17943)
17944{
17945 WDI_Status wdiStatus;
17946 eHalStatus halStatus;
17947 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17949
17950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 -------------------------------------------------------------------------*/
17953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17954 ( NULL == pEventData->pEventData))
17955 {
17956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 }
17961
17962 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17963
17964 /*-------------------------------------------------------------------------
17965 Extract response and send it to UMAC
17966 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 wpalMemoryCopy( &halStatus,
17968 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017969 sizeof(halStatus));
17970
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017972
17973 /*Notify UMAC*/
17974 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17975
Jeff Johnsone7245742012-09-05 17:12:55 -070017976 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017977}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17978
17979 /**
17980 @brief Process Set Max Tx Power Rsp function (called when a response
17981 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017982
17983 @param pWDICtx: pointer to the WLAN DAL context
17984 pEventData: pointer to the event information structure
17985
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 @see
17987 @return Result of the function call
17988*/
17989WDI_Status
17990WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017991(
Jeff Johnson295189b2012-06-20 16:38:30 -070017992 WDI_ControlBlockType* pWDICtx,
17993 WDI_EventInfoType* pEventData
17994)
17995{
17996 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017997
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017999
Jeff Johnson295189b2012-06-20 16:38:30 -070018000 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18002
18003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 -------------------------------------------------------------------------*/
18006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18007 ( NULL == pEventData->pEventData))
18008 {
18009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 }
18014
18015 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18016
18017 /*-------------------------------------------------------------------------
18018 Extract response and send it to UMAC
18019 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018020 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18021 pEventData->pEventData,
18022 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018023
18024 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18025 {
18026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18027 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 }
18031
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018034 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018035
18036 /*Notify UMAC*/
18037 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18038
Jeff Johnsone7245742012-09-05 17:12:55 -070018039 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018040}
18041
schangd82195a2013-03-13 18:41:24 -070018042 /**
18043 @brief Process Set Tx Power Rsp function (called when a response
18044 is being received over the bus from HAL)
18045
18046 @param pWDICtx: pointer to the WLAN DAL context
18047 pEventData: pointer to the event information structure
18048
18049 @see
18050 @return Result of the function call
18051*/
18052WDI_Status
18053WDI_ProcessSetTxPowerRsp
18054(
18055 WDI_ControlBlockType* pWDICtx,
18056 WDI_EventInfoType* pEventData
18057)
18058{
18059 tSetTxPwrRspMsg halTxpowerrsp;
18060 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18061 WDA_SetTxPowerRspCb wdiReqStatusCb;
18062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18063
18064 /*-------------------------------------------------------------------------
18065 Sanity check
18066 -------------------------------------------------------------------------*/
18067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18068 ( NULL == pEventData->pEventData))
18069 {
18070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18071 "%s: Invalid parameters", __func__);
18072 WDI_ASSERT(0);
18073 return WDI_STATUS_E_FAILURE;
18074 }
18075
18076 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18077
18078 /*-------------------------------------------------------------------------
18079 Extract response and send it to UMAC
18080 -------------------------------------------------------------------------*/
18081 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18082 pEventData->pEventData,
18083 sizeof(halTxpowerrsp.setTxPwrRspParams));
18084
18085 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18086 {
18087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18088 "Error status returned in Set Tx Power Response ");
18089 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18090 return WDI_STATUS_E_FAILURE;
18091 }
18092
18093 wdiSetTxPowerRspMsg.wdiStatus =
18094 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18095
18096 /*Notify UMAC*/
18097 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18098
18099 return WDI_STATUS_SUCCESS;
18100}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018101#ifdef FEATURE_WLAN_TDLS
18102/**
18103 @brief Process TDLS Link Establish Rsp function (called
18104 when a response is being received over the bus from HAL)
18105
18106 @param pWDICtx: pointer to the WLAN DAL context
18107 pEventData: pointer to the event information structure
18108
18109 @see
18110 @return Result of the function call
18111*/
18112WDI_Status
18113WDI_ProcessLinkEstablishReqRsp
18114(
18115 WDI_ControlBlockType* pWDICtx,
18116 WDI_EventInfoType* pEventData
18117)
18118{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018119 eHalStatus halStatus;
18120 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018121 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18122 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18123
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18125
18126 /*-------------------------------------------------------------------------
18127 Sanity check
18128 -------------------------------------------------------------------------*/
18129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18130 ( NULL == pEventData->pEventData))
18131 {
18132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18133 "%s: Invalid parameters", __func__);
18134 WDI_ASSERT(0);
18135 return WDI_STATUS_E_FAILURE;
18136 }
18137
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018138 /*-------------------------------------------------------------------------
18139 Extract indication and send it to UMAC
18140 -------------------------------------------------------------------------*/
18141 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18142 pEventData->pEventData,
18143 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18144
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018145 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18146
18147 /*-------------------------------------------------------------------------
18148 Extract response and send it to UMAC
18149 -------------------------------------------------------------------------*/
18150 wpalMemoryCopy( &halStatus,
18151 pEventData->pEventData,
18152 sizeof(halStatus));
18153
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018154 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18155 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018156
18157 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018158 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018159
18160 return WDI_STATUS_SUCCESS;
18161}/*WDI_ProcessLinkEstablishReqRsp*/
18162#endif
schangd82195a2013-03-13 18:41:24 -070018163
Jeff Johnson295189b2012-06-20 16:38:30 -070018164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018167
18168 @param pWDICtx: pointer to the WLAN DAL context
18169 pEventData: pointer to the event information structure
18170
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 @see
18172 @return Result of the function call
18173*/
18174WDI_Status
18175WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018176(
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 WDI_ControlBlockType* pWDICtx,
18178 WDI_EventInfoType* pEventData
18179)
18180{
18181 WDI_Status wdiStatus;
18182 eHalStatus halStatus;
18183 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18185
18186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 -------------------------------------------------------------------------*/
18189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18190 ( NULL == pEventData->pEventData))
18191 {
18192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 }
18197
18198 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18199
18200 /*-------------------------------------------------------------------------
18201 Extract response and send it to UMAC
18202 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018203 wpalMemoryCopy( &halStatus,
18204 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018205 sizeof(halStatus));
18206
Jeff Johnsone7245742012-09-05 17:12:55 -070018207 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018208
18209 /*Notify UMAC*/
18210 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018213}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018214/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018215 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018217
18218 @param pWDICtx: pointer to the WLAN DAL context
18219 pEventData: pointer to the event information structure
18220
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 @see
18222 @return Result of the function call
18223*/
18224WDI_Status
18225WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018226(
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 WDI_ControlBlockType* pWDICtx,
18228 WDI_EventInfoType* pEventData
18229)
18230{
18231 WDI_Status wdiStatus;
18232 eHalStatus halStatus;
18233 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018234 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18236
18237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018239 -------------------------------------------------------------------------*/
18240 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18241 ( NULL == pEventData->pEventData))
18242 {
18243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018247 }
18248
18249 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18250
18251 /*-------------------------------------------------------------------------
18252 Extract response and send it to UMAC
18253 -------------------------------------------------------------------------*/
18254 halStatus = *((eHalStatus*)pEventData->pEventData);
18255
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018257
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018258 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18259 * Other module states are taken care by PMC.
18260 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18261 */
18262 if (wdiStatus != WDI_STATUS_SUCCESS) {
18263
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18265 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18266 halStatus);
18267 /* Call Back is not required as we are putting the DXE in FULL
18268 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018269 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18270
18271 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18273 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18274 WDI_ASSERT(0);
18275 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018276 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 /*Notify UMAC*/
18278 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18279
Jeff Johnsone7245742012-09-05 17:12:55 -070018280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018281}/*WDI_ProcessEnterImpsRsp*/
18282
18283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018286
18287 @param pWDICtx: pointer to the WLAN DAL context
18288 pEventData: pointer to the event information structure
18289
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 @see
18291 @return Result of the function call
18292*/
18293WDI_Status
18294WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018295(
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 WDI_ControlBlockType* pWDICtx,
18297 WDI_EventInfoType* pEventData
18298)
18299{
18300 WDI_Status wdiStatus;
18301 eHalStatus halStatus;
18302 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018303 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18305
18306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 -------------------------------------------------------------------------*/
18309 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18310 ( NULL == pEventData->pEventData))
18311 {
18312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018316 }
18317
18318 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18319
18320 /*-------------------------------------------------------------------------
18321 Extract response and send it to UMAC
18322 -------------------------------------------------------------------------*/
18323 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018324 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018325
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018326 if (halStatus != eHAL_STATUS_SUCCESS)
18327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18328 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18329
Jeff Johnson295189b2012-06-20 16:38:30 -070018330 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018331 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18332 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18333 {
18334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18335 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18336 WDI_ASSERT(0);
18337 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018338 /*Notify UMAC*/
18339 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18340
Jeff Johnsone7245742012-09-05 17:12:55 -070018341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018342}/*WDI_ProcessExitImpsRsp*/
18343
18344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018347
18348 @param pWDICtx: pointer to the WLAN DAL context
18349 pEventData: pointer to the event information structure
18350
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 @see
18352 @return Result of the function call
18353*/
18354WDI_Status
18355WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018356(
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 WDI_ControlBlockType* pWDICtx,
18358 WDI_EventInfoType* pEventData
18359)
18360{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018361 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18362 tHalEnterBmpsRspParams halEnterBmpsRsp;
18363 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18364 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018365 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18367
18368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018370 -------------------------------------------------------------------------*/
18371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18372 ( NULL == pEventData->pEventData))
18373 {
18374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 }
18379
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018381 Extract response and send it to UMAC
18382 -------------------------------------------------------------------------*/
18383 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18384 {
18385 wpalMemoryCopy( &halEnterBmpsRsp,
18386 pEventData->pEventData,
18387 sizeof(halEnterBmpsRsp));
18388
18389 //Used to print debug message
18390 halStatus = halEnterBmpsRsp.status;
18391 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18392 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18393 }
18394 else
18395 {
18396 halStatus = *((eHalStatus*)pEventData->pEventData);
18397 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18398 }
18399
18400 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018401
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018402 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18403 * Other module states are taken care by PMC.
18404 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18405 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018406 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18407 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018410 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18411 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018412 /* Call Back is not required as we are putting the DXE in FULL
18413 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018414 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18415 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18416 {
18417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18418 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18419 WDI_ASSERT(0);
18420 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018421 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018422 }
18423
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018425 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018426
Jeff Johnsone7245742012-09-05 17:12:55 -070018427 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018428}/*WDI_ProcessEnterBmpsRsp*/
18429
18430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018433
18434 @param pWDICtx: pointer to the WLAN DAL context
18435 pEventData: pointer to the event information structure
18436
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 @see
18438 @return Result of the function call
18439*/
18440WDI_Status
18441WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018442(
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 WDI_ControlBlockType* pWDICtx,
18444 WDI_EventInfoType* pEventData
18445)
18446{
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 eHalStatus halStatus;
18448 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018449 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018450 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18451 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18453
18454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 -------------------------------------------------------------------------*/
18457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18458 ( NULL == pEventData->pEventData))
18459 {
18460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 }
18465
18466 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18467
18468 /*-------------------------------------------------------------------------
18469 Extract response and send it to UMAC
18470 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018471
18472 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18473 {
18474 wpalMemoryCopy( &halExitBmpsRsp,
18475 pEventData->pEventData,
18476 sizeof(halExitBmpsRsp));
18477
18478 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18479 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18480 }
18481 else
18482 {
18483 halStatus = *((eHalStatus*)pEventData->pEventData);
18484 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18485 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018486
18487 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018488 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18489 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18490 {
18491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18492 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18493 WDI_ASSERT(0);
18494 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18496
18497 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018498 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018499
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018501}/*WDI_ProcessExitBmpsRsp*/
18502
18503/**
18504 @brief Process Enter UAPSD Rsp function (called when a response
18505 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018506
18507 @param pWDICtx: pointer to the WLAN DAL context
18508 pEventData: pointer to the event information structure
18509
Jeff Johnson295189b2012-06-20 16:38:30 -070018510 @see
18511 @return Result of the function call
18512*/
18513WDI_Status
18514WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018515(
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 WDI_ControlBlockType* pWDICtx,
18517 WDI_EventInfoType* pEventData
18518)
18519{
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018521 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018523 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18524
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18526
18527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 -------------------------------------------------------------------------*/
18530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18531 ( NULL == pEventData->pEventData))
18532 {
18533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 }
18538
18539 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18540
18541 /*-------------------------------------------------------------------------
18542 Extract response and send it to UMAC
18543 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018544 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18545 {
18546 wpalMemoryCopy( &halEnterUapsdRsp,
18547 pEventData->pEventData,
18548 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018549
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018550 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18551 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18552 }
18553 else
18554 {
18555 halStatus = *((eHalStatus*)pEventData->pEventData);
18556 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18557 }
18558
18559 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 {
18561 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18562 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18563 // the traffic to decide when to suspend the trigger frames when there is no traffic
18564 // activity on the trigger enabled ACs
18565 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18566
18567#ifdef WLAN_PERF
18568 // Increment the BD signature to refresh the fast path BD utilization
18569 pWDICtx->uBdSigSerialNum++;
18570#endif
18571 }
18572
18573 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018574 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018575
Jeff Johnsone7245742012-09-05 17:12:55 -070018576 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018577}/*WDI_ProcessEnterUapsdRsp*/
18578
18579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018582
18583 @param pWDICtx: pointer to the WLAN DAL context
18584 pEventData: pointer to the event information structure
18585
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 @see
18587 @return Result of the function call
18588*/
18589WDI_Status
18590WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018591(
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 WDI_ControlBlockType* pWDICtx,
18593 WDI_EventInfoType* pEventData
18594)
18595{
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 eHalStatus halStatus;
18597 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018598 tHalExitUapsdRspParams halExitUapsdRsp;
18599 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18601
18602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 -------------------------------------------------------------------------*/
18605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18606 ( NULL == pEventData->pEventData))
18607 {
18608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 }
18613
18614 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18615
18616 /*-------------------------------------------------------------------------
18617 Extract response and send it to UMAC
18618 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018619 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18620 {
18621 wpalMemoryCopy( &halExitUapsdRsp,
18622 pEventData->pEventData,
18623 sizeof(halExitUapsdRsp));
18624
18625 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18626 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18627 }
18628 else
18629 {
18630 halStatus = *((eHalStatus*)pEventData->pEventData);
18631 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18632 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18634 // directly instead of the FW WQ.
18635 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18636
18637#ifdef WLAN_PERF
18638 // Increment the BD signature to refresh the fast path BD utilization
18639 pWDICtx->uBdSigSerialNum++;
18640#endif
18641
18642 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018643 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018644
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018646}/*WDI_ProcessExitUapsdRsp*/
18647
18648/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018649 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018651
18652 @param pWDICtx: pointer to the WLAN DAL context
18653 pEventData: pointer to the event information structure
18654
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 @see
18656 @return Result of the function call
18657*/
18658WDI_Status
18659WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018660(
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 WDI_ControlBlockType* pWDICtx,
18662 WDI_EventInfoType* pEventData
18663)
18664{
18665 WDI_Status wdiStatus;
18666 eHalStatus halStatus;
18667 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18669
18670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 -------------------------------------------------------------------------*/
18673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18674 ( NULL == pEventData->pEventData))
18675 {
18676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018680 }
18681
18682 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18683
18684 /*-------------------------------------------------------------------------
18685 Extract response and send it to UMAC
18686 -------------------------------------------------------------------------*/
18687 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018689
18690 /*Notify UMAC*/
18691 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18692
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018694}/*WDI_ProcessSetUapsdAcParamsRsp*/
18695
18696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018699
18700 @param pWDICtx: pointer to the WLAN DAL context
18701 pEventData: pointer to the event information structure
18702
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 @see
18704 @return Result of the function call
18705*/
18706WDI_Status
18707WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018708(
Jeff Johnson295189b2012-06-20 16:38:30 -070018709 WDI_ControlBlockType* pWDICtx,
18710 WDI_EventInfoType* pEventData
18711)
18712{
18713 WDI_Status wdiStatus;
18714 eHalStatus halStatus;
18715 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18717
18718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 -------------------------------------------------------------------------*/
18721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18722 ( NULL == pEventData->pEventData))
18723 {
18724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 }
18729
18730 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18731
18732 /*-------------------------------------------------------------------------
18733 Extract response and send it to UMAC
18734 -------------------------------------------------------------------------*/
18735 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018736 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018737
18738 /*Notify UMAC*/
18739 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18740
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018742}/*WDI_ProcessUpdateUapsdParamsRsp*/
18743
18744/**
18745 @brief Process Configure RXP filter Rsp function (called when a
18746 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018747
18748 @param pWDICtx: pointer to the WLAN DAL context
18749 pEventData: pointer to the event information structure
18750
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 @see
18752 @return Result of the function call
18753*/
18754WDI_Status
18755WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018756(
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 WDI_ControlBlockType* pWDICtx,
18758 WDI_EventInfoType* pEventData
18759)
18760{
18761 WDI_Status wdiStatus;
18762 eHalStatus halStatus;
18763 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18765
18766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 -------------------------------------------------------------------------*/
18769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18770 ( NULL == pEventData->pEventData))
18771 {
18772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 }
18777
18778 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18779
18780 /*-------------------------------------------------------------------------
18781 Extract response and send it to UMAC
18782 -------------------------------------------------------------------------*/
18783 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018785
18786 /*Notify UMAC*/
18787 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18788
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018790}/*WDI_ProcessConfigureRxpFilterRsp*/
18791
18792/**
18793 @brief Process Set beacon filter Rsp function (called when a
18794 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018795
18796 @param pWDICtx: pointer to the WLAN DAL context
18797 pEventData: pointer to the event information structure
18798
Jeff Johnson295189b2012-06-20 16:38:30 -070018799 @see
18800 @return Result of the function call
18801*/
18802WDI_Status
18803WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018804(
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 WDI_ControlBlockType* pWDICtx,
18806 WDI_EventInfoType* pEventData
18807)
18808{
18809 WDI_Status wdiStatus;
18810 eHalStatus halStatus;
18811 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18813
18814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 -------------------------------------------------------------------------*/
18817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18818 ( NULL == pEventData->pEventData))
18819 {
18820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 }
18825
18826 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18827
18828 /*-------------------------------------------------------------------------
18829 Extract response and send it to UMAC
18830 -------------------------------------------------------------------------*/
18831 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018833
18834 /*Notify UMAC*/
18835 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18836
Jeff Johnsone7245742012-09-05 17:12:55 -070018837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018838}/*WDI_ProcessSetBeaconFilterRsp*/
18839
18840/**
18841 @brief Process remove beacon filter Rsp function (called when a
18842 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018843
18844 @param pWDICtx: pointer to the WLAN DAL context
18845 pEventData: pointer to the event information structure
18846
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 @see
18848 @return Result of the function call
18849*/
18850WDI_Status
18851WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018852(
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 WDI_ControlBlockType* pWDICtx,
18854 WDI_EventInfoType* pEventData
18855)
18856{
18857 WDI_Status wdiStatus;
18858 eHalStatus halStatus;
18859 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18861
18862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 -------------------------------------------------------------------------*/
18865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18866 ( NULL == pEventData->pEventData))
18867 {
18868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018872 }
18873
18874 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18875
18876 /*-------------------------------------------------------------------------
18877 Extract response and send it to UMAC
18878 -------------------------------------------------------------------------*/
18879 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018880 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018881
18882 /*Notify UMAC*/
18883 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18884
Jeff Johnsone7245742012-09-05 17:12:55 -070018885 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018886}/*WDI_ProcessRemBeaconFilterRsp*/
18887
18888/**
18889 @brief Process set RSSI thresholds Rsp function (called when a
18890 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018891
18892 @param pWDICtx: pointer to the WLAN DAL context
18893 pEventData: pointer to the event information structure
18894
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 @see
18896 @return Result of the function call
18897*/
18898WDI_Status
18899WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018900(
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 WDI_ControlBlockType* pWDICtx,
18902 WDI_EventInfoType* pEventData
18903)
18904{
18905 WDI_Status wdiStatus;
18906 eHalStatus halStatus;
18907 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18909
18910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018912 -------------------------------------------------------------------------*/
18913 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18914 ( NULL == pEventData->pEventData))
18915 {
18916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 }
18921
18922 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18923
18924 /*-------------------------------------------------------------------------
18925 Extract response and send it to UMAC
18926 -------------------------------------------------------------------------*/
18927 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018929
18930 /*Notify UMAC*/
18931 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18932
Jeff Johnsone7245742012-09-05 17:12:55 -070018933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018934}/*WDI_ProcessSetRSSIThresoldsRsp*/
18935
18936/**
18937 @brief Process host offload Rsp function (called when a
18938 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018939
18940 @param pWDICtx: pointer to the WLAN DAL context
18941 pEventData: pointer to the event information structure
18942
Jeff Johnson295189b2012-06-20 16:38:30 -070018943 @see
18944 @return Result of the function call
18945*/
18946WDI_Status
18947WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018948(
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 WDI_ControlBlockType* pWDICtx,
18950 WDI_EventInfoType* pEventData
18951)
18952{
18953 WDI_Status wdiStatus;
18954 eHalStatus halStatus;
18955 WDI_HostOffloadCb wdiHostOffloadCb;
18956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18957
18958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 -------------------------------------------------------------------------*/
18961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18962 ( NULL == pEventData->pEventData))
18963 {
18964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 }
18969
18970 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18971
18972 /*-------------------------------------------------------------------------
18973 Extract response and send it to UMAC
18974 -------------------------------------------------------------------------*/
18975 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018977
18978 /*Notify UMAC*/
18979 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18980
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018982}/*WDI_ProcessHostOffloadRsp*/
18983
18984/**
18985 @brief Process keep alive Rsp function (called when a
18986 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018987
18988 @param pWDICtx: pointer to the WLAN DAL context
18989 pEventData: pointer to the event information structure
18990
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 @see
18992 @return Result of the function call
18993*/
18994WDI_Status
18995WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018996(
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 WDI_ControlBlockType* pWDICtx,
18998 WDI_EventInfoType* pEventData
18999)
19000{
19001 WDI_Status wdiStatus;
19002 eHalStatus halStatus;
19003 WDI_KeepAliveCb wdiKeepAliveCb;
19004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19006 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19007
19008
19009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 -------------------------------------------------------------------------*/
19012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19013 ( NULL == pEventData->pEventData))
19014 {
19015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 }
19020
Jeff Johnsone7245742012-09-05 17:12:55 -070019021 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19022
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 /*-------------------------------------------------------------------------
19024 Extract response and send it to UMAC
19025 -------------------------------------------------------------------------*/
19026 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019027 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019028
19029 /*Notify UMAC*/
19030 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19031
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019033}/*WDI_ProcessKeepAliveRsp*/
19034
19035/**
19036 @brief Process wowl add ptrn Rsp function (called when a
19037 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019038
19039 @param pWDICtx: pointer to the WLAN DAL context
19040 pEventData: pointer to the event information structure
19041
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 @see
19043 @return Result of the function call
19044*/
19045WDI_Status
19046WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019047(
Jeff Johnson295189b2012-06-20 16:38:30 -070019048 WDI_ControlBlockType* pWDICtx,
19049 WDI_EventInfoType* pEventData
19050)
19051{
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 eHalStatus halStatus;
19053 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019054 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19055 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19056
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19058
19059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 -------------------------------------------------------------------------*/
19062 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19063 ( NULL == pEventData->pEventData))
19064 {
19065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 }
19070
19071 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19072
19073 /*-------------------------------------------------------------------------
19074 Extract response and send it to UMAC
19075 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019076 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19077 {
19078 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19079 pEventData->pEventData,
19080 sizeof(halAddWowlBcastPtrRsp));
19081
19082 wdiWowlAddBcPtrRsp.wdiStatus =
19083 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19084 }
19085 else
19086 {
19087 halStatus = *((eHalStatus*)pEventData->pEventData);
19088 wdiWowlAddBcPtrRsp.wdiStatus =
19089 WDI_HAL_2_WDI_STATUS(halStatus);
19090 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019091
19092 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019093 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019094
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019096}/*WDI_ProcessWowlAddBcPtrnRsp*/
19097
19098/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019101
19102 @param pWDICtx: pointer to the WLAN DAL context
19103 pEventData: pointer to the event information structure
19104
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 @see
19106 @return Result of the function call
19107*/
19108WDI_Status
19109WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019110(
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 WDI_ControlBlockType* pWDICtx,
19112 WDI_EventInfoType* pEventData
19113)
19114{
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 eHalStatus halStatus;
19116 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019117 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19118 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19120
19121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019122 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 -------------------------------------------------------------------------*/
19124 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19125 ( NULL == pEventData->pEventData))
19126 {
19127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019128 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019131 }
19132
19133 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19134
19135 /*-------------------------------------------------------------------------
19136 Extract response and send it to UMAC
19137 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019138 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19139 {
19140 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19141 pEventData->pEventData,
19142 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019143
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019144 wdiWowlDelBcstPtrRsp.wdiStatus =
19145 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19146 }
19147 else
19148 {
19149 halStatus = *((eHalStatus*)pEventData->pEventData);
19150 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19151 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019153 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019154
Jeff Johnsone7245742012-09-05 17:12:55 -070019155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019156}/*WDI_ProcessWowlDelBcPtrnRsp*/
19157
19158/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019159 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019161
19162 @param pWDICtx: pointer to the WLAN DAL context
19163 pEventData: pointer to the event information structure
19164
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 @see
19166 @return Result of the function call
19167*/
19168WDI_Status
19169WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019170(
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 WDI_ControlBlockType* pWDICtx,
19172 WDI_EventInfoType* pEventData
19173)
19174{
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 eHalStatus halStatus;
19176 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019177 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19178 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19180
19181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019183 -------------------------------------------------------------------------*/
19184 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19185 ( NULL == pEventData->pEventData))
19186 {
19187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 }
19192
19193 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19194
19195 /*-------------------------------------------------------------------------
19196 Extract response and send it to UMAC
19197 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019198 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19199 {
19200 wpalMemoryCopy( &halEnterWowlRspParams,
19201 (wpt_uint8*)pEventData->pEventData,
19202 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019203
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019204 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19205 wdiwowlEnterRsp.status =
19206 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19207 }
19208 else
19209 {
19210 halStatus = *((eHalStatus*)pEventData->pEventData);
19211 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19212 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019214 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019215
Jeff Johnsone7245742012-09-05 17:12:55 -070019216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019217}/*WDI_ProcessWowlEnterRsp*/
19218
19219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019220 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019221 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019222
19223 @param pWDICtx: pointer to the WLAN DAL context
19224 pEventData: pointer to the event information structure
19225
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 @see
19227 @return Result of the function call
19228*/
19229WDI_Status
19230WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019231(
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 WDI_ControlBlockType* pWDICtx,
19233 WDI_EventInfoType* pEventData
19234)
19235{
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 eHalStatus halStatus;
19237 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019238 tHalExitWowlRspParams halExitWowlRspParams;
19239 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19240
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19242
19243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 -------------------------------------------------------------------------*/
19246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19247 ( NULL == pEventData->pEventData))
19248 {
19249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 }
19254
19255 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19256
19257 /*-------------------------------------------------------------------------
19258 Extract response and send it to UMAC
19259 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019260 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19261 {
19262 wpalMemoryCopy( &halExitWowlRspParams,
19263 pEventData->pEventData,
19264 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019265
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019266 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19267 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19268
19269 }
19270 else
19271 {
19272 halStatus = *((eHalStatus*)pEventData->pEventData);
19273 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19274 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019276 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019277
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019279}/*WDI_ProcessWowlExitRsp*/
19280
19281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 (called when a response is being received over the bus
19284 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019285
19286 @param pWDICtx: pointer to the WLAN DAL context
19287 pEventData: pointer to the event information structure
19288
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 @see
19290 @return Result of the function call
19291*/
19292WDI_Status
19293WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019294(
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 WDI_ControlBlockType* pWDICtx,
19296 WDI_EventInfoType* pEventData
19297)
19298{
19299 WDI_Status wdiStatus;
19300 eHalStatus halStatus;
19301 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19303
19304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 -------------------------------------------------------------------------*/
19307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19308 ( NULL == pEventData->pEventData))
19309 {
19310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 }
19315
19316 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19317
19318 /*-------------------------------------------------------------------------
19319 Extract response and send it to UMAC
19320 -------------------------------------------------------------------------*/
19321 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019323
19324 /*Notify UMAC*/
19325 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19326
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19329
19330
19331/**
19332 @brief Process Nv download(called when a response
19333 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019334
19335 @param pWDICtx: pointer to the WLAN DAL context
19336 pEventData: pointer to the event information structure
19337
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 @see
19339 @return Result of the function call
19340*/
19341WDI_Status
19342WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019343(
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 WDI_ControlBlockType* pWDICtx,
19345 WDI_EventInfoType* pEventData
19346)
19347{
19348
19349 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19350 tHalNvImgDownloadRspParams halNvDownloadRsp;
19351 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19352
19353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 -------------------------------------------------------------------------*/
19356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19357 ( NULL == pEventData->pEventData))
19358 {
19359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 }
19364
19365 /*-------------------------------------------------------------------------
19366 Extract response and send it to UMAC
19367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019368 wpalMemoryCopy( &halNvDownloadRsp,
19369 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 sizeof(halNvDownloadRsp));
19371
19372 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19373
19374 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19376 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 {
19378 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019379 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 }
19381 else
19382 {
19383 /*Reset the Nv related global information in WDI context information */
19384 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19385 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19386 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19387 /*call WDA callback function for last fragment */
19388 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19389 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19390 }
19391
Jeff Johnsone7245742012-09-05 17:12:55 -070019392 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019393}
19394#ifdef WLAN_FEATURE_VOWIFI_11R
19395/**
19396 @brief Process Add TSpec Rsp function (called when a response
19397 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019398
19399 @param pWDICtx: pointer to the WLAN DAL context
19400 pEventData: pointer to the event information structure
19401
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 @see
19403 @return Result of the function call
19404*/
19405WDI_Status
19406WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019407(
Jeff Johnson295189b2012-06-20 16:38:30 -070019408 WDI_ControlBlockType* pWDICtx,
19409 WDI_EventInfoType* pEventData
19410)
19411{
19412 WDI_Status wdiStatus;
19413 tAggrAddTsRspParams aggrAddTsRsp;
19414 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19416
19417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019419 -------------------------------------------------------------------------*/
19420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19421 ( NULL == pEventData->pEventData))
19422 {
19423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 }
19428
19429 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19430
19431 /*-------------------------------------------------------------------------
19432 Extract response and send it to UMAC
19433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019434 wpalMemoryCopy( &aggrAddTsRsp,
19435 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 sizeof(aggrAddTsRsp));
19437
19438 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019439 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019440
19441 /*Notify UMAC*/
19442 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19443
Jeff Johnsone7245742012-09-05 17:12:55 -070019444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019445}/*WDI_ProcessAddTSpecRsp*/
19446#endif /* WLAN_FEATURE_VOWIFI_11R */
19447
19448/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019451
19452 @param pWDICtx: pointer to the WLAN DAL context
19453 pEventData: pointer to the event information structure
19454
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 @see
19456 @return Result of the function call
19457*/
19458WDI_Status
19459WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019460(
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 WDI_ControlBlockType* pWDICtx,
19462 WDI_EventInfoType* pEventData
19463)
19464{
19465 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19466 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19467 tHalHostResumeRspParams hostResumeRspMsg;
19468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19469
19470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 -------------------------------------------------------------------------*/
19473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19474 ( NULL == pEventData->pEventData))
19475 {
19476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 }
19481
19482 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19483
19484 /*-------------------------------------------------------------------------
19485 Extract response and send it to UMAC
19486 -------------------------------------------------------------------------*/
19487
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 (wpt_uint8*)pEventData->pEventData,
19490 sizeof(hostResumeRspMsg));
19491
Jeff Johnsone7245742012-09-05 17:12:55 -070019492 wdiResumeRspParams.wdiStatus =
19493 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019494
19495 /*Notify UMAC*/
19496 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19497
19498 return WDI_STATUS_SUCCESS;
19499}
19500
19501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019504
19505 @param pWDICtx: pointer to the WLAN DAL context
19506 pEventData: pointer to the event information structure
19507
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 @see
19509 @return Result of the function call
19510*/
19511WDI_Status
19512WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019513(
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 WDI_ControlBlockType* pWDICtx,
19515 WDI_EventInfoType* pEventData
19516)
19517{
19518 WDI_Status wdiStatus;
19519 eHalStatus halStatus;
19520 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19522
19523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 -------------------------------------------------------------------------*/
19526 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19527 ( NULL == pEventData->pEventData))
19528 {
19529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019534
19535 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019536
19537 /*-------------------------------------------------------------------------
19538 Extract response and send it to UMAC
19539 -------------------------------------------------------------------------*/
19540 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019542
19543 /*Notify UMAC*/
19544 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19545
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019547}/*WDI_ProcessSetTxPerTrackingRsp*/
19548
19549/*==========================================================================
19550 Indications from HAL
19551 ==========================================================================*/
19552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019553 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 indication of this kind is being received over the bus
19555 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019556
19557 @param pWDICtx: pointer to the WLAN DAL context
19558 pEventData: pointer to the event information structure
19559
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 @see
19561 @return Result of the function call
19562*/
19563WDI_Status
19564WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019565(
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 WDI_ControlBlockType* pWDICtx,
19567 WDI_EventInfoType* pEventData
19568)
19569{
19570 WDI_LowLevelIndType wdiInd;
19571 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19573
19574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 -------------------------------------------------------------------------*/
19577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19578 ( NULL == pEventData->pEventData))
19579 {
19580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 }
19585
19586 /*-------------------------------------------------------------------------
19587 Extract indication and send it to UMAC
19588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19590 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019591 sizeof(tHalRSSINotification));
19592
19593 /*Fill in the indication parameters*/
19594 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19595 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19596 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19597 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19598 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19599 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19600 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19601 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19602 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19603 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19604 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19605 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19606 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019607 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19608 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019609
ltimariu034f7d62013-01-24 18:54:33 -080019610 if ( pWDICtx->wdiLowLevelIndCB )
19611 {
19612 /*Notify UMAC of indication*/
19613 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19614 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019615
19616 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019617}/*WDI_ProcessLowRSSIInd*/
19618
19619
19620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019621 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 an indication of this kind is being received over the
19623 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019624
19625 @param pWDICtx: pointer to the WLAN DAL context
19626 pEventData: pointer to the event information structure
19627
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 @see
19629 @return Result of the function call
19630*/
19631WDI_Status
19632WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019633(
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 WDI_ControlBlockType* pWDICtx,
19635 WDI_EventInfoType* pEventData
19636)
19637{
19638 WDI_Status wdiStatus;
19639 eHalStatus halStatus;
19640 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019641 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19643
19644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 -------------------------------------------------------------------------*/
19647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19648 ( NULL == pEventData->pEventData))
19649 {
19650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019655 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 /*-------------------------------------------------------------------------
19657 Extract indication and send it to UMAC
19658 -------------------------------------------------------------------------*/
19659 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19660 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019661 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019662
19663 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019665 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19666 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019667 if ( pWDICtx->wdiLowLevelIndCB )
19668 {
19669 /*Notify UMAC*/
19670 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19671 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019672
19673 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019674}/*WDI_ProcessMissedBeaconInd*/
19675
19676
19677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 an indication of this kind is being received over the
19680 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019681
19682 @param pWDICtx: pointer to the WLAN DAL context
19683 pEventData: pointer to the event information structure
19684
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 @see
19686 @return Result of the function call
19687*/
19688WDI_Status
19689WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019690(
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 WDI_ControlBlockType* pWDICtx,
19692 WDI_EventInfoType* pEventData
19693)
19694{
19695 WDI_Status wdiStatus;
19696 eHalStatus halStatus;
19697 WDI_LowLevelIndType wdiInd;
19698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19699
19700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 -------------------------------------------------------------------------*/
19703 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19704 ( NULL == pEventData->pEventData))
19705 {
19706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 }
19711
19712 /*-------------------------------------------------------------------------
19713 Extract indication and send it to UMAC
19714 -------------------------------------------------------------------------*/
19715 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19716 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019718
19719 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019720 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019721 /* ! TO DO - fill in from HAL struct:
19722 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19723
ltimariu034f7d62013-01-24 18:54:33 -080019724 if ( pWDICtx->wdiLowLevelIndCB )
19725 {
19726 /*Notify UMAC*/
19727 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19728 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019729
19730 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019731}/*WDI_ProcessUnkAddrFrameInd*/
19732
19733
19734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 indication of this kind is being received over the bus
19737 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019738
19739 @param pWDICtx: pointer to the WLAN DAL context
19740 pEventData: pointer to the event information structure
19741
Jeff Johnson295189b2012-06-20 16:38:30 -070019742 @see
19743 @return Result of the function call
19744*/
19745WDI_Status
19746WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019747(
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 WDI_ControlBlockType* pWDICtx,
19749 WDI_EventInfoType* pEventData
19750)
19751{
19752 WDI_LowLevelIndType wdiInd;
19753 tpSirMicFailureInd pHalMicFailureInd;
19754
19755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19756
19757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 -------------------------------------------------------------------------*/
19760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19761 ( NULL == pEventData->pEventData))
19762 {
19763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019768
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19770 /*-------------------------------------------------------------------------
19771 Extract indication and send it to UMAC
19772 -------------------------------------------------------------------------*/
19773
19774 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19777 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19778 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19779 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19780 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19781 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19782 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19783 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019786 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 pHalMicFailureInd->info.keyId;
19790 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19791 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19792 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19793 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019794
19795 if ( pWDICtx->wdiLowLevelIndCB )
19796 {
19797 /*Notify UMAC*/
19798 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19799 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019800
19801 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019802}/*WDI_ProcessMicFailureInd*/
19803
19804
19805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019806 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019807 an indication of this kind is being received over the
19808 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019809
19810 @param pWDICtx: pointer to the WLAN DAL context
19811 pEventData: pointer to the event information structure
19812
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 @see
19814 @return Result of the function call
19815*/
19816WDI_Status
19817WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019818(
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 WDI_ControlBlockType* pWDICtx,
19820 WDI_EventInfoType* pEventData
19821)
19822{
19823 WDI_Status wdiStatus;
19824 eHalStatus halStatus;
19825 WDI_LowLevelIndType wdiInd;
19826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19827
19828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 -------------------------------------------------------------------------*/
19831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19832 ( NULL == pEventData->pEventData))
19833 {
19834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019838 }
19839
19840 /*-------------------------------------------------------------------------
19841 Extract indication and send it to UMAC
19842 -------------------------------------------------------------------------*/
19843
19844 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19845 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019846 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019847
19848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19849 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019850
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19853 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019854
ltimariu034f7d62013-01-24 18:54:33 -080019855 if ( pWDICtx->wdiLowLevelIndCB )
19856 {
19857 /*Notify UMAC*/
19858 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19859 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019860
19861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019862}/*WDI_ProcessFatalErrorInd*/
19863
19864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 an indication of this kind is being received over the
19867 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019868
19869 @param pWDICtx: pointer to the WLAN DAL context
19870 pEventData: pointer to the event information structure
19871
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 @see
19873 @return Result of the function call
19874*/
19875WDI_Status
19876WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019877(
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 WDI_ControlBlockType* pWDICtx,
19879 WDI_EventInfoType* pEventData
19880)
19881{
19882 tDeleteStaContextParams halDelSTACtx;
19883 WDI_LowLevelIndType wdiInd;
19884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19885
19886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019888 -------------------------------------------------------------------------*/
19889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19890 ( NULL == pEventData->pEventData))
19891 {
19892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 }
19897
19898 /*-------------------------------------------------------------------------
19899 Extract indication and send it to UMAC
19900 -------------------------------------------------------------------------*/
19901
19902 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019903 wpalMemoryCopy( &halDelSTACtx,
19904 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 sizeof(halDelSTACtx));
19906
19907 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019909
19910 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19911 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19912 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19913 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19914
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019917 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19920 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019921
ltimariu034f7d62013-01-24 18:54:33 -080019922 if ( pWDICtx->wdiLowLevelIndCB )
19923 {
19924 /*Notify UMAC*/
19925 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19926 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019927
19928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019929}/*WDI_ProcessDelSTAInd*/
19930
19931/**
19932*@brief Process Coex Indication function (called when
19933 an indication of this kind is being received over the
19934 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019935
19936 @param pWDICtx: pointer to the WLAN DAL context
19937 pEventData: pointer to the event information structure
19938
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 @see
19940 @return Result of the function call
19941*/
19942WDI_Status
19943WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019944(
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 WDI_ControlBlockType* pWDICtx,
19946 WDI_EventInfoType* pEventData
19947)
19948{
19949 WDI_LowLevelIndType wdiInd;
19950 tCoexIndMsg halCoexIndMsg;
19951 wpt_uint32 index;
19952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19953
19954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 -------------------------------------------------------------------------*/
19957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19958 ( NULL == pEventData->pEventData ))
19959 {
19960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 }
19965
19966 /*-------------------------------------------------------------------------
19967 Extract indication and send it to UMAC
19968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019969 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19970 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 sizeof(halCoexIndMsg.coexIndParams) );
19972
19973 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 wdiInd.wdiIndicationType = WDI_COEX_IND;
19975 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19977 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 }
19980
19981 // DEBUG
19982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19983 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019984 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19985 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19986 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19987 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19988 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019989
ltimariu034f7d62013-01-24 18:54:33 -080019990 if ( pWDICtx->wdiLowLevelIndCB )
19991 {
19992 /*Notify UMAC*/
19993 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19994 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019995
19996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019997}/*WDI_ProcessCoexInd*/
19998
19999/**
20000*@brief Process Tx Complete Indication function (called when
20001 an indication of this kind is being received over the
20002 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020003
20004 @param pWDICtx: pointer to the WLAN DAL context
20005 pEventData: pointer to the event information structure
20006
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 @see
20008 @return Result of the function call
20009*/
20010WDI_Status
20011WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020012(
Jeff Johnson295189b2012-06-20 16:38:30 -070020013 WDI_ControlBlockType* pWDICtx,
20014 WDI_EventInfoType* pEventData
20015)
20016{
20017 WDI_LowLevelIndType wdiInd;
20018 tTxComplIndMsg halTxComplIndMsg;
20019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20020
20021 /*-------------------------------------------------------------------------
20022 Sanity check
20023 -------------------------------------------------------------------------*/
20024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20025 ( NULL == pEventData->pEventData ))
20026 {
20027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020029 WDI_ASSERT( 0 );
20030 return WDI_STATUS_E_FAILURE;
20031 }
20032
20033 /*-------------------------------------------------------------------------
20034 Extract indication and send it to UMAC
20035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020036 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20037 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 sizeof(halTxComplIndMsg.txComplParams) );
20039
20040 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20042 wdiInd.wdiIndicationData.tx_complete_status
20043 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020044
ltimariu034f7d62013-01-24 18:54:33 -080020045 if ( pWDICtx->wdiLowLevelIndCB )
20046 {
20047 /*Notify UMAC*/
20048 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20049 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020050
20051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020052}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020053#ifdef FEATURE_WLAN_TDLS
20054/**
20055*@brief Process TDLS Indication function (called when
20056 an indication of this kind is being received over the
20057 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020058
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020059 @param pWDICtx: pointer to the WLAN DAL context
20060 pEventData: pointer to the event information structure
20061
20062 @see
20063 @return Result of the function call
20064*/
20065WDI_Status
20066WDI_ProcessTdlsInd
20067(
20068 WDI_ControlBlockType* pWDICtx,
20069 WDI_EventInfoType* pEventData
20070)
20071{
20072 WDI_LowLevelIndType wdiInd;
20073 tTdlsIndMsg halTdlsIndMsg;
20074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20075
20076 /*-------------------------------------------------------------------------
20077 Sanity check
20078 -------------------------------------------------------------------------*/
20079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20080 ( NULL == pEventData->pEventData ))
20081 {
20082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20083 "%s: Invalid parameters", __func__);
20084 WDI_ASSERT( 0 );
20085 return WDI_STATUS_E_FAILURE;
20086 }
20087
20088 /*-------------------------------------------------------------------------
20089 Extract indication and send it to UMAC
20090 -------------------------------------------------------------------------*/
20091 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20092 pEventData->pEventData,
20093 sizeof(halTdlsIndMsg.tdlsIndParams) );
20094
20095 /*Fill in the indication parameters*/
20096 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20097
20098 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20099 = halTdlsIndMsg.tdlsIndParams.status;
20100
20101 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20102 = halTdlsIndMsg.tdlsIndParams.staIdx;
20103
20104 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20105 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20106
20107 /*Notify UMAC*/
20108 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20109
20110 return WDI_STATUS_SUCCESS;
20111}/*WDI_ProcessTdlsInd*/
20112#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020113/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020114*@brief Process Noa Start Indication function (called when
20115 an indication of this kind is being received over the
20116 bus from HAL)
20117
20118 @param pWDICtx: pointer to the WLAN DAL context
20119 pEventData: pointer to the event information structure
20120
20121 @see
20122 @return Result of the function call
20123*/
20124WDI_Status
20125WDI_ProcessP2pNoaStartInd
20126(
20127 WDI_ControlBlockType* pWDICtx,
20128 WDI_EventInfoType* pEventData
20129)
20130{
20131 WDI_LowLevelIndType wdiInd;
20132 tNoaStartIndMsg halNoaStartIndMsg;
20133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20134
20135 /*-------------------------------------------------------------------------
20136 Sanity check
20137 -------------------------------------------------------------------------*/
20138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20139 ( NULL == pEventData->pEventData ))
20140 {
20141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20142 "%s: Invalid parameters", __func__);
20143 WDI_ASSERT( 0 );
20144 return WDI_STATUS_E_FAILURE;
20145 }
20146
20147 /*-------------------------------------------------------------------------
20148 Extract indication and send it to UMAC
20149 -------------------------------------------------------------------------*/
20150 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20151 pEventData->pEventData,
20152 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20153
20154 /*Fill in the indication parameters*/
20155 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20156
20157 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20158 = halNoaStartIndMsg.noaStartIndParams.status;
20159
20160 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20161 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20162
20163 /*Notify UMAC*/
20164 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20165
20166 return WDI_STATUS_SUCCESS;
20167}/*WDI_ProcessNoaAttrInd*/
20168
20169/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020170*@brief Process Noa Attr Indication function (called when
20171 an indication of this kind is being received over the
20172 bus from HAL)
20173
20174 @param pWDICtx: pointer to the WLAN DAL context
20175 pEventData: pointer to the event information structure
20176
20177 @see
20178 @return Result of the function call
20179*/
20180WDI_Status
20181WDI_ProcessP2pNoaAttrInd
20182(
20183 WDI_ControlBlockType* pWDICtx,
20184 WDI_EventInfoType* pEventData
20185)
20186{
20187 WDI_LowLevelIndType wdiInd;
20188 tNoaAttrIndMsg halNoaAttrIndMsg;
20189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20190
20191 /*-------------------------------------------------------------------------
20192 Sanity check
20193 -------------------------------------------------------------------------*/
20194 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20195 ( NULL == pEventData->pEventData ))
20196 {
20197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020199 WDI_ASSERT( 0 );
20200 return WDI_STATUS_E_FAILURE;
20201 }
20202
20203 /*-------------------------------------------------------------------------
20204 Extract indication and send it to UMAC
20205 -------------------------------------------------------------------------*/
20206 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20207 pEventData->pEventData,
20208 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20209
20210 /*Fill in the indication parameters*/
20211 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020212
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20214 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020215
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20217 = halNoaAttrIndMsg.noaAttrIndParams.index;
20218 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20219 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20220 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20221 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020222
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20224 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20225 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20226 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20227 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20228 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20229 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20230 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020231
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20233 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20234 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20235 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20236 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20237 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20238 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20239 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20240
ltimariu034f7d62013-01-24 18:54:33 -080020241 if ( pWDICtx->wdiLowLevelIndCB )
20242 {
20243 /*Notify UMAC*/
20244 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20245 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020246
20247 return WDI_STATUS_SUCCESS;
20248}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020249
20250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020251 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 an indication of this kind is being received over the
20253 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020254
20255 @param pWDICtx: pointer to the WLAN DAL context
20256 pEventData: pointer to the event information structure
20257
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 @see
20259 @return Result of the function call
20260*/
20261WDI_Status
20262WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020263(
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 WDI_ControlBlockType* pWDICtx,
20265 WDI_EventInfoType* pEventData
20266)
20267{
20268 WDI_LowLevelIndType wdiInd;
20269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020270
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 /*-------------------------------------------------------------------------
20272 Extract indication and send it to UMAC
20273 -------------------------------------------------------------------------*/
20274 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020275 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20276
ltimariu034f7d62013-01-24 18:54:33 -080020277 if ( pWDICtx->wdiLowLevelIndCB )
20278 {
20279 /*Notify UMAC*/
20280 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20281 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020282
Jeff Johnsone7245742012-09-05 17:12:55 -070020283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020284}/*WDI_ProcessTxPerHitInd*/
20285
Jeff Johnson295189b2012-06-20 16:38:30 -070020286/**
Yue Ma365933a2013-08-14 15:59:08 -070020287 @brief Process Periodic Tx Pattern Fw Indication function
20288
20289 @param pWDICtx: pointer to the WLAN DAL context
20290 pEventData: pointer to the event information structure
20291
20292 @see
20293 @return Result of the function call
20294*/
20295WDI_Status
20296WDI_ProcessPeriodicTxPtrnFwInd
20297(
20298 WDI_ControlBlockType* pWDICtx,
20299 WDI_EventInfoType* pEventData
20300)
20301{
20302 WDI_LowLevelIndType wdiInd;
20303
20304 /*-------------------------------------------------------------------------
20305 Sanity check
20306 -------------------------------------------------------------------------*/
20307 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20308 (NULL == pEventData->pEventData))
20309 {
20310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20311 "%s: Invalid parameters", __func__);
20312 WDI_ASSERT(0);
20313 return WDI_STATUS_E_FAILURE;
20314 }
20315
20316 /*-------------------------------------------------------------------------
20317 Extract indication and send it to UMAC
20318 -------------------------------------------------------------------------*/
20319 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20320 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20321 sizeof(tHalPeriodicTxPtrnFwInd));
20322
20323 if (pWDICtx->wdiLowLevelIndCB)
20324 {
20325 /*Notify UMAC*/
20326 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20327 }
20328
20329 return WDI_STATUS_SUCCESS;
20330}
20331
20332/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 @brief WDI_ProcessFTMCommandReq
20334 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020335
20336 @param pWDICtx: pointer to the WLAN DAL context
20337 pEventData: pointer to the event information structure
20338
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 @see
20340 @return Result of the function call
20341*/
20342WDI_Status
20343WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020344(
Jeff Johnson295189b2012-06-20 16:38:30 -070020345 WDI_ControlBlockType* pWDICtx,
20346 WDI_EventInfoType* pEventData
20347)
20348{
20349 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20350 wpt_uint8 *ftmCommandBuffer = NULL;
20351 wpt_uint16 dataOffset;
20352 wpt_uint16 bufferSize;
20353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 -------------------------------------------------------------------------*/
20356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20357 ( NULL == pEventData->pEventData))
20358
20359 {
20360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 }
20365
20366 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20367
20368 /* Get MSG Buffer */
20369 WDI_GetMessageBuffer(pWDICtx,
20370 WDI_FTM_CMD_REQ,
20371 ftmCommandReq->bodyLength,
20372 &ftmCommandBuffer,
20373 &dataOffset,
20374 &bufferSize);
20375
20376 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20377 ftmCommandReq->FTMCommandBody,
20378 ftmCommandReq->bodyLength);
20379
20380 /* Send MSG */
20381 return WDI_SendMsg(pWDICtx,
20382 ftmCommandBuffer,
20383 bufferSize,
20384 pEventData->pCBfnc,
20385 pEventData->pUserData,
20386 WDI_FTM_CMD_RESP);
20387}
20388
20389/**
20390 @brief WDI_ProcessFTMCommandRsp
20391 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020392
20393 @param pWDICtx: pointer to the WLAN DAL context
20394 pEventData: pointer to the event information structure
20395
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 @see
20397 @return Result of the function call
20398*/
20399WDI_Status
20400WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020401(
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 WDI_ControlBlockType* pWDICtx,
20403 WDI_EventInfoType* pEventData
20404)
20405{
20406 WDI_FTMCommandRspCb ftmCMDRspCb;
20407 tProcessPttRspParams *ftmCMDRspData = NULL;
20408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20409
20410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020412 -------------------------------------------------------------------------*/
20413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20414 ( NULL == pEventData->pEventData))
20415 {
20416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 }
20421
20422 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20423
20424 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20425
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20427 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20429
20430 /*Notify UMAC*/
20431 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20432
Jeff Johnsone7245742012-09-05 17:12:55 -070020433 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020434}
Jeff Johnson295189b2012-06-20 16:38:30 -070020435/**
20436 @brief WDI_ProcessHalDumpCmdReq
20437 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020438
20439 @param pWDICtx: pointer to the WLAN DAL context
20440 pEventData: pointer to the event information structure
20441
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 @see
20443 @return Result of the function call
20444*/
20445WDI_Status
20446WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020447(
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 WDI_ControlBlockType* pWDICtx,
20449 WDI_EventInfoType* pEventData
20450)
20451{
20452 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20453 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20454 wpt_uint16 usDataOffset = 0;
20455 wpt_uint16 usSendSize = 0;
20456 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020458
20459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 -------------------------------------------------------------------------*/
20462 if (( NULL == pEventData ) ||
20463 ( NULL == pEventData->pEventData) ||
20464 ( NULL == pEventData->pCBfnc ))
20465 {
20466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 }
20471
20472 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20473 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20474
20475 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020478 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020486
Jeff Johnson295189b2012-06-20 16:38:30 -070020487 /*-----------------------------------------------------------------------
20488 Get message buffer
20489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20492 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20495 {
20496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20497 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20498 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020501 }
20502
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 wpalMemoryCopy( pSendBuffer+usDataOffset,
20504 &halDumpCmdReqMsg.dumpCmdReqParams,
20505 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020506
20507 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020509
20510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20514 wdiHALDumpCmdRspCb, pEventData->pUserData,
20515 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020516}
20517
20518/**
20519 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 Process hal Dump Command Response from HAL, simply route to HDD
20521
20522 @param pWDICtx: pointer to the WLAN DAL context
20523 pEventData: pointer to the event information structure
20524
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 @see
20526 @return Result of the function call
20527*/
20528WDI_Status
20529WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020530(
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 WDI_ControlBlockType* pWDICtx,
20532 WDI_EventInfoType* pEventData
20533)
20534{
20535 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020536 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20538
20539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 -------------------------------------------------------------------------*/
20542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20543 ( NULL == pEventData->pEventData))
20544 {
20545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 }
20550
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020552
20553 /*Initialize the WDI Response structure */
20554 wdiHALDumpCmdRsp.usBufferLen = 0;
20555 wdiHALDumpCmdRsp.pBuffer = NULL;
20556
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020557 wpalMemoryCopy( &halDumpCmdRspParams,
20558 pEventData->pEventData,
20559 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020560
20561 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020562 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020563
20564 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020565 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 {
20567 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020568 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20569 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20570
20571 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20572 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020573 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020575
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 /*Notify UMAC*/
20577 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20578
20579 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20580 {
20581 /* Free the allocated buffer */
20582 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20583 }
20584 return WDI_STATUS_SUCCESS;
20585}
20586
20587/*==========================================================================
20588 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020589
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020592==========================================================================*/
20593/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 when it wishes to send up a notification like the ones
20596 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020597
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020599
20600 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 wctsNotifyCBData: the callback data of the user
20603
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020605
20606 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020607*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020608void
Jeff Johnson295189b2012-06-20 16:38:30 -070020609WDI_NotifyMsgCTSCB
20610(
Jeff Johnsone7245742012-09-05 17:12:55 -070020611 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 WCTS_NotifyEventType wctsEvent,
20613 void* wctsNotifyCBData
20614)
20615{
Jeff Johnsone7245742012-09-05 17:12:55 -070020616 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20618
20619 if (NULL == pWDICtx )
20620 {
20621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020624 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 }
20626
20627 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20628 {
20629 /* callback presumably occurred after close */
20630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020631 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 }
20634
20635 if ( WCTS_EVENT_OPEN == wctsEvent )
20636 {
20637 /*Flag must be set atomically as it is checked from incoming request
20638 functions*/
20639 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641
20642 /*Nothing to do - so try to dequeue any pending request that may have
20643 occurred while we were trying to establish this*/
20644 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 {
20649 /*Flag must be set atomically as it is checked from incoming request
20650 functions*/
20651 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020653
20654 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 wpalMutexRelease(&pWDICtx->wptMutex);
20657
20658 /*Notify that the Control Channel is closed */
20659 wpalEventSet(&pWDICtx->wctsActionEvent);
20660 }
20661
20662}/*WDI_NotifyMsgCTSCB*/
20663
20664
20665/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020666 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 when it wishes to send up a packet received over the
20668 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020669
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020671
20672 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 pMsg: the packet
20674 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 wctsRxMsgCBData: the callback data of the user
20676
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020678
20679 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020680*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020681void
20682WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020683(
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 void* pMsg,
20686 wpt_uint32 uLen,
20687 void* wctsRxMsgCBData
20688)
20689{
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 tHalMsgHeader *pHalMsgHeader;
20691 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20694
20695 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 ( uLen < sizeof(tHalMsgHeader)))
20700 {
20701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020704 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 }
20706
20707 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20708 {
20709 /* callback presumably occurred after close */
20710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020711 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 }
20714
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 context - so no serialization is necessary here
20717 ! - revisit this assumption */
20718
20719 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20720
20721 if ( uLen != pHalMsgHeader->msgLen )
20722 {
20723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20724 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20726 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 }
20728
20729 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20730
20731 /*The message itself starts after the header*/
20732 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20733 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20734 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20735 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20736
20737
20738 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20739 {
20740 /*Stop the timer as the response was received */
20741 /*!UT - check for potential race conditions between stop and response */
20742 wpalTimerStop(&pWDICtx->wptResponseTimer);
20743 }
20744 /* Check if we receive a response message which is not expected */
20745 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20746 {
20747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20748 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20749 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20752 pWDICtx->wdiExpectedResponse);
20753 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa17ef2a62013-08-29 15:27:56 -070020754 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 return;
20756 }
20757
20758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20759 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20760
20761 /*Post response event to the state machine*/
20762 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20763
20764}/*WDI_RXMsgCTSCB*/
20765
20766
20767/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020769========================================================================*/
20770
20771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020774
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 @param pWDICtx - pointer to the control block
20776
20777 @return Result of the function call
20778*/
20779WPT_INLINE WDI_Status
20780WDI_CleanCB
20781(
20782 WDI_ControlBlockType* pWDICtx
20783)
20784{
20785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20786
20787 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020789
Jeff Johnsone7245742012-09-05 17:12:55 -070020790 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20792 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20793
20794 WDI_ResetAssocSessions( pWDICtx );
20795
20796 return WDI_STATUS_SUCCESS;
20797}/*WDI_CleanCB*/
20798
20799
20800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020802
Jeff Johnsone7245742012-09-05 17:12:55 -070020803
20804 @param pWDICtx: pointer to the WLAN DAL context
20805 pEventData: pointer to the event information structure
20806
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 @see
20808 @return Result of the function call
20809*/
20810WPT_INLINE WDI_Status
20811WDI_ProcessRequest
20812(
20813 WDI_ControlBlockType* pWDICtx,
20814 WDI_EventInfoType* pEventData
20815)
20816{
20817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20818
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 already checked these pointers*/
20821
20822 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20823 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20826 "Calling request processing function for req %s (%d) %x",
20827 WDI_getReqMsgString(pEventData->wdiRequest),
20828 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20829 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20830 }
20831 else
20832 {
20833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 pEventData->wdiRequest);
20836 return WDI_STATUS_E_NOT_IMPLEMENT;
20837 }
20838}/*WDI_ProcessRequest*/
20839
20840
20841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 prefixes it with a send message header
20845
20846 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 wdiReqType: type of the request being sent
20848 uBufferLen: message buffer len
20849 pMsgBuffer: resulting allocated buffer
20850 pusDataOffset: offset in the buffer where the caller
20851 can start copying its message data
20852 puBufferSize: the resulting buffer size (offset+buff
20853 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020854
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 @see
20856 @return Result of the function call
20857*/
20858WDI_Status
20859WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020860(
20861 WDI_ControlBlockType* pWDICtx,
20862 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 wpt_uint8** pMsgBuffer,
20865 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 wpt_uint16* pusBufferSize
20867)
20868{
20869 tHalMsgHeader halMsgHeader;
20870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20871
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 again*/
20874
20875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020878 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20880 if ( NULL == *pMsgBuffer )
20881 {
20882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20883 "Unable to allocate message buffer for req %s (%d)",
20884 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020885 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 }
20889
20890 /*-------------------------------------------------------------------------
20891 Fill in the message header
20892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20894 /* Fill msgVersion */
20895#ifdef WLAN_FEATURE_11AC
20896 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020897 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 else
20899#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020900 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020901
Jeff Johnsone7245742012-09-05 17:12:55 -070020902 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20903 *pusDataOffset = sizeof(halMsgHeader);
20904 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20905
20906 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020907}/*WDI_GetMessageBuffer*/
20908
20909
20910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 the CB
20914
20915 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020917
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 usSendSize size of the buffer to be sent
20919 pRspCb: response callback - save in the WDI
20920 CB
20921 pUserData: user data associated with the
20922 callback
20923 wdiExpectedResponse: the code of the response that is
20924 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020925
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 @see
20927 @return Result of the function call
20928*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020929WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020930WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020931(
20932 WDI_ControlBlockType* pWDICtx,
20933 wpt_uint8* pSendBuffer,
20934 wpt_uint32 usSendSize,
20935 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 void* pUserData,
20937 WDI_ResponseEnumType wdiExpectedResponse
20938)
20939{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020940 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020941 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20943
20944 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020945 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 ------------------------------------------------------------------------*/
20947 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 pWDICtx->pfncRspCB = pRspCb;
20949 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020950
20951 /*-----------------------------------------------------------------------
20952 Call the CTS to send this message over - free message afterwards
20953 - notify transport failure
20954 Note: CTS is reponsible for freeing the message buffer.
20955 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020956 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20957 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20958 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 "Failed to send message over the bus - catastrophic failure");
20962
Jeff Johnsond13512a2012-07-17 11:42:19 -070020963 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020965 else
20966 {
20967 /* even when message was placed in CTS deferred Q, we will treat it
20968 success but log this info
20969 */
20970 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20971 {
20972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20973 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20974 "response %s (%d)",
20975 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20976 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020977 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020978 }
20979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020980
Jeff Johnsond13512a2012-07-17 11:42:19 -070020981 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 if ( NULL != pWDICtx->wdiReqStatusCB )
20983 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020984 /*Inform originator whether request went through or not*/
20985 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20986 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 pWDICtx->wdiReqStatusCB = NULL;
20988 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020989 callback(wdiStatus, callbackContext);
20990
20991 /*For WDI requests which have registered a request callback,
20992 inform the WDA caller of the same via setting the return value
20993 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20994 end up repeating the functonality in the req callback for the
20995 WDI_STATUS_E_FAILURE case*/
20996 if (wdiStatus == WDI_STATUS_E_FAILURE)
20997 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 }
20999
Jeff Johnsond13512a2012-07-17 11:42:19 -070021000 if ( wdiStatus == WDI_STATUS_SUCCESS )
21001 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 /*Start timer for the expected response */
21003 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021004
21005 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021006 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021007 }
21008 else
21009 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021010 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021011 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21012 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021013
Jeff Johnsond13512a2012-07-17 11:42:19 -070021014 return wdiStatus;
21015
Jeff Johnson295189b2012-06-20 16:38:30 -070021016}/*WDI_SendMsg*/
21017
21018
21019
21020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 the bus using the control transport and saves some info
21023 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021024
21025 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 pSendBuffer: buffer to be sent
21027 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021028
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 @see
21030 @return Result of the function call
21031*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021033WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021034(
21035 WDI_ControlBlockType* pWDICtx,
21036 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 wpt_uint32 usSendSize
21038)
21039{
21040 wpt_uint32 uStatus ;
21041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21042
21043 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 Note: CTS is reponsible for freeing the message buffer.
21046 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021047 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 (void*)pSendBuffer, usSendSize );
21049
21050 /*Inform Upper MAC about the outcome of the request*/
21051 if ( NULL != pWDICtx->wdiReqStatusCB )
21052 {
21053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21054 "Send indication status : %d", uStatus);
21055
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021056 /* even if CTS placed indication into its deferred Q, we treat it
21057 * as success and let CTS drain its queue as per smd interrupt to CTS
21058 */
21059 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 -070021060 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 }
21062
21063 /*If sending of the message failed - it is considered catastrophic and
21064 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021065 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21066 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21067
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 {
21069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021070 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021071
21072 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21073 return WDI_STATUS_E_FAILURE;
21074 }
21075
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021077}/*WDI_SendIndication*/
21078
21079
21080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 @brief WDI_DetectedDeviceError - called internally by DAL when
21082 it has detected a failure in the device
21083
21084 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 usErrorCode: error code detected by WDI or received
21086 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021087
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021090*/
21091void
21092WDI_DetectedDeviceError
21093(
21094 WDI_ControlBlockType* pWDICtx,
21095 wpt_uint16 usErrorCode
21096)
21097{
21098 WDI_LowLevelIndType wdiInd;
21099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21100
21101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21102 "Device Error detected code: %d - transitioning to stopped state",
21103 usErrorCode);
21104
21105 wpalMutexAcquire(&pWDICtx->wptMutex);
21106
21107 WDI_STATableStop(pWDICtx);
21108
21109 WDI_ResetAssocSessions(pWDICtx);
21110
21111 /*Set the expected state transition to stopped - because the device
21112 experienced a failure*/
21113 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21114
21115 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021117
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021119
21120 /*TO DO: - there should be an attempt to reset the device here*/
21121
21122 wpalMutexRelease(&pWDICtx->wptMutex);
21123
21124 /*------------------------------------------------------------------------
21125 Notify UMAC if a handler is registered
21126 ------------------------------------------------------------------------*/
21127 if (pWDICtx->wdiLowLevelIndCB)
21128 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21130 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021131
21132 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21133 }
21134}/*WDI_DetectedDeviceError*/
21135
21136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 we started on send message has expire - this should
21139 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021140 reply - trigger catastrophic failure
21141 @param
21142
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021144
21145 @see
21146 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021147*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021148void
Jeff Johnson295189b2012-06-20 16:38:30 -070021149WDI_ResponseTimerCB
21150(
21151 void *pUserData
21152)
21153{
21154 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21156
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021157 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 }
21164
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021165 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021166 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021167
21168 /* If response timer is running at this time that means this timer
21169 * event is not for the last request but rather last-to-last request and
21170 * this timer event has come after we recevied respone for last-to-last
21171 * message
21172 */
21173 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21174 {
21175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21176 "WDI_ResponseTimerCB: timer in running state on timer event, "
21177 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21178 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21179 return;
21180 }
21181
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021182 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 {
21184
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021187 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021189 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21190 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021191
21192 /* WDI timeout means Riva is not responding or SMD communication to Riva
21193 * is not happening. The only possible way to recover from this error
21194 * is to initiate SSR from APPS.
21195 * There is also an option to re-enable wifi, which will eventually
21196 * trigger SSR
21197 */
21198 if (gWDICb.bEnableSSR == false)
21199 {
21200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21201 "SSR is not enabled on WDI timeout");
21202 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21203 return;
21204 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021205#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021206 wpalWcnssResetIntr();
21207 /* if this timer fires, it means Riva did not receive the FIQ */
21208 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021209#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021210 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21211 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021212#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 }
21214 else
21215 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021217 "Timeout occurred but not waiting for any response %d "
21218 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21219 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21220 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 }
21222
21223 return;
21224
21225}/*WDI_ResponseTimerCB*/
21226
21227
21228/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021229 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021230
Jeff Johnsone7245742012-09-05 17:12:55 -070021231
21232 @param pWDICtx: pointer to the WLAN DAL context
21233 pEventData: pointer to the event information structure
21234
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 @see
21236 @return Result of the function call
21237*/
21238WPT_INLINE WDI_Status
21239WDI_ProcessResponse
21240(
21241 WDI_ControlBlockType* pWDICtx,
21242 WDI_EventInfoType* pEventData
21243)
21244{
21245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21246
Jeff Johnsone7245742012-09-05 17:12:55 -070021247 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 already checked these pointers
21249 ! - revisit this assumption */
21250 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21251 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 WDI_getRespMsgString(pEventData->wdiResponse),
21256 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21257 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21258 }
21259 else
21260 {
21261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 pEventData->wdiResponse);
21264 return WDI_STATUS_E_NOT_IMPLEMENT;
21265 }
21266}/*WDI_ProcessResponse*/
21267
21268
21269/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021270 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021271=========================================================================*/
21272
21273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 @brief Utility function used by the DAL Core to help queue a
21275 request that cannot be processed right away.
21276 @param
21277
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 pWDICtx: - pointer to the WDI control block
21279 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021280 queued
21281
21282 @see
21283 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021284*/
21285WDI_Status
21286WDI_QueuePendingReq
21287(
21288 WDI_ControlBlockType* pWDICtx,
21289 WDI_EventInfoType* pEventData
21290)
21291{
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21296
21297 if ( NULL == pEventDataQueue )
21298 {
21299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 WDI_ASSERT(0);
21302 return WDI_STATUS_MEM_FAILURE;
21303 }
21304
21305 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21306 pEventDataQueue->pUserData = pEventData->pUserData;
21307 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21308 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021310
21311 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21312 {
21313 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021314
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 if ( NULL == pEventInfo )
21316 {
21317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021318 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021319 WDI_ASSERT(0);
21320 wpalMemoryFree(pEventDataQueue);
21321 return WDI_STATUS_MEM_FAILURE;
21322 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021323
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21325
21326 }
21327 pEventDataQueue->pEventData = pEventInfo;
21328
21329 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021330 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021331
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021333
21334 return WDI_STATUS_SUCCESS;
21335}/*WDI_QueuePendingReq*/
21336
21337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 @param
21341
21342 pMsg - pointer to the message
21343
21344 @see
21345 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021346*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021347void
Jeff Johnson295189b2012-06-20 16:38:30 -070021348WDI_PALCtrlMsgCB
21349(
21350 wpt_msg *pMsg
21351)
21352{
21353 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 WDI_ControlBlockType* pWDICtx = NULL;
21355 WDI_Status wdiStatus;
21356 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 void* pUserData;
21358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21359
21360 if (( NULL == pMsg )||
21361 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21362 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21363 {
21364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021367 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 }
21369
21370 /*Transition back to the state that we had before serialization
21371 - serialization transitions us to BUSY to stop any incomming requests
21372 ! TO DO L: possible race condition here if a request comes in between the
21373 state transition and the post function*/
21374
Jeff Johnsone7245742012-09-05 17:12:55 -070021375 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021376
21377 /*-----------------------------------------------------------------------
21378 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 -----------------------------------------------------------------------*/
21381 switch ( pEventData->wdiRequest )
21382 {
21383
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21386 break;
21387
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 case WDI_NV_DOWNLOAD_REQ:
21389 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21390 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21391 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21392 {
21393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021394 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21396 }
21397 else
21398 {
21399 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21400 }
21401
21402 break;
21403
21404 default:
21405 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21406 break;
21407 }/*switch ( pEventData->wdiRequest )*/
21408
21409 if ( WDI_STATUS_SUCCESS != wdiStatus )
21410 {
21411 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21412
21413 if ( NULL != pfnReqStatusCB )
21414 {
21415 /*Fail the request*/
21416 pfnReqStatusCB( wdiStatus, pUserData);
21417 }
21418 }
21419
21420 /* Free data - that was allocated when queueing*/
21421 if( pEventData != NULL )
21422 {
21423 if( pEventData->pEventData != NULL )
21424 {
21425 wpalMemoryFree(pEventData->pEventData);
21426 }
21427 wpalMemoryFree(pEventData);
21428 }
21429
21430 if( pMsg != NULL )
21431 {
21432 wpalMemoryFree(pMsg);
21433 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021434
Jeff Johnson295189b2012-06-20 16:38:30 -070021435}/*WDI_PALCtrlMsgCB*/
21436
21437/**
21438 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021439 and schedule for execution a pending request
21440 @param
21441
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 pWDICtx: - pointer to the WDI control block
21443 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 queued
21445
21446 @see
21447 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021448*/
21449WDI_Status
21450WDI_DequeuePendingReq
21451(
21452 WDI_ControlBlockType* pWDICtx
21453)
21454{
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21459
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021461
21462 if ( NULL == pNode )
21463 {
21464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 return WDI_STATUS_SUCCESS;
21467 }
21468
21469 /*The node actually points to the 1st element inside the Event Data struct -
21470 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021472
21473 /*Serialize processing in the control thread
21474 !TO DO: - check to see if these are all the messages params that need
21475 to be filled in*/
21476 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21477
21478 if ( NULL == palMsg )
21479 {
21480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 palMsg->callback = WDI_PALCtrlMsgCB;
21487 palMsg->ptr = pEventData;
21488
21489 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 palMsg->val = pWDICtx->uGlobalState;
21491
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 /*Transition back to BUSY as we need to handle a queued request*/
21493 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021494
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21496
21497 return WDI_STATUS_PENDING;
21498}/*WDI_DequeuePendingReq*/
21499
21500
21501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 away.- The assoc requests will be queued by BSSID
21505 @param
21506
Jeff Johnson295189b2012-06-20 16:38:30 -070021507 pWDICtx: - pointer to the WDI control block
21508 pEventData: pointer to the evnt info that needs to be queued
21509 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021510
21511 @see
21512 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021513*/
21514WDI_Status
21515WDI_QueueNewAssocRequest
21516(
21517 WDI_ControlBlockType* pWDICtx,
21518 WDI_EventInfoType* pEventData,
21519 wpt_macAddr macBSSID
21520)
21521{
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 wpt_uint8 i;
21523 WDI_BSSSessionType* pSession = NULL;
21524 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 void* pEventInfo;
21527 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021529
Jeff Johnsone7245742012-09-05 17:12:55 -070021530
21531 /*------------------------------------------------------------------------
21532 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 ------------------------------------------------------------------------*/
21534 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21535 {
21536 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21537 {
21538 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021539 pSession = &pWDICtx->aBSSSessions[i];
21540 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 }
21542 }
21543
21544 if ( i >= WDI_MAX_BSS_SESSIONS )
21545 {
21546 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021549
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 /*------------------------------------------------------------------------
21551 Fill in the BSSID for this session and set the usage flag
21552 ------------------------------------------------------------------------*/
21553 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021555
21556 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021557 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 ------------------------------------------------------------------------*/
21559 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21560 if ( NULL == pEventDataQueue )
21561 {
21562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021563 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021564 WDI_ASSERT(0);
21565 return WDI_STATUS_MEM_FAILURE;
21566 }
21567
21568 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21569 if ( NULL == pSessionIdElement )
21570 {
21571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021572 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 WDI_ASSERT(0);
21574 wpalMemoryFree(pEventDataQueue);
21575 return WDI_STATUS_MEM_FAILURE;
21576 }
21577
21578 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21579 if ( NULL == pEventInfo )
21580 {
21581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021582 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 WDI_ASSERT(0);
21584 wpalMemoryFree(pSessionIdElement);
21585 wpalMemoryFree(pEventDataQueue);
21586 return WDI_STATUS_MEM_FAILURE;
21587 }
21588
21589 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21590 pEventDataQueue->pUserData = pEventData->pUserData;
21591 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21592 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021594
21595 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21596 pEventDataQueue->pEventData = pEventInfo;
21597
21598 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021600
21601 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021603
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021605
21606 /*We need to maintain a separate list that keeps track of the order in which
21607 the new assoc requests are being queued such that we can start processing
21608 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021609 pSessionIdElement->ucIndex = i;
21610 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611
21612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21613 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021614 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021615
21616 /*Return pending as this is what the status of the request is since it has
21617 been queued*/
21618 return WDI_STATUS_PENDING;
21619}/*WDI_QueueNewAssocRequest*/
21620
21621/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 away.- The assoc requests will be queued by BSSID
21625 @param
21626
Jeff Johnson295189b2012-06-20 16:38:30 -070021627 pWDICtx: - pointer to the WDI control block
21628 pSession: - session in which to queue
21629 pEventData: pointer to the event info that needs to be
21630 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021631
21632 @see
21633 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021634*/
21635WDI_Status
21636WDI_QueueAssocRequest
21637(
21638 WDI_ControlBlockType* pWDICtx,
21639 WDI_BSSSessionType* pSession,
21640 WDI_EventInfoType* pEventData
21641)
21642{
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021647
21648 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 Sanity check
21650 ------------------------------------------------------------------------*/
21651 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21652 {
21653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021655
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 }
21658
21659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 ------------------------------------------------------------------------*/
21662 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21663 if ( NULL == pEventDataQueue )
21664 {
21665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021666 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 WDI_ASSERT(0);
21668 return WDI_STATUS_MEM_FAILURE;
21669 }
21670
21671 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21672 if ( NULL == pEventInfo )
21673 {
21674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21675 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021676 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 WDI_ASSERT(0);
21678 wpalMemoryFree(pEventDataQueue);
21679 return WDI_STATUS_MEM_FAILURE;
21680 }
21681
21682 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21683 pEventDataQueue->pUserData = pEventData->pUserData;
21684 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21685 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 pEventDataQueue->pEventData = pEventInfo;
21688
21689 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21690
21691 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021693
21694 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021696
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021698
21699 /*The result of this operation is pending because the request has been
21700 queued and it will be processed at a later moment in time */
21701 return WDI_STATUS_PENDING;
21702}/*WDI_QueueAssocRequest*/
21703
21704/**
21705 @brief Utility function used by the DAL Core to help dequeue
21706 an association request that was pending
21707 The request will be queued up in front of the main
21708 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 @param
21710
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021712
21713
21714 @see
21715 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021716*/
21717WDI_Status
21718WDI_DequeueAssocRequest
21719(
21720 WDI_ControlBlockType* pWDICtx
21721)
21722{
Jeff Johnsone7245742012-09-05 17:12:55 -070021723 wpt_list_node* pNode = NULL;
21724 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 WDI_BSSSessionType* pSession;
21726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021727
21728 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021729 Sanity check
21730 ------------------------------------------------------------------------*/
21731 if ( NULL == pWDICtx )
21732 {
21733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021735
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 }
21738
21739 /*------------------------------------------------------------------------
21740 An association has been completed => a new association can occur
21741 Check to see if there are any pending associations ->
21742 If so , transfer all the pending requests into the busy queue for
21743 processing
21744 These requests have arrived prior to the requests in the busy queue
21745 (bc they needed to be processed in order to be placed in this queue)
21746 => they will be placed at the front of the busy queue
21747 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021748 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021749
21750 if ( NULL == pNode )
21751 {
21752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 return WDI_STATUS_SUCCESS;
21755 }
21756
21757 /*The node actually points to the 1st element inside the Session Id struct -
21758 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021760
21761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21762 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21763
21764 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21765 {
21766 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021767
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 the front of the main waiting queue for subsequent execution*/
21770 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 while ( NULL != pNode )
21772 {
21773 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21775 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021776 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021777 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 }
21779 else
21780 {
21781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 WPAL_ASSERT(0);
21784 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021787
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21789 wpalMemoryFree(pSessionIdElement);
21790 return WDI_STATUS_SUCCESS;
21791}/*WDI_DequeueAssocRequest*/
21792
21793/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021794 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021795 pending requests - all req cb will be called with
21796 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021797 @param
21798
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021800
21801 @see
21802 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021803*/
21804WDI_Status
21805WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021806(
Jeff Johnson295189b2012-06-20 16:38:30 -070021807 WDI_ControlBlockType* pWDICtx
21808)
21809{
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 void* pUserData;
21814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21815
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021817
21818 /*------------------------------------------------------------------------
21819 Go through all the requests and fail them - this will only be called
21820 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 ------------------------------------------------------------------------*/
21823 while( pNode )
21824 {
21825 /*The node actually points to the 1st element inside the Event Data struct -
21826 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 pEventDataQueue = (WDI_EventInfoType*)pNode;
21828
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21830 if ( NULL != pfnReqStatusCB )
21831 {
21832 /*Fail the request*/
21833 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21834 }
21835 /* Free data - that was allocated when queueing */
21836 if ( pEventDataQueue->pEventData != NULL )
21837 {
21838 wpalMemoryFree(pEventDataQueue->pEventData);
21839 }
21840 wpalMemoryFree(pEventDataQueue);
21841
21842 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21843 {
21844 break;
21845 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 }
21847
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 return WDI_STATUS_SUCCESS;
21849}/*WDI_ClearPendingRequests*/
21850
21851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 @brief Helper routine used to init the BSS Sessions in the WDI control block
21853
21854
21855 @param pWDICtx: pointer to the WLAN DAL context
21856
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 @see
21858*/
21859void
21860WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021861(
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 WDI_ControlBlockType* pWDICtx
21863)
21864{
Jeff Johnsone7245742012-09-05 17:12:55 -070021865 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21867
21868 /*-------------------------------------------------------------------------
21869 No Sanity check
21870 -------------------------------------------------------------------------*/
21871 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21872 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021873 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21875 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21876 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21877 }
21878}/*WDI_ResetAssocSessions*/
21879
21880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021881 @brief Helper routine used to find a session based on the BSSID
21882
21883
21884 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 pSession: pointer to the session (if found)
21887
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021889 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021890*/
21891wpt_uint8
21892WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021893(
Jeff Johnson295189b2012-06-20 16:38:30 -070021894 WDI_ControlBlockType* pWDICtx,
21895 wpt_macAddr macBSSID,
21896 WDI_BSSSessionType** ppSession
21897)
21898{
Jeff Johnsone7245742012-09-05 17:12:55 -070021899 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21901
21902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 -------------------------------------------------------------------------*/
21905 if ( NULL == ppSession )
21906 {
21907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021908 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021910 }
21911
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 /*------------------------------------------------------------------------
21915 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 ------------------------------------------------------------------------*/
21917 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21918 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021919 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21920 (eWLAN_PAL_TRUE ==
21921 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21922 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021923 {
21924 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021925 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021926 return i;
21927 }
21928 }
21929
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021931}/*WDI_FindAssocSession*/
21932
21933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021934 @brief Helper routine used to find a session based on the BSSID
21935
21936
21937 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021938 ucBSSIdx: BSS Index of the session
21939 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021940
Jeff Johnson295189b2012-06-20 16:38:30 -070021941 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021943*/
21944wpt_uint8
21945WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021946(
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 WDI_ControlBlockType* pWDICtx,
21948 wpt_uint16 ucBSSIdx,
21949 WDI_BSSSessionType** ppSession
21950)
21951{
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21954
21955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 -------------------------------------------------------------------------*/
21958 if ( NULL == ppSession )
21959 {
21960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021961 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 }
21964
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021966
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 /*------------------------------------------------------------------------
21968 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 ------------------------------------------------------------------------*/
21970 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21971 {
21972 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21973 {
21974 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021976 return i;
21977 }
21978 }
21979
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021981}/*WDI_FindAssocSessionByBSSIdx*/
21982
21983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 @brief Helper routine used to find a session based on the BSSID
21985
21986
21987 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 ucBSSIdx: BSS Index of the session
21989 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021990
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021993*/
21994wpt_uint8
21995WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021996(
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 WDI_ControlBlockType* pWDICtx,
21998 wpt_uint16 usIdx,
21999 WDI_BSSSessionType** ppSession
22000)
22001{
22002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22003
22004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 -------------------------------------------------------------------------*/
22007 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22008 {
22009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022010 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 }
22013
22014 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022015 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022016
22017 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022018
Jeff Johnson295189b2012-06-20 16:38:30 -070022019}/*WDI_FindAssocSessionByBSSIdx*/
22020
22021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022022 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022024
22025
22026 @param pWDICtx: pointer to the WLAN DAL context
22027 pSession: pointer to the session (if found)
22028
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022030 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022031*/
22032wpt_uint8
22033WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022034(
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 WDI_ControlBlockType* pWDICtx,
22036 WDI_BSSSessionType** ppSession
22037)
22038{
Jeff Johnsone7245742012-09-05 17:12:55 -070022039 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 -------------------------------------------------------------------------*/
22044 if ( NULL == ppSession )
22045 {
22046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022047 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022049 }
22050
Jeff Johnsone7245742012-09-05 17:12:55 -070022051 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022052
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 /*------------------------------------------------------------------------
22054 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 ------------------------------------------------------------------------*/
22056 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22057 {
22058 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22059 {
22060 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 return i;
22063 }
22064 }
22065
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022067}/*WDI_FindEmptySession*/
22068
22069
22070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022072 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022073
22074
22075 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022076 macBSSID: pointer to BSSID. If NULL, get all the session.
22077 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22078 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22079 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022080 @see
22081 @return Number of sessions in use
22082*/
22083wpt_uint8
22084WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022085(
Hoonki Lee26599972013-04-24 01:21:58 -070022086 WDI_ControlBlockType* pWDICtx,
22087 wpt_macAddr macBSSID,
22088 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022089)
22090{
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022093
22094 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 Count all sessions in use
22096 ------------------------------------------------------------------------*/
22097 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22098 {
Hoonki Lee26599972013-04-24 01:21:58 -070022099 if ( macBSSID && skipBSSID &&
22100 (eWLAN_PAL_TRUE ==
22101 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22102 WDI_MAC_ADDR_LEN)))
22103 {
22104 continue;
22105 }
22106 else if ( pWDICtx->aBSSSessions[i].bInUse )
22107 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022109 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 }
22111
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022113}/*WDI_GetActiveSessionsCount*/
22114
22115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022118
22119
22120 @param pWDICtx: pointer to the WLAN DAL context
22121 pSession: pointer to the session (if found)
22122
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022125*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022126void
Jeff Johnson295189b2012-06-20 16:38:30 -070022127WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022128(
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 WDI_ControlBlockType* pWDICtx,
22130 WDI_BSSSessionType* ppSession
22131)
22132{
22133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 -------------------------------------------------------------------------*/
22136 if ( NULL == ppSession )
22137 {
22138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022139 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 }
22142
Jeff Johnsone7245742012-09-05 17:12:55 -070022143 /*------------------------------------------------------------------------
22144 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 ------------------------------------------------------------------------*/
22146 wpal_list_destroy(&ppSession->wptPendingQueue);
22147 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22149 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22151 wpal_list_init(&ppSession->wptPendingQueue);
22152
22153}/*WDI_DeleteSession*/
22154
22155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 @param
22159
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 WDI_AddStaParams: - pointer to the WDI Add STA params
22161 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022162
22163 @see
22164 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022165*/
22166void
22167WDI_AddBcastSTAtoSTATable
22168(
22169 WDI_ControlBlockType* pWDICtx,
22170 WDI_AddStaParams * staParams,
22171 wpt_uint16 usBcastStaIdx
22172)
22173{
22174 WDI_AddStaParams wdiAddSTAParam = {0};
22175 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22177
22178 /*---------------------------------------------------------------------
22179 Sanity check
22180 ---------------------------------------------------------------------*/
22181 if ( NULL == staParams )
22182 {
22183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022185
Jeff Johnsone7245742012-09-05 17:12:55 -070022186 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 }
22188
22189 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22190 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22191 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22192 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22193 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22194 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22195 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22196 WDI_MAC_ADDR_LEN );
22197 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22198 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22199 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22200 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22201 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22202 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22203 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022204
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22206}
22207
22208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 @brief NV blob will be divided into fragments of size 4kb and
22210 Sent to HAL
22211
22212 @param pWDICtx: pointer to the WLAN DAL context
22213 pEventData: pointer to the event information structure
22214
Jeff Johnson295189b2012-06-20 16:38:30 -070022215 @see
22216 @return Result of the function call
22217 */
22218
22219WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022220(
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 WDI_ControlBlockType* pWDICtx,
22222 WDI_EventInfoType* pEventData
22223)
22224{
22225
22226 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22227 wpt_uint8* pSendBuffer = NULL;
22228 wpt_uint16 usDataOffset = 0;
22229 wpt_uint16 usSendSize = 0;
22230 wpt_uint16 usCurrentFragmentSize =0;
22231 wpt_uint8* pSrcBuffer = NULL;
22232 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22233 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22234
22235 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22236 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22237 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22238
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22241
22242 /* Update the current Fragment Number */
22243 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22244
22245 /*Update the HAL REQ structure */
22246 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22247 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22248 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22249
22250 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 image will be sent to HAL*/
22253
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22260 usCurrentFragmentSize = FRAGMENT_SIZE;
22261
22262 /*Update the HAL REQ structure */
22263 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22264 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22265
22266 }
22267 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022268 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 usCurrentFragmentSize = FRAGMENT_SIZE;
22270
22271 /*Update the HAL REQ structure */
22272 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22273 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22274 }
22275
22276 /*-----------------------------------------------------------------------
22277 Get message buffer
22278 -----------------------------------------------------------------------*/
22279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22280 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22281 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22284 {
22285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22286 "Unable to get send buffer in NV Download req %x %x ",
22287 pEventData, pwdiNvDownloadReqParams);
22288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 }
22291
22292 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22295
22296 /* Appending the NV image fragment */
22297 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22298 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22299 usCurrentFragmentSize);
22300
22301 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022303
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22305 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 WDI_NV_DOWNLOAD_RESP);
22307
22308}
Jeff Johnsone7245742012-09-05 17:12:55 -070022309/*============================================================================
22310 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 ============================================================================*/
22312/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 @brief Helper routine used to find a session based on the BSSID
22314 @param pContext: pointer to the WLAN DAL context
22315 @param pDPContext: pointer to the Datapath context
22316
Jeff Johnson295189b2012-06-20 16:38:30 -070022317 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022319*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022320WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022321WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22322{
22323 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22324
22325 pCB->pDPContext = pDPContext;
22326 return;
22327}
22328
22329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 @brief Helper routine used to find a session based on the BSSID
22331
22332
22333 @param pContext: pointer to the WLAN DAL context
22334
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 @see
22336 @return pointer to Datapath context
22337*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022338WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022339WDI_DS_GetDatapathContext (void *pContext)
22340{
22341 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22342 return pCB->pDPContext;
22343}
22344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 @brief Helper routine used to find a session based on the BSSID
22346
22347
22348 @param pContext: pointer to the WLAN DAL context
22349 @param pDTDriverContext: pointer to the Transport Driver context
22350
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 @see
22352 @return void
22353*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022354WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022355WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22356{
22357 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22358
22359 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022361}
22362
22363/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 @brief Helper routine used to find a session based on the BSSID
22365
22366
22367 @param pWDICtx: pointer to the WLAN DAL context
22368
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022370 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022371*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022372WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022373WDT_GetTransportDriverContext (void *pContext)
22374{
22375 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022376 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022377}
22378
Jeff Johnsone7245742012-09-05 17:12:55 -070022379/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 Helper inline converters
22381 ============================================================================*/
22382/*Convert WDI driver type into HAL driver type*/
22383WPT_STATIC WPT_INLINE WDI_Status
22384WDI_HAL_2_WDI_STATUS
22385(
22386 eHalStatus halStatus
22387)
22388{
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 the chances of getting inlined*/
22391 switch( halStatus )
22392 {
22393 case eHAL_STATUS_SUCCESS:
22394 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22395 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22396 return WDI_STATUS_SUCCESS;
22397 case eHAL_STATUS_FAILURE:
22398 return WDI_STATUS_E_FAILURE;
22399 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 return WDI_STATUS_MEM_FAILURE;
22401 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 default:
22404 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022406
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022408}/*WDI_HAL_2_WDI_STATUS*/
22409
22410/*Convert WDI request type into HAL request type*/
22411WPT_STATIC WPT_INLINE tHalHostMsgType
22412WDI_2_HAL_REQ_TYPE
22413(
22414 WDI_RequestEnumType wdiReqType
22415)
22416{
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 the chances of getting inlined*/
22419 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 return WLAN_HAL_RMV_STAKEY_REQ;
22456 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022459 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 case WDI_DEL_BA_REQ:
22465 return WLAN_HAL_DEL_BA_REQ;
22466#ifdef FEATURE_WLAN_CCX
22467 case WDI_TSM_STATS_REQ:
22468 return WLAN_HAL_TSM_STATS_REQ;
22469#endif
22470 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 case WDI_ADD_BA_SESSION_REQ:
22481 return WLAN_HAL_ADD_BA_SESSION_REQ;
22482 case WDI_TRIGGER_BA_REQ:
22483 return WLAN_HAL_TRIGGER_BA_REQ;
22484 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22489 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22490 case WDI_SET_MAX_TX_POWER_REQ:
22491 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022492 case WDI_SET_TX_POWER_REQ:
22493 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22495 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022496#ifdef FEATURE_WLAN_TDLS
22497 case WDI_TDLS_LINK_ESTABLISH_REQ:
22498 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22499#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 case WDI_REM_BEACON_FILTER_REQ:
22521 return WLAN_HAL_REM_BCN_FILTER_REQ;
22522 case WDI_SET_RSSI_THRESHOLDS_REQ:
22523 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22524 case WDI_HOST_OFFLOAD_REQ:
22525 return WLAN_HAL_HOST_OFFLOAD_REQ;
22526 case WDI_WOWL_ADD_BC_PTRN_REQ:
22527 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22528 case WDI_WOWL_DEL_BC_PTRN_REQ:
22529 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22530 case WDI_WOWL_ENTER_REQ:
22531 return WLAN_HAL_ENTER_WOWL_REQ;
22532 case WDI_WOWL_EXIT_REQ:
22533 return WLAN_HAL_EXIT_WOWL_REQ;
22534 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22535 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22536 case WDI_NV_DOWNLOAD_REQ:
22537 return WLAN_HAL_DOWNLOAD_NV_REQ;
22538 case WDI_FLUSH_AC_REQ:
22539 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22540 case WDI_BTAMP_EVENT_REQ:
22541 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22542#ifdef WLAN_FEATURE_VOWIFI_11R
22543 case WDI_AGGR_ADD_TS_REQ:
22544 return WLAN_HAL_AGGR_ADD_TS_REQ;
22545#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 case WDI_FTM_CMD_REQ:
22547 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 case WDI_ADD_STA_SELF_REQ:
22549 return WLAN_HAL_ADD_STA_SELF_REQ;
22550 case WDI_DEL_STA_SELF_REQ:
22551 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022552#ifdef FEATURE_OEM_DATA_SUPPORT
22553 case WDI_START_OEM_DATA_REQ:
22554 return WLAN_HAL_START_OEM_DATA_REQ;
22555#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 case WDI_HOST_RESUME_REQ:
22557 return WLAN_HAL_HOST_RESUME_REQ;
22558 case WDI_HOST_SUSPEND_IND:
22559 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022560 case WDI_TRAFFIC_STATS_IND:
22561 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022562#ifdef WLAN_FEATURE_11W
22563 case WDI_EXCLUDE_UNENCRYPTED_IND:
22564 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22565#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022566 case WDI_KEEP_ALIVE_REQ:
22567 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022568#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022569 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22570 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022571#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022572#ifdef FEATURE_WLAN_SCAN_PNO
22573 case WDI_SET_PREF_NETWORK_REQ:
22574 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22575 case WDI_SET_RSSI_FILTER_REQ:
22576 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22577 case WDI_UPDATE_SCAN_PARAMS_REQ:
22578 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22579#endif // FEATURE_WLAN_SCAN_PNO
22580 case WDI_SET_TX_PER_TRACKING_REQ:
22581 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22582#ifdef WLAN_FEATURE_PACKET_FILTERING
22583 case WDI_8023_MULTICAST_LIST_REQ:
22584 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22585 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022587 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22588 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22589 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22590 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22591#endif // WLAN_FEATURE_PACKET_FILTERING
22592 case WDI_HAL_DUMP_CMD_REQ:
22593 return WLAN_HAL_DUMP_COMMAND_REQ;
22594#ifdef WLAN_FEATURE_GTK_OFFLOAD
22595 case WDI_GTK_OFFLOAD_REQ:
22596 return WLAN_HAL_GTK_OFFLOAD_REQ;
22597 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22598 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22599#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22600
22601 case WDI_INIT_SCAN_CON_REQ:
22602 return WLAN_HAL_INIT_SCAN_CON_REQ;
22603 case WDI_SET_POWER_PARAMS_REQ:
22604 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22605 case WDI_SET_TM_LEVEL_REQ:
22606 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22607 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22608 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022609#ifdef WLAN_FEATURE_11AC
22610 case WDI_UPDATE_VHT_OP_MODE_REQ:
22611 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22612#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022613 case WDI_GET_ROAM_RSSI_REQ:
22614 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022615 case WDI_DHCP_START_IND:
22616 return WLAN_HAL_DHCP_START_IND;
22617 case WDI_DHCP_STOP_IND:
22618 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022619#ifdef FEATURE_WLAN_LPHB
22620 case WDI_LPHB_CFG_REQ:
22621 return WLAN_HAL_LPHB_CFG_REQ;
22622#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022623 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22624 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22625 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22626 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22627
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022629 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022630 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022631
Jeff Johnson295189b2012-06-20 16:38:30 -070022632}/*WDI_2_HAL_REQ_TYPE*/
22633
22634/*Convert WDI response type into HAL response type*/
22635WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22636HAL_2_WDI_RSP_TYPE
22637(
22638 tHalHostMsgType halMsg
22639)
22640{
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 the chances of getting inlined*/
22643 switch( halMsg )
22644 {
22645 case WLAN_HAL_START_RSP:
22646 return WDI_START_RESP;
22647 case WLAN_HAL_STOP_RSP:
22648 return WDI_STOP_RESP;
22649 case WLAN_HAL_INIT_SCAN_RSP:
22650 return WDI_INIT_SCAN_RESP;
22651 case WLAN_HAL_START_SCAN_RSP:
22652 return WDI_START_SCAN_RESP;
22653 case WLAN_HAL_END_SCAN_RSP:
22654 return WDI_END_SCAN_RESP;
22655 case WLAN_HAL_FINISH_SCAN_RSP:
22656 return WDI_FINISH_SCAN_RESP;
22657 case WLAN_HAL_CONFIG_STA_RSP:
22658 return WDI_CONFIG_STA_RESP;
22659 case WLAN_HAL_DELETE_STA_RSP:
22660 return WDI_DEL_STA_RESP;
22661 case WLAN_HAL_CONFIG_BSS_RSP:
22662 return WDI_CONFIG_BSS_RESP;
22663 case WLAN_HAL_DELETE_BSS_RSP:
22664 return WDI_DEL_BSS_RESP;
22665 case WLAN_HAL_JOIN_RSP:
22666 return WDI_JOIN_RESP;
22667 case WLAN_HAL_POST_ASSOC_RSP:
22668 return WDI_POST_ASSOC_RESP;
22669 case WLAN_HAL_SET_BSSKEY_RSP:
22670 return WDI_SET_BSS_KEY_RESP;
22671 case WLAN_HAL_SET_STAKEY_RSP:
22672 return WDI_SET_STA_KEY_RESP;
22673 case WLAN_HAL_RMV_BSSKEY_RSP:
22674 return WDI_RMV_BSS_KEY_RESP;
22675 case WLAN_HAL_RMV_STAKEY_RSP:
22676 return WDI_RMV_STA_KEY_RESP;
22677 case WLAN_HAL_SET_BCASTKEY_RSP:
22678 return WDI_SET_STA_BCAST_KEY_RESP;
22679 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22680 // return WDI_RMV_STA_BCAST_KEY_RESP;
22681 case WLAN_HAL_ADD_TS_RSP:
22682 return WDI_ADD_TS_RESP;
22683 case WLAN_HAL_DEL_TS_RSP:
22684 return WDI_DEL_TS_RESP;
22685 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22686 return WDI_UPD_EDCA_PRMS_RESP;
22687 case WLAN_HAL_ADD_BA_RSP:
22688 return WDI_ADD_BA_RESP;
22689 case WLAN_HAL_DEL_BA_RSP:
22690 return WDI_DEL_BA_RESP;
22691#ifdef FEATURE_WLAN_CCX
22692 case WLAN_HAL_TSM_STATS_RSP:
22693 return WDI_TSM_STATS_RESP;
22694#endif
22695 case WLAN_HAL_CH_SWITCH_RSP:
22696 return WDI_CH_SWITCH_RESP;
22697 case WLAN_HAL_SET_LINK_ST_RSP:
22698 return WDI_SET_LINK_ST_RESP;
22699 case WLAN_HAL_GET_STATS_RSP:
22700 return WDI_GET_STATS_RESP;
22701 case WLAN_HAL_UPDATE_CFG_RSP:
22702 return WDI_UPDATE_CFG_RESP;
22703 case WLAN_HAL_ADD_BA_SESSION_RSP:
22704 return WDI_ADD_BA_SESSION_RESP;
22705 case WLAN_HAL_TRIGGER_BA_RSP:
22706 return WDI_TRIGGER_BA_RESP;
22707 case WLAN_HAL_UPDATE_BEACON_RSP:
22708 return WDI_UPD_BCON_PRMS_RESP;
22709 case WLAN_HAL_SEND_BEACON_RSP:
22710 return WDI_SND_BCON_RESP;
22711 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22712 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22713 /*Indications*/
22714 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22715 return WDI_HAL_RSSI_NOTIFICATION_IND;
22716 case WLAN_HAL_MISSED_BEACON_IND:
22717 return WDI_HAL_MISSED_BEACON_IND;
22718 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22719 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22720 case WLAN_HAL_MIC_FAILURE_IND:
22721 return WDI_HAL_MIC_FAILURE_IND;
22722 case WLAN_HAL_FATAL_ERROR_IND:
22723 return WDI_HAL_FATAL_ERROR_IND;
22724 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22725 return WDI_HAL_DEL_STA_IND;
22726 case WLAN_HAL_COEX_IND:
22727 return WDI_HAL_COEX_IND;
22728 case WLAN_HAL_OTA_TX_COMPL_IND:
22729 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 case WLAN_HAL_P2P_NOA_ATTR_IND:
22731 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022732 case WLAN_HAL_P2P_NOA_START_IND:
22733 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 case WLAN_HAL_TX_PER_HIT_IND:
22735 return WDI_HAL_TX_PER_HIT_IND;
22736 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22737 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022738 case WLAN_HAL_SET_TX_POWER_RSP:
22739 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 case WLAN_HAL_SET_P2P_GONOA_RSP:
22741 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022742#ifdef FEATURE_WLAN_TDLS
22743 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22744 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22745 case WLAN_HAL_TDLS_IND:
22746 return WDI_HAL_TDLS_IND;
22747#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22767 return WDI_SET_BEACON_FILTER_RESP;
22768 case WLAN_HAL_REM_BCN_FILTER_RSP:
22769 return WDI_REM_BEACON_FILTER_RESP;
22770 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22771 return WDI_SET_RSSI_THRESHOLDS_RESP;
22772 case WLAN_HAL_HOST_OFFLOAD_RSP:
22773 return WDI_HOST_OFFLOAD_RESP;
22774 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22775 return WDI_WOWL_ADD_BC_PTRN_RESP;
22776 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22777 return WDI_WOWL_DEL_BC_PTRN_RESP;
22778 case WLAN_HAL_ENTER_WOWL_RSP:
22779 return WDI_WOWL_ENTER_RESP;
22780 case WLAN_HAL_EXIT_WOWL_RSP:
22781 return WDI_WOWL_EXIT_RESP;
22782 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22783 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22784 case WLAN_HAL_DOWNLOAD_NV_RSP:
22785 return WDI_NV_DOWNLOAD_RESP;
22786 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22787 return WDI_FLUSH_AC_RESP;
22788 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22789 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 case WLAN_HAL_PROCESS_PTT_RSP:
22791 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 case WLAN_HAL_ADD_STA_SELF_RSP:
22793 return WDI_ADD_STA_SELF_RESP;
22794case WLAN_HAL_DEL_STA_SELF_RSP:
22795 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022796#ifdef FEATURE_OEM_DATA_SUPPORT
22797 case WLAN_HAL_START_OEM_DATA_RSP:
22798 return WDI_START_OEM_DATA_RESP;
22799#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 case WLAN_HAL_HOST_RESUME_RSP:
22801 return WDI_HOST_RESUME_RESP;
22802 case WLAN_HAL_KEEP_ALIVE_RSP:
22803 return WDI_KEEP_ALIVE_RESP;
22804#ifdef FEATURE_WLAN_SCAN_PNO
22805 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22806 return WDI_SET_PREF_NETWORK_RESP;
22807 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22810 return WDI_UPDATE_SCAN_PARAMS_RESP;
22811 case WLAN_HAL_PREF_NETW_FOUND_IND:
22812 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22813#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022814#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022815 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22816 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022817#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22819 return WDI_SET_TX_PER_TRACKING_RESP;
22820#ifdef WLAN_FEATURE_PACKET_FILTERING
22821 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22822 return WDI_8023_MULTICAST_LIST_RESP;
22823 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22824 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22825 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22826 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22827 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22828 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22829#endif // WLAN_FEATURE_PACKET_FILTERING
22830
22831 case WLAN_HAL_DUMP_COMMAND_RSP:
22832 return WDI_HAL_DUMP_CMD_RESP;
22833 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22834 return WDI_SET_POWER_PARAMS_RESP;
22835#ifdef WLAN_FEATURE_VOWIFI_11R
22836 case WLAN_HAL_AGGR_ADD_TS_RSP:
22837 return WDI_AGGR_ADD_TS_RESP;
22838#endif
22839
22840#ifdef WLAN_FEATURE_GTK_OFFLOAD
22841 case WLAN_HAL_GTK_OFFLOAD_RSP:
22842 return WDI_GTK_OFFLOAD_RESP;
22843 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22844 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22845#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22846#ifdef WLAN_WAKEUP_EVENTS
22847 case WLAN_HAL_WAKE_REASON_IND:
22848 return WDI_HAL_WAKE_REASON_IND;
22849#endif // WLAN_WAKEUP_EVENTS
22850
22851 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22852 return WDI_SET_TM_LEVEL_RESP;
22853 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22854 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022855#ifdef WLAN_FEATURE_11AC
22856 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22857 return WDI_UPDATE_VHT_OP_MODE_RESP;
22858#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022859#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22860 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22861 return WDI_GET_ROAM_RSSI_RESP;
22862#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022863
Leo Chang00bc9132013-08-01 19:21:11 -070022864#ifdef FEATURE_WLAN_LPHB
22865 case WLAN_HAL_LPHB_IND:
22866 return WDI_HAL_LPHB_WAIT_TIMEOUT_IND;
22867 case WLAN_HAL_LPHB_CFG_RSP:
22868 return WDI_LPHB_CFG_RESP;
22869#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022870
22871 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22872 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022873 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22874 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022875
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 }
22879
22880}/*HAL_2_WDI_RSP_TYPE*/
22881
22882
22883/*Convert WDI driver type into HAL driver type*/
22884WPT_STATIC WPT_INLINE tDriverType
22885WDI_2_HAL_DRV_TYPE
22886(
22887 WDI_DriverType wdiDriverType
22888)
22889{
Jeff Johnsone7245742012-09-05 17:12:55 -070022890 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022891 the chances of getting inlined*/
22892 switch( wdiDriverType )
22893 {
22894 case WDI_DRIVER_TYPE_PRODUCTION:
22895 return eDRIVER_TYPE_PRODUCTION;
22896 case WDI_DRIVER_TYPE_MFG:
22897 return eDRIVER_TYPE_MFG;
22898 case WDI_DRIVER_TYPE_DVT:
22899 return eDRIVER_TYPE_DVT;
22900 }
22901
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022903}/*WDI_2_HAL_DRV_TYPE*/
22904
22905
22906/*Convert WDI stop reason into HAL stop reason*/
22907WPT_STATIC WPT_INLINE tHalStopType
22908WDI_2_HAL_STOP_REASON
22909(
22910 WDI_StopType wdiDriverType
22911)
22912{
Jeff Johnsone7245742012-09-05 17:12:55 -070022913 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022914 the chances of getting inlined*/
22915 switch( wdiDriverType )
22916 {
22917 case WDI_STOP_TYPE_SYS_RESET:
22918 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022919 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22920 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022921 case WDI_STOP_TYPE_RF_KILL:
22922 return HAL_STOP_TYPE_RF_KILL;
22923 }
22924
Jeff Johnsone7245742012-09-05 17:12:55 -070022925 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022926}/*WDI_2_HAL_STOP_REASON*/
22927
22928
22929/*Convert WDI scan mode type into HAL scan mode type*/
22930WPT_STATIC WPT_INLINE eHalSysMode
22931WDI_2_HAL_SCAN_MODE
22932(
22933 WDI_ScanMode wdiScanMode
22934)
22935{
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 the chances of getting inlined*/
22938 switch( wdiScanMode )
22939 {
22940 case WDI_SCAN_MODE_NORMAL:
22941 return eHAL_SYS_MODE_NORMAL;
22942 case WDI_SCAN_MODE_LEARN:
22943 return eHAL_SYS_MODE_LEARN;
22944 case WDI_SCAN_MODE_SCAN:
22945 return eHAL_SYS_MODE_SCAN;
22946 case WDI_SCAN_MODE_PROMISC:
22947 return eHAL_SYS_MODE_PROMISC;
22948 case WDI_SCAN_MODE_SUSPEND_LINK:
22949 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022950 case WDI_SCAN_MODE_ROAM_SCAN:
22951 return eHAL_SYS_MODE_ROAM_SCAN;
22952 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22953 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022954 }
22955
Jeff Johnsone7245742012-09-05 17:12:55 -070022956 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022957}/*WDI_2_HAL_SCAN_MODE*/
22958
22959/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022960WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022961WDI_2_HAL_SEC_CH_OFFSET
22962(
22963 WDI_HTSecondaryChannelOffset wdiSecChOffset
22964)
22965{
Jeff Johnsone7245742012-09-05 17:12:55 -070022966 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 the chances of getting inlined*/
22968 switch( wdiSecChOffset )
22969 {
22970 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022973 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022974 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22976#ifdef WLAN_FEATURE_11AC
22977 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22978 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22979 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22980 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22981 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22982 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22983 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22984 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22985 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22986 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22987 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22988 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22989 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22990 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22991#endif
22992 default:
22993 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 }
22995
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022997}/*WDI_2_HAL_SEC_CH_OFFSET*/
22998
22999/*Convert WDI BSS type into HAL BSS type*/
23000WPT_STATIC WPT_INLINE tSirBssType
23001WDI_2_HAL_BSS_TYPE
23002(
23003 WDI_BssType wdiBSSType
23004)
23005{
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 the chances of getting inlined*/
23008 switch( wdiBSSType )
23009 {
23010 case WDI_INFRASTRUCTURE_MODE:
23011 return eSIR_INFRASTRUCTURE_MODE;
23012 case WDI_INFRA_AP_MODE:
23013 return eSIR_INFRA_AP_MODE;
23014 case WDI_IBSS_MODE:
23015 return eSIR_IBSS_MODE;
23016 case WDI_BTAMP_STA_MODE:
23017 return eSIR_BTAMP_STA_MODE;
23018 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023019 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023020 case WDI_BSS_AUTO_MODE:
23021 return eSIR_AUTO_MODE;
23022 }
23023
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023025}/*WDI_2_HAL_BSS_TYPE*/
23026
23027/*Convert WDI NW type into HAL NW type*/
23028WPT_STATIC WPT_INLINE tSirNwType
23029WDI_2_HAL_NW_TYPE
23030(
23031 WDI_NwType wdiNWType
23032)
23033{
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 the chances of getting inlined*/
23036 switch( wdiNWType )
23037 {
23038 case WDI_11A_NW_TYPE:
23039 return eSIR_11A_NW_TYPE;
23040 case WDI_11B_NW_TYPE:
23041 return eSIR_11B_NW_TYPE;
23042 case WDI_11G_NW_TYPE:
23043 return eSIR_11G_NW_TYPE;
23044 case WDI_11N_NW_TYPE:
23045 return eSIR_11N_NW_TYPE;
23046 }
23047
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023049}/*WDI_2_HAL_NW_TYPE*/
23050
23051/*Convert WDI chanel bonding type into HAL cb type*/
23052WPT_STATIC WPT_INLINE ePhyChanBondState
23053WDI_2_HAL_CB_STATE
23054(
23055 WDI_PhyChanBondState wdiCbState
23056)
23057{
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 the chances of getting inlined*/
23060 switch ( wdiCbState )
23061 {
23062 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23063 return PHY_SINGLE_CHANNEL_CENTERED;
23064 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23065 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23066 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23067 return PHY_DOUBLE_CHANNEL_CENTERED;
23068 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23069 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023070#ifdef WLAN_FEATURE_11AC
23071 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23072 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23073 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23074 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23075 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23076 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23077 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23078 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23079 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23080 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23081 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23082 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23083 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23084 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23085#endif
23086 case WDI_MAX_CB_STATE:
23087 default:
23088 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023090
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 return PHY_CHANNEL_BONDING_STATE_MAX;
23092}/*WDI_2_HAL_CB_STATE*/
23093
23094/*Convert WDI chanel bonding type into HAL cb type*/
23095WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23096WDI_2_HAL_HT_OPER_MODE
23097(
23098 WDI_HTOperatingMode wdiHTOperMode
23099)
23100{
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 the chances of getting inlined*/
23103 switch ( wdiHTOperMode )
23104 {
23105 case WDI_HT_OP_MODE_PURE:
23106 return eSIR_HT_OP_MODE_PURE;
23107 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23108 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23109 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23110 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23111 case WDI_HT_OP_MODE_MIXED:
23112 return eSIR_HT_OP_MODE_MIXED;
23113 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023114
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 return eSIR_HT_OP_MODE_MAX;
23116}/*WDI_2_HAL_HT_OPER_MODE*/
23117
23118/*Convert WDI mimo PS type into HAL mimo PS type*/
23119WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23120WDI_2_HAL_MIMO_PS
23121(
23122 WDI_HTMIMOPowerSaveState wdiHTOperMode
23123)
23124{
Jeff Johnsone7245742012-09-05 17:12:55 -070023125 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 the chances of getting inlined*/
23127 switch ( wdiHTOperMode )
23128 {
23129 case WDI_HT_MIMO_PS_STATIC:
23130 return eSIR_HT_MIMO_PS_STATIC;
23131 case WDI_HT_MIMO_PS_DYNAMIC:
23132 return eSIR_HT_MIMO_PS_DYNAMIC;
23133 case WDI_HT_MIMO_PS_NA:
23134 return eSIR_HT_MIMO_PS_NA;
23135 case WDI_HT_MIMO_PS_NO_LIMIT:
23136 return eSIR_HT_MIMO_PS_NO_LIMIT;
23137 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023138
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 return eSIR_HT_MIMO_PS_MAX;
23140}/*WDI_2_HAL_MIMO_PS*/
23141
23142/*Convert WDI ENC type into HAL ENC type*/
23143WPT_STATIC WPT_INLINE tAniEdType
23144WDI_2_HAL_ENC_TYPE
23145(
23146 WDI_EncryptType wdiEncType
23147)
23148{
Jeff Johnsone7245742012-09-05 17:12:55 -070023149 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023150 the chances of getting inlined*/
23151 switch ( wdiEncType )
23152 {
23153 case WDI_ENCR_NONE:
23154 return eSIR_ED_NONE;
23155
23156 case WDI_ENCR_WEP40:
23157 return eSIR_ED_WEP40;
23158
23159 case WDI_ENCR_WEP104:
23160 return eSIR_ED_WEP104;
23161
23162 case WDI_ENCR_TKIP:
23163 return eSIR_ED_TKIP;
23164
23165 case WDI_ENCR_CCMP:
23166 return eSIR_ED_CCMP;
23167
23168 case WDI_ENCR_AES_128_CMAC:
23169 return eSIR_ED_AES_128_CMAC;
23170#if defined(FEATURE_WLAN_WAPI)
23171 case WDI_ENCR_WPI:
23172 return eSIR_ED_WPI;
23173#endif
23174 default:
23175 return eSIR_ED_NOT_IMPLEMENTED;
23176 }
23177
23178}/*WDI_2_HAL_ENC_TYPE*/
23179
23180/*Convert WDI WEP type into HAL WEP type*/
23181WPT_STATIC WPT_INLINE tAniWepType
23182WDI_2_HAL_WEP_TYPE
23183(
23184 WDI_WepType wdiWEPType
23185)
23186{
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 the chances of getting inlined*/
23189 switch ( wdiWEPType )
23190 {
23191 case WDI_WEP_STATIC:
23192 return eSIR_WEP_STATIC;
23193
23194 case WDI_WEP_DYNAMIC:
23195 return eSIR_WEP_DYNAMIC;
23196 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023197
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 return eSIR_WEP_MAX;
23199}/*WDI_2_HAL_WEP_TYPE*/
23200
23201WPT_STATIC WPT_INLINE tSirLinkState
23202WDI_2_HAL_LINK_STATE
23203(
23204 WDI_LinkStateType wdiLinkState
23205)
23206{
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 the chances of getting inlined*/
23209 switch ( wdiLinkState )
23210 {
23211 case WDI_LINK_IDLE_STATE:
23212 return eSIR_LINK_IDLE_STATE;
23213
23214 case WDI_LINK_PREASSOC_STATE:
23215 return eSIR_LINK_PREASSOC_STATE;
23216
23217 case WDI_LINK_POSTASSOC_STATE:
23218 return eSIR_LINK_POSTASSOC_STATE;
23219
23220 case WDI_LINK_AP_STATE:
23221 return eSIR_LINK_AP_STATE;
23222
23223 case WDI_LINK_IBSS_STATE:
23224 return eSIR_LINK_IBSS_STATE;
23225
23226 case WDI_LINK_BTAMP_PREASSOC_STATE:
23227 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23228
23229 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23230 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23231
23232 case WDI_LINK_BTAMP_AP_STATE:
23233 return eSIR_LINK_BTAMP_AP_STATE;
23234
23235 case WDI_LINK_BTAMP_STA_STATE:
23236 return eSIR_LINK_BTAMP_STA_STATE;
23237
23238 case WDI_LINK_LEARN_STATE:
23239 return eSIR_LINK_LEARN_STATE;
23240
23241 case WDI_LINK_SCAN_STATE:
23242 return eSIR_LINK_SCAN_STATE;
23243
23244 case WDI_LINK_FINISH_SCAN_STATE:
23245 return eSIR_LINK_FINISH_SCAN_STATE;
23246
23247 case WDI_LINK_INIT_CAL_STATE:
23248 return eSIR_LINK_INIT_CAL_STATE;
23249
23250 case WDI_LINK_FINISH_CAL_STATE:
23251 return eSIR_LINK_FINISH_CAL_STATE;
23252
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 case WDI_LINK_LISTEN_STATE:
23254 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023256 case WDI_LINK_SEND_ACTION_STATE:
23257 return eSIR_LINK_SEND_ACTION_STATE;
23258
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 default:
23260 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023262}
23263
Jeff Johnsone7245742012-09-05 17:12:55 -070023264/*Translate a STA Context from WDI into HAL*/
23265WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023266void
23267WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023268(
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 tConfigStaParams* phalConfigSta,
23270 WDI_ConfigStaReqInfoType* pwdiConfigSta
23271)
23272{
23273 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023274#ifdef WLAN_FEATURE_11AC
23275 /* Get the Version 1 Handler */
23276 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23277 if (WDI_getFwWlanFeatCaps(DOT11AC))
23278 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023279 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 }
23281#endif
23282 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 the chances of getting inlined*/
23284
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 wpalMemoryCopy(phalConfigSta->bssId,
23286 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23287
23288 wpalMemoryCopy(phalConfigSta->staMac,
23289 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023290
23291 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23292 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23293 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23294 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23295 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23296 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23297 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23298 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23299 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23300 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23301 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23302 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23303 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23304 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23305 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23306 phalConfigSta->action = pwdiConfigSta->wdiAction;
23307 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23308 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23309 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23310 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23311 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23312 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23313 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23316
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 pwdiConfigSta->wdiSupportedRates.opRateMode;
23319 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23320 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023322 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23323 }
23324 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23328 }
23329 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23330 {
23331 phalConfigSta->supportedRates.aniLegacyRates[i] =
23332 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23333 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23336 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023338 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23340 }
23341 phalConfigSta->supportedRates.rxHighestDataRate =
23342 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23343
Jeff Johnsone7245742012-09-05 17:12:55 -070023344#ifdef WLAN_FEATURE_11AC
23345 if(phalConfigSta_V1 != NULL)
23346 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023347 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23348 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23349 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23350 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023351 }
23352#endif
23353
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023355
Jeff Johnsone7245742012-09-05 17:12:55 -070023356#ifdef WLAN_FEATURE_11AC
23357 if(phalConfigSta_V1 != NULL)
23358 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023359 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23360 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023361 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023362 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23363 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23364
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 }
23366#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023367}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023368
23369/*Translate a Rate set info from WDI into HAL*/
23370WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023371WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023372(
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 tSirMacRateSet* pHalRateSet,
23374 WDI_RateSet* pwdiRateSet
23375)
23376{
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23379
23380 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23381 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23382
23383 for ( i = 0; i < pHalRateSet->numRates; i++ )
23384 {
23385 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23386 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023387
Jeff Johnson295189b2012-06-20 16:38:30 -070023388}/*WDI_CopyWDIRateSetToHALRateSet*/
23389
23390
23391/*Translate an EDCA Parameter Record from WDI into HAL*/
23392WPT_STATIC WPT_INLINE void
23393WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023394(
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 tSirMacEdcaParamRecord* phalEdcaParam,
23396 WDI_EdcaParamRecord* pWDIEdcaParam
23397)
23398{
Jeff Johnsone7245742012-09-05 17:12:55 -070023399 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 the chances of getting inlined*/
23401
23402 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23403 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23404 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23405 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23406
23407 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23408 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23409 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23410}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23411
23412
23413/*Copy a management frame header from WDI fmt into HAL fmt*/
23414WPT_STATIC WPT_INLINE void
23415WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23416(
23417 tSirMacMgmtHdr* pmacMgmtHdr,
23418 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23419)
23420{
23421 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23422 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23423 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23424 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23425 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23426 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23427 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23428 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23429 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23430 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23431 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23432
23433 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23434 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23435
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 pwdiMacMgmtHdr->bssId, 6);
23442
23443 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23444 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23445 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23446
23447}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23448
23449
23450/*Copy config bss parameters from WDI fmt into HAL fmt*/
23451WPT_STATIC WPT_INLINE void
23452WDI_CopyWDIConfigBSSToHALConfigBSS
23453(
23454 tConfigBssParams* phalConfigBSS,
23455 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23456)
23457{
23458
23459 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023460#ifdef WLAN_FEATURE_11AC
23461 /* Get the Version 1 Handler */
23462 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23463 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023464 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023465#endif
23466
Jeff Johnson295189b2012-06-20 16:38:30 -070023467 wpalMemoryCopy( phalConfigBSS->bssId,
23468 pwdiConfigBSS->macBSSID,
23469 WDI_MAC_ADDR_LEN);
23470
23471#ifdef HAL_SELF_STA_PER_BSS
23472 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23473 pwdiConfigBSS->macSelfAddr,
23474 WDI_MAC_ADDR_LEN);
23475#endif
23476
23477 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23478
23479 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23480 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23481
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 pwdiConfigBSS->ucShortSlotTimeSupported;
23484 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23485 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23486 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23487 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23488 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023489 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23491 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23492 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23493 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23494 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23495 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23496 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23497 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23498 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23499 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23500 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23501
Jeff Johnsone7245742012-09-05 17:12:55 -070023502 phalConfigBSS->htOperMode =
23503 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023504
23505 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23506 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23507 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23508 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23509
23510#ifdef WLAN_FEATURE_VOWIFI
23511 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23512#endif
23513
23514 /*! Used 32 as magic number because that is how the ssid is declared inside the
23515 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23518 pwdiConfigBSS->wdiSSID.ucLength : 32;
23519 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023520 pwdiConfigBSS->wdiSSID.sSSID,
23521 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023522
23523 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23524 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023525
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23527 &pwdiConfigBSS->wdiRateSet);
23528
23529 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23530
23531 if(phalConfigBSS->edcaParamsValid)
23532 {
23533 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23534 &pwdiConfigBSS->wdiBEEDCAParams);
23535 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23536 &pwdiConfigBSS->wdiBKEDCAParams);
23537 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23538 &pwdiConfigBSS->wdiVIEDCAParams);
23539 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23540 &pwdiConfigBSS->wdiVOEDCAParams);
23541 }
23542
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023544
23545 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23546
23547#ifdef WLAN_FEATURE_VOWIFI_11R
23548
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023551
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 if( phalConfigBSS->extSetStaKeyParamValid )
23553 {
23554 /*-----------------------------------------------------------------------
23555 Copy the STA Key parameters into the HAL message
23556 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023557 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23559
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23562
23563 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23564
23565 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23566
23567 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23568
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23570 keyIndex++)
23571 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023572 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23574 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23575 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23576 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23577 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23578 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23585 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 WDI_MAX_KEY_LENGTH);
23588 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 }
23590 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23591 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 sizeof(phalConfigBSS->extSetStaKeyParam) );
23594 }
23595
23596#endif /*WLAN_FEATURE_VOWIFI_11R*/
23597
Jeff Johnsone7245742012-09-05 17:12:55 -070023598#ifdef WLAN_FEATURE_11AC
23599 if(phalConfigBSS_V1 != NULL)
23600 {
23601 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23602 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23603 }
23604#endif
23605
Jeff Johnson295189b2012-06-20 16:38:30 -070023606}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23607
23608
Jeff Johnsone7245742012-09-05 17:12:55 -070023609/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023610 pointed to by user data */
23611WPT_STATIC WPT_INLINE void
23612WDI_ExtractRequestCBFromEvent
23613(
23614 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 void** ppUserData
23617)
23618{
23619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23620 switch ( pEvent->wdiRequest )
23621 {
23622 case WDI_START_REQ:
23623 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23624 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23625 break;
23626 case WDI_STOP_REQ:
23627 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23628 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23629 break;
23630 case WDI_INIT_SCAN_REQ:
23631 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23632 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23633 break;
23634 case WDI_START_SCAN_REQ:
23635 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23636 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23637 break;
23638 case WDI_END_SCAN_REQ:
23639 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23640 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23641 break;
23642 case WDI_FINISH_SCAN_REQ:
23643 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23644 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23645 break;
23646 case WDI_JOIN_REQ:
23647 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23648 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23649 break;
23650 case WDI_CONFIG_BSS_REQ:
23651 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23652 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23653 break;
23654 case WDI_DEL_BSS_REQ:
23655 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23656 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23657 break;
23658 case WDI_POST_ASSOC_REQ:
23659 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23660 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23661 break;
23662 case WDI_DEL_STA_REQ:
23663 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23664 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23665 break;
23666 case WDI_DEL_STA_SELF_REQ:
23667 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23668 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23669 break;
23670
23671 case WDI_SET_BSS_KEY_REQ:
23672 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23673 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23674 break;
23675 case WDI_RMV_BSS_KEY_REQ:
23676 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23677 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23678 break;
23679 case WDI_SET_STA_KEY_REQ:
23680 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23681 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23682 break;
23683 case WDI_RMV_STA_KEY_REQ:
23684 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23685 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23686 break;
23687 case WDI_ADD_TS_REQ:
23688 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23689 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23690 break;
23691 case WDI_DEL_TS_REQ:
23692 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23693 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23694 break;
23695 case WDI_UPD_EDCA_PRMS_REQ:
23696 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23697 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23698 break;
23699 case WDI_ADD_BA_SESSION_REQ:
23700 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23701 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23702 break;
23703 case WDI_DEL_BA_REQ:
23704 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23705 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23706 break;
23707#ifdef FEATURE_WLAN_CCX
23708 case WDI_TSM_STATS_REQ:
23709 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23710 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23711 break;
23712#endif
23713 case WDI_CH_SWITCH_REQ:
23714 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23715 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23716 break;
23717 case WDI_CONFIG_STA_REQ:
23718 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23719 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23720 break;
23721 case WDI_SET_LINK_ST_REQ:
23722 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23723 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23724 break;
23725 case WDI_GET_STATS_REQ:
23726 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23727 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23728 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023729#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23730 case WDI_GET_ROAM_RSSI_REQ:
23731 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23732 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23733 break;
23734#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 case WDI_UPDATE_CFG_REQ:
23736 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23737 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23738 break;
23739 case WDI_ADD_BA_REQ:
23740 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23741 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23742 break;
23743 case WDI_TRIGGER_BA_REQ:
23744 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23745 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23746 break;
23747 case WDI_UPD_BCON_PRMS_REQ:
23748 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23749 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23750 break;
23751 case WDI_SND_BCON_REQ:
23752 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23753 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23754 break;
23755 case WDI_ENTER_BMPS_REQ:
23756 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23757 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23758 break;
23759 case WDI_EXIT_BMPS_REQ:
23760 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23761 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23762 break;
23763 case WDI_ENTER_UAPSD_REQ:
23764 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23765 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23766 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023767 case WDI_EXIT_UAPSD_REQ:
23768 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23769 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23770 break;
23771 case WDI_SET_UAPSD_PARAM_REQ:
23772 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23773 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23774 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 case WDI_UPDATE_UAPSD_PARAM_REQ:
23776 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23777 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23778 break;
23779 case WDI_CONFIGURE_RXP_FILTER_REQ:
23780 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23781 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23782 break;
23783 case WDI_SET_BEACON_FILTER_REQ:
23784 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23785 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23786 break;
23787 case WDI_REM_BEACON_FILTER_REQ:
23788 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23789 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023790 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 case WDI_SET_RSSI_THRESHOLDS_REQ:
23792 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23793 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23794 break;
23795 case WDI_HOST_OFFLOAD_REQ:
23796 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23797 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23798 break;
23799 case WDI_WOWL_ADD_BC_PTRN_REQ:
23800 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23801 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23802 break;
23803 case WDI_WOWL_DEL_BC_PTRN_REQ:
23804 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23805 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23806 break;
23807 case WDI_WOWL_ENTER_REQ:
23808 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23809 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23810 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023811 case WDI_WOWL_EXIT_REQ:
23812 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23813 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23814 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23816 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23817 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23818 break;
23819 case WDI_FLUSH_AC_REQ:
23820 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23821 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23822 break;
23823 case WDI_BTAMP_EVENT_REQ:
23824 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23825 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23826 break;
23827 case WDI_KEEP_ALIVE_REQ:
23828 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23829 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23830 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023831#if defined FEATURE_WLAN_SCAN_PNO
23832 case WDI_SET_PREF_NETWORK_REQ:
23833 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23834 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23835 break;
23836 case WDI_SET_RSSI_FILTER_REQ:
23837 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23838 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23839 break;
23840 case WDI_UPDATE_SCAN_PARAMS_REQ:
23841 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23842 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23843 break;
23844#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 case WDI_SET_TX_PER_TRACKING_REQ:
23846 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23847 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023848 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023849#if defined WLAN_FEATURE_PACKET_FILTERING
23850 case WDI_8023_MULTICAST_LIST_REQ:
23851 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23852 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23853 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023854 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23855 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23856 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23857 break;
23858 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23859 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23860 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23861 break;
23862 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23863 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23864 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23865 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023866#endif
23867 case WDI_SET_POWER_PARAMS_REQ:
23868 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23869 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23870 break;
23871#if defined WLAN_FEATURE_GTK_OFFLOAD
23872 case WDI_GTK_OFFLOAD_REQ:
23873 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23874 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23875 break;
23876 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23877 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23878 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23879 break;
23880#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023881
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 default:
23883 *ppfnReqCB = NULL;
23884 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023885 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 }
23887}/*WDI_ExtractRequestCBFromEvent*/
23888
23889
23890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023891 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023892 frame xtl is enabled for a particular STA.
23893
23894 WDI_PostAssocReq must have been called.
23895
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 @param uSTAIdx: STA index
23897
Jeff Johnson295189b2012-06-20 16:38:30 -070023898 @see WDI_PostAssocReq
23899 @return Result of the function call
23900*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023901wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023902WDI_IsHwFrameTxTranslationCapable
23903(
23904 wpt_uint8 uSTAIdx
23905)
23906{
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 uma value*/
23909 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 ------------------------------------------------------------------------*/
23912 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23913 {
23914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23915 "WDI API call before module is initialized - Fail request");
23916
Jeff Johnsone7245742012-09-05 17:12:55 -070023917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 }
23919
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023920#ifdef WLAN_SOFTAP_VSTA_FEATURE
23921 if (IS_VSTA_IDX(uSTAIdx))
23922 {
23923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23924 "STA %d is a Virtual STA, "
23925 "HW frame translation disabled", uSTAIdx);
23926 return eWLAN_PAL_FALSE;
23927 }
23928#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023929
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 return gWDICb.bFrameTransEnabled;
23931}/*WDI_IsHwFrameTxTranslationCapable*/
23932
23933#ifdef FEATURE_WLAN_SCAN_PNO
23934/**
23935 @brief WDI_SetPreferredNetworkList
23936
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023939
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 wdiPNOScanCb: callback for passing back the response
23941 of the Set PNO operation received from the
23942 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023943
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023945 callback
23946
Jeff Johnson295189b2012-06-20 16:38:30 -070023947 @return Result of the function call
23948*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023950WDI_SetPreferredNetworkReq
23951(
23952 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23953 WDI_PNOScanCb wdiPNOScanCb,
23954 void* pUserData
23955)
23956{
23957 WDI_EventInfoType wdiEventData = {{0}};
23958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23959
23960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 ------------------------------------------------------------------------*/
23963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23964 {
23965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23966 "WDI API call before module is initialized - Fail request");
23967
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023969 }
23970
23971 /*------------------------------------------------------------------------
23972 Fill in Event data and post to the Main FSM
23973 ------------------------------------------------------------------------*/
23974 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023978 wdiEventData.pUserData = pUserData;
23979
23980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23981}
23982
23983
23984/**
23985 @brief WDI_SetRssiFilterReq
23986
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023989
Jeff Johnson295189b2012-06-20 16:38:30 -070023990 wdiRssiFilterCb: callback for passing back the response
23991 of the Set RSSI Filter operation received from the
23992 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023993
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023995 callback
23996
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 @return Result of the function call
23998*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023999WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024000WDI_SetRssiFilterReq
24001(
24002 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24003 WDI_RssiFilterCb wdiRssiFilterCb,
24004 void* pUserData
24005)
24006{
24007 WDI_EventInfoType wdiEventData = {{0}};
24008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24009
24010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 ------------------------------------------------------------------------*/
24013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24014 {
24015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24016 "WDI API call before module is initialized - Fail request");
24017
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 }
24020
24021 /*------------------------------------------------------------------------
24022 Fill in Event data and post to the Main FSM
24023 ------------------------------------------------------------------------*/
24024 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024027 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 wdiEventData.pUserData = pUserData;
24029
24030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24031}/*WDI_SetRssiFilterReq*/
24032
24033/**
24034 @brief WDI_UpdateScanParamsReq
24035
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024038
Jeff Johnson295189b2012-06-20 16:38:30 -070024039 wdiUpdateScanParamsCb: callback for passing back the response
24040 of the Set PNO operation received from the
24041 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024042
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024044 callback
24045
Jeff Johnson295189b2012-06-20 16:38:30 -070024046 @return Result of the function call
24047*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024048WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024049WDI_UpdateScanParamsReq
24050(
24051 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24052 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24053 void* pUserData
24054)
24055{
24056 WDI_EventInfoType wdiEventData = {{0}};
24057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24058
24059 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024061 ------------------------------------------------------------------------*/
24062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24063 {
24064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24065 "WDI API call before module is initialized - Fail request");
24066
Jeff Johnsone7245742012-09-05 17:12:55 -070024067 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024068 }
24069
24070 /*------------------------------------------------------------------------
24071 Fill in Event data and post to the Main FSM
24072 ------------------------------------------------------------------------*/
24073 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 wdiEventData.pUserData = pUserData;
24078
24079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24080}
24081
24082/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024085
24086 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 pwdiPNOScanReqParams: pointer to the info received
24088 from upper layers
24089 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 and its size
24091
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 @return Result of the function call
24093*/
24094
24095WDI_Status
24096WDI_PackPreferredNetworkList
24097(
24098 WDI_ControlBlockType* pWDICtx,
24099 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24100 wpt_uint8** ppSendBuffer,
24101 wpt_uint16* pSize
24102)
24103{
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 wpt_uint16 usDataOffset = 0;
24106 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024107 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 /*-----------------------------------------------------------------------
24110 Get message buffer
24111 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024113 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024115 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 {
24117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24118 "Unable to get send buffer in Set PNO req %x ",
24119 pwdiPNOScanReqParams);
24120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 }
24123
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024124 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24125
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 /*-------------------------------------------------------------------------
24127 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24128 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024129 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024131 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024132 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24133
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024134 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024137 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24139
24140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24143 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24144 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24145
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024146 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024147 {
24148 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024149 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024150 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24151
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024152 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024153 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024154 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024155
24156 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024157 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024158 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024159
24160 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024161 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024162 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024163
Jeff Johnsone7245742012-09-05 17:12:55 -070024164 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024166 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024167 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24168 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24169 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24170 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024171
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024172 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024174 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024175
24176 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024177 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24179
24180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024182 pPrefNetwListParams->aNetworks[i].ssId.length,
24183 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 }
24185
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024186 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024187 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024188 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24189 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24190 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24191
24192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024194 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024195 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24196 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24197
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024198 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024199 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024200 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024202 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24204 }
24205
24206 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024207 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24209 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24210 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024212
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024213 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024214 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024215 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024216
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024217 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024218 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24219 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24220 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024222
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024223 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024224 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024225 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024226
24227 /*Set the output values*/
24228 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024230
24231 return WDI_STATUS_SUCCESS;
24232}/*WDI_PackPreferredNetworkList*/
24233
24234/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024237
24238 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024239 pwdiPNOScanReqParams: pointer to the info received
24240 from upper layers
24241 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024242 and its size
24243
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 @return Result of the function call
24245*/
24246
24247WDI_Status
24248WDI_PackPreferredNetworkListNew
24249(
24250 WDI_ControlBlockType* pWDICtx,
24251 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24252 wpt_uint8** ppSendBuffer,
24253 wpt_uint16* pSize
24254)
24255{
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 wpt_uint16 usDataOffset = 0;
24258 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024259 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024260 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024261
24262 /*-----------------------------------------------------------------------
24263 Get message buffer
24264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024266 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024268 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 {
24270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24271 "Unable to get send buffer in Set PNO req %x ",
24272 pwdiPNOScanReqParams);
24273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 }
24276
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024277 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24278
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 /*-------------------------------------------------------------------------
24280 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24281 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024282 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024284 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24286
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024287 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24292
24293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24296 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24297 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24298
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024299 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 {
24301 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024302 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24304
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024305 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024307 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024308
24309 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024310 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312
24313 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024314 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316
24317 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024318 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320
Jeff Johnsone7245742012-09-05 17:12:55 -070024321 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024323 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024324 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24325
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024326 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024328 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024329
24330 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024331 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24333
24334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024336 pPrefNetwListParams->aNetworks[i].ssId.length,
24337 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 }
24339
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024340 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24343 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24344 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24345
24346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024348 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024349 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24350 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24351
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024352 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024354 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024356 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24358 }
24359
24360 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024361 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24363 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24364 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024366
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024369 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024370
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024371 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24373 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24374 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024375 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024376
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024377 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024379 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024380
Jeff Johnson295189b2012-06-20 16:38:30 -070024381
24382 /*Set the output values*/
24383 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024385
24386 return WDI_STATUS_SUCCESS;
24387}/*WDI_PackPreferredNetworkListNew*/
24388
24389/**
24390 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024391
24392 @param pWDICtx: pointer to the WLAN DAL context
24393 pEventData: pointer to the event information structure
24394
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 @return Result of the function call
24396*/
24397WDI_Status
24398WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024399(
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 WDI_ControlBlockType* pWDICtx,
24401 WDI_EventInfoType* pEventData
24402)
24403{
24404 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24405 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024408 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024409
24410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 -------------------------------------------------------------------------*/
24413 if (( NULL == pEventData ) ||
24414 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24415 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24416 {
24417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024421 }
24422
24423 /*-------------------------------------------------------------------------
24424 Pack the PNO request structure based on version
24425 -------------------------------------------------------------------------*/
24426 if ( pWDICtx->wdiPNOVersion > 0 )
24427 {
24428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024429 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 pWDICtx->wdiPNOVersion);
24431
24432 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24433 &pSendBuffer, &usSendSize);
24434 }
24435 else
24436 {
24437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024438 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 pWDICtx->wdiPNOVersion);
24440
24441 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24442 &pSendBuffer, &usSendSize);
24443 }
24444
24445 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24446 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24447 {
24448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024449 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024451 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 }
24453
24454 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024456
24457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024458 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24461 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024462}
24463
24464/**
24465 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024466
24467 @param pWDICtx: pointer to the WLAN DAL context
24468 pEventData: pointer to the event information structure
24469
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 @see
24471 @return Result of the function call
24472*/
24473WDI_Status
24474WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024475(
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 WDI_ControlBlockType* pWDICtx,
24477 WDI_EventInfoType* pEventData
24478)
24479{
24480 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24481 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 wpt_uint16 usDataOffset = 0;
24484 wpt_uint16 usSendSize = 0;
24485 wpt_uint8 ucRssiThreshold;
24486
24487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024489 -------------------------------------------------------------------------*/
24490 if (( NULL == pEventData ) ||
24491 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24492 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24493 {
24494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024495 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 }
24499
24500 /*-----------------------------------------------------------------------
24501 Get message buffer
24502 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024503 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024504 sizeof(ucRssiThreshold),
24505 &pSendBuffer, &usDataOffset, &usSendSize))||
24506 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24507 {
24508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24509 "Unable to get send buffer in Set PNO req %x %x %x",
24510 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 }
24514
24515 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24516
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 wpalMemoryCopy( pSendBuffer+usDataOffset,
24518 &ucRssiThreshold,
24519 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024520
24521 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024523
24524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024525 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024527 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24528 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024529}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024530#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24531/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024532 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024533
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024534 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024535 by the Device Interface
24536
24537 wdiRoamOffloadScancb: callback for passing back the response
24538 of the Roam Candidate Lookup Req operation received from the
24539 device
24540
24541 pUserData: user data will be passed back with the
24542 callback
24543 @return Result of the function call
24544*/
24545WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024546WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024547(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024548 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024549 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24550 void* pUserData
24551)
24552{
24553 WDI_EventInfoType wdiEventData = {{0}};
24554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24555
24556 /*------------------------------------------------------------------------
24557 Sanity Check
24558 ------------------------------------------------------------------------*/
24559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24560 {
24561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24562 "WDI API call before module is initialized - Fail request");
24563
24564 return WDI_STATUS_E_NOT_ALLOWED;
24565 }
24566
24567 /*------------------------------------------------------------------------
24568 Fill in Event data and post to the Main FSM
24569 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024570 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24571 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24572 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024573 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24574 wdiEventData.pUserData = pUserData;
24575
24576 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24577}
24578
24579void
24580WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24581{
24582 switch (wdiEdType)
24583 {
24584 case WDI_ED_NONE:
24585 *EdType = eED_NONE;
24586 break;
24587 case WDI_ED_WEP40:
24588 case WDI_ED_WEP104:
24589 *EdType = eED_WEP;
24590 break;
24591 case WDI_ED_TKIP:
24592 *EdType = eED_TKIP;
24593 break;
24594 case WDI_ED_CCMP:
24595#ifdef WLAN_FEATURE_11W
24596 case WDI_ED_AES_128_CMAC:
24597#endif
24598 *EdType = eED_CCMP;
24599 break;
24600#ifdef FEATURE_WLAN_WAPI
24601 case WDI_ED_WPI:
24602 *EdType = eED_WPI;
24603 break;
24604#endif
24605 case WDI_ED_ANY:
24606 *EdType = eED_ANY;
24607 break;
24608
24609 default:
24610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24611 "%s: Unknown Encryption Type", __func__);
24612 break;
24613 }
24614}
24615
24616/**
24617 @brief Helper function to pack Start Roam Candidate Lookup
24618 Request parameters
24619
24620 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024621 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024622 from upper layers
24623 ppSendBuffer, pSize - out pointers of the packed buffer
24624 and its size
24625
24626 @return Result of the function call
24627*/
24628
24629WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024630WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024631(
24632 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024633 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024634 wpt_uint8** ppSendBuffer,
24635 wpt_uint16* pSize
24636)
24637{
24638 wpt_uint8* pSendBuffer = NULL;
24639 wpt_uint16 usDataOffset = 0;
24640 wpt_uint16 usSendSize = 0;
24641 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24642 wpt_uint8 i;
24643 /*-----------------------------------------------------------------------
24644 Get message buffer
24645 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024646 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024647 sizeof(tRoamCandidateListParams),
24648 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024649 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024650 {
24651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24652 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024653 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024654 WDI_ASSERT(0);
24655 return WDI_STATUS_E_FAILURE;
24656 }
24657 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024658 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024659 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024660 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024661 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024662 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024663 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024664 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024665 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024666 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024667 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024668
24669 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024670 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024671 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024672 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024673 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24674 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024675 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24676 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24677 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24678 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24679 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24680 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24681 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24682 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24683 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24684 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24685 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24686 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24687 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24688 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024689 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024690 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24691 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24692 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024693
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24695 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24696 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24697 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24698 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24699 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24700 "HomeAwayTime=%d\n",
24701 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24702 pRoamCandidateListParams->RoamScanOffloadEnabled,
24703 pRoamCandidateListParams->Command,
24704 pRoamCandidateListParams->StartScanReason,
24705 pRoamCandidateListParams->NeighborScanTimerPeriod,
24706 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24707 pRoamCandidateListParams->NeighborScanChannelMinTime,
24708 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24709 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24710 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24711 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24712 pRoamCandidateListParams->ConnectedNetwork.authentication,
24713 pRoamCandidateListParams->ConnectedNetwork.encryption,
24714 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24715 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24716 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024717 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024718 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024719 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024720 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024721 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24722 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024723 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024724 pRoamCandidateListParams->us24GProbeSize);
24725 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024726 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024727 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024728 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024729 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24730 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024731 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024732 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024733 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24734 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24735 pRoamCandidateListParams->nProbes =
24736 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24737 pRoamCandidateListParams->HomeAwayTime =
24738 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024740 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24741 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024743 }
24744
24745
24746 /*Set the output values*/
24747 *ppSendBuffer = pSendBuffer;
24748 *pSize = usSendSize;
24749 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024750}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024751
24752/**
24753 @brief Process Start Roam Candidate Lookup Request function
24754
24755 @param pWDICtx: pointer to the WLAN DAL context
24756 pEventData: pointer to the event information structure
24757
24758 @return Result of the function call
24759*/
24760WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024761WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024762(
24763 WDI_ControlBlockType* pWDICtx,
24764 WDI_EventInfoType* pEventData
24765)
24766{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024767 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024768 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24769 wpt_uint8* pSendBuffer = NULL;
24770 wpt_uint16 usSendSize = 0;
24771 WDI_Status wdiStatus;
24772 /*-------------------------------------------------------------------------
24773 Sanity check
24774 -------------------------------------------------------------------------*/
24775 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024776 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024777 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24778 {
24779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24780 "%s: Invalid parameters", __func__);
24781 WDI_ASSERT(0);
24782 return WDI_STATUS_E_FAILURE;
24783 }
24784
24785 /*-------------------------------------------------------------------------
24786 Pack the Start Roam Candidate Lookup request structure based on version
24787 -------------------------------------------------------------------------*/
24788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24789 "%s: Packing Roam Candidate Lookup request ", __func__);
24790
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024791 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024792 &pSendBuffer, &usSendSize);
24793
24794 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24795 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24796 {
24797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24798 "%s: failed to pack request parameters", __func__);
24799 WDI_ASSERT(0);
24800 return wdiStatus;
24801 }
24802
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024803 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24804 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024805
24806 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024807 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024808 -------------------------------------------------------------------------*/
24809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024810 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024811}
24812
24813/**
24814 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24815 response is being received over the bus from HAL)
24816
24817 @param pWDICtx: pointer to the WLAN DAL context
24818 pEventData: pointer to the event information structure
24819
24820 @see
24821 @return Result of the function call
24822*/
24823WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024824WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024825(
24826 WDI_ControlBlockType* pWDICtx,
24827 WDI_EventInfoType* pEventData
24828)
24829{
24830 WDI_Status wdiStatus;
24831 eHalStatus halStatus;
24832 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24833
24834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24835
24836 /*-------------------------------------------------------------------------
24837 Sanity check
24838 -------------------------------------------------------------------------*/
24839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24840 ( NULL == pEventData->pEventData ))
24841 {
24842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24843 "%s: Invalid parameters", __func__);
24844 WDI_ASSERT(0);
24845 return WDI_STATUS_E_FAILURE;
24846 }
24847
24848 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24849
24850 /*-------------------------------------------------------------------------
24851 Extract response and send it to UMAC
24852 -------------------------------------------------------------------------*/
24853 halStatus = *((eHalStatus*)pEventData->pEventData);
24854 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24855
24856 /*Notify UMAC*/
24857 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24858
24859 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024860}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024861#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024862
24863/**
24864 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024865
24866 @param pWDICtx: pointer to the WLAN DAL context
24867 pEventData: pointer to the event information structure
24868
Jeff Johnson295189b2012-06-20 16:38:30 -070024869 @see
24870 @return Result of the function call
24871*/
24872WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024873WDI_PackUpdateScanParamsReq
24874(
24875 WDI_ControlBlockType* pWDICtx,
24876 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24877 wpt_uint8** ppSendBuffer,
24878 wpt_uint16* pSize
24879)
24880{
24881 wpt_uint8* pSendBuffer = NULL;
24882 wpt_uint16 usDataOffset = 0;
24883 wpt_uint16 usSendSize = 0;
24884 tUpdateScanParams updateScanParams = {0};
24885
24886
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024888 "Begin WDI Update Scan Parameters Old Style Params");
24889 /*-----------------------------------------------------------------------
24890 Get message buffer
24891 -----------------------------------------------------------------------*/
24892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24893 sizeof(updateScanParams),
24894 &pSendBuffer, &usDataOffset, &usSendSize))||
24895 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24896 {
24897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24898 "Unable to get send buffer in Update Scan Params req %x",
24899 pwdiUpdateScanParams);
24900 WDI_ASSERT(0);
24901 return WDI_STATUS_E_FAILURE;
24902 }
24903
24904 //
24905 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24906 //
24907
24908 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24909 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24910
24911 updateScanParams.ucChannelCount =
24912 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24913 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24914 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24915 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24916
24917 wpalMemoryCopy( updateScanParams.aChannels,
24918 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24919 updateScanParams.ucChannelCount);
24920
24921
24922 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24923 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24924 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24925 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24926 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24927
24928 wpalMemoryCopy( pSendBuffer+usDataOffset,
24929 &updateScanParams,
24930 sizeof(updateScanParams));
24931
24932 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24933 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24934
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024936 "End Update Scan Parameters Old Style");
24937
24938 /*Set the output values*/
24939 *ppSendBuffer = pSendBuffer;
24940 *pSize = usSendSize;
24941
24942 return WDI_STATUS_SUCCESS;
24943}
24944
24945/**
24946 @brief Process Update Scan Params function
24947
24948 @param pWDICtx: pointer to the WLAN DAL context
24949 pEventData: pointer to the event information structure
24950
24951 @see
24952 @return Result of the function call
24953*/
24954WDI_Status
24955WDI_PackUpdateScanParamsReqEx
24956(
24957 WDI_ControlBlockType* pWDICtx,
24958 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24959 wpt_uint8** ppSendBuffer,
24960 wpt_uint16* pSize
24961)
24962{
24963 wpt_uint8* pSendBuffer = NULL;
24964 wpt_uint16 usDataOffset = 0;
24965 wpt_uint16 usSendSize = 0;
24966 tUpdateScanParamsEx updateScanParams = {0};
24967
24968
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024969 /*-----------------------------------------------------------------------
24970 Get message buffer
24971 -----------------------------------------------------------------------*/
24972 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24973 sizeof(updateScanParams),
24974 &pSendBuffer, &usDataOffset, &usSendSize))||
24975 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24976 {
24977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24978 "Unable to get send buffer in Update Scan Params Ex req %x",
24979 pwdiUpdateScanParams);
24980 WDI_ASSERT(0);
24981 return WDI_STATUS_E_FAILURE;
24982 }
24983
24984 //
24985 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24986 //
24987
24988 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24989 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24990
24991 updateScanParams.ucChannelCount =
24992 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24993 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
24994 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24995 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
24996
24997 wpalMemoryCopy( updateScanParams.aChannels,
24998 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24999 updateScanParams.ucChannelCount);
25000
25001
25002 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25003 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25004 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25005 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25006 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25007
25008 wpalMemoryCopy( pSendBuffer+usDataOffset,
25009 &updateScanParams,
25010 sizeof(updateScanParams));
25011
25012 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25013 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25014
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025015 /*Set the output values*/
25016 *ppSendBuffer = pSendBuffer;
25017 *pSize = usSendSize;
25018
25019 return WDI_STATUS_SUCCESS;
25020}
25021
25022/**
25023 @brief Process Update Scan Params function
25024
25025 @param pWDICtx: pointer to the WLAN DAL context
25026 pEventData: pointer to the event information structure
25027
25028 @see
25029 @return Result of the function call
25030*/
25031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025032WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025033(
Jeff Johnson295189b2012-06-20 16:38:30 -070025034 WDI_ControlBlockType* pWDICtx,
25035 WDI_EventInfoType* pEventData
25036)
25037{
25038 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25039 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025040 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025041 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025042 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025043
25044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 -------------------------------------------------------------------------*/
25047 if (( NULL == pEventData ) ||
25048 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25049 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25050 {
25051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 }
25056
25057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25058 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025059
25060 //
25061 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25062 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025063 if ( pWDICtx->wlanVersion.revision < 1 )
25064 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025065 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025066 &pSendBuffer, &usSendSize);
25067 }
25068 else
25069 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025070 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25071 &pSendBuffer, &usSendSize);
25072 }
25073
25074 if(WDI_STATUS_SUCCESS != wdiStatus)
25075 {
25076 //memory allocation failed
25077 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025078 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025079
Jeff Johnson295189b2012-06-20 16:38:30 -070025080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025081 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025083 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025084 wdiUpdateScanParamsCb, pEventData->pUserData,
25085 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025086}
25087
25088/**
25089 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025090
25091 @param pWDICtx: pointer to the WLAN DAL context
25092 pEventData: pointer to the event information structure
25093
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 @see
25095 @return Result of the function call
25096*/
25097WDI_Status
25098WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025099(
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 WDI_ControlBlockType* pWDICtx,
25101 WDI_EventInfoType* pEventData
25102)
25103{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025104 WDI_LowLevelIndType wdiInd;
25105 tpPrefNetwFoundParams pNetwFoundParams;
25106 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025107
25108
25109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 -------------------------------------------------------------------------*/
25112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25113 ( NULL == pEventData->pEventData ))
25114 {
25115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025119 }
25120
25121 /*-------------------------------------------------------------------------
25122 Extract indication and send it to UMAC
25123 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025124 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25125
25126 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25127 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25128 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25129
25130 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25131 {
25132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25133 "%s: fail to allocate memory", __func__);
25134 return WDI_STATUS_MEM_FAILURE;
25135 }
25136
25137 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25138 (pNetwFoundParams->ssId.length < 32 )?
25139 pNetwFoundParams->ssId.length : 32;
25140 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25141 pNetwFoundParams->ssId.ssId,
25142 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25143 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25144 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25145 pNetwFoundParams->frameLength;
25146 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25147 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25148 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025149
25150 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025152
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 // DEBUG
25154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025155 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025157 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025159 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025160 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25161
ltimariu034f7d62013-01-24 18:54:33 -080025162 if ( pWDICtx->wdiLowLevelIndCB )
25163 {
25164 /*Notify UMAC*/
25165 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25166 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025167
25168 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025169}
25170
25171/**
25172 @brief Process PNO Rsp function (called when a
25173 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025174
25175 @param pWDICtx: pointer to the WLAN DAL context
25176 pEventData: pointer to the event information structure
25177
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 @see
25179 @return Result of the function call
25180*/
25181WDI_Status
25182WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025183(
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 WDI_ControlBlockType* pWDICtx,
25185 WDI_EventInfoType* pEventData
25186)
25187{
25188 WDI_Status wdiStatus;
25189 eHalStatus halStatus;
25190 WDI_PNOScanCb wdiPNOScanCb = NULL;
25191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25192
25193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 -------------------------------------------------------------------------*/
25196 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25197 ( NULL == pEventData->pEventData ))
25198 {
25199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025203 }
25204
25205
Jeff Johnsone7245742012-09-05 17:12:55 -070025206 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025207
25208 /*-------------------------------------------------------------------------
25209 Extract response and send it to UMAC
25210 -------------------------------------------------------------------------*/
25211 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025212 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025213
25214 /*Notify UMAC*/
25215 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25216
Jeff Johnsone7245742012-09-05 17:12:55 -070025217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025218}/*WDI_ProcessSetPreferredNetworkRsp*/
25219
25220/**
25221 @brief Process RSSI Filter Rsp function (called when a
25222 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025223
25224 @param pWDICtx: pointer to the WLAN DAL context
25225 pEventData: pointer to the event information structure
25226
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 @see
25228 @return Result of the function call
25229*/
25230WDI_Status
25231WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025232(
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 WDI_ControlBlockType* pWDICtx,
25234 WDI_EventInfoType* pEventData
25235)
25236{
25237 WDI_Status wdiStatus;
25238 eHalStatus halStatus;
25239 WDI_RssiFilterCb wdiRssiFilterCb;
25240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25241
25242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025243 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025244 -------------------------------------------------------------------------*/
25245 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25246 ( NULL == pEventData->pEventData ))
25247 {
25248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025252 }
25253
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025255
25256 /*-------------------------------------------------------------------------
25257 Extract response and send it to UMAC
25258 -------------------------------------------------------------------------*/
25259 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025260 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025261
25262 /*Notify UMAC*/
25263 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25264
Jeff Johnsone7245742012-09-05 17:12:55 -070025265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025266}/*WDI_ProcessSetRssiFilterRsp*/
25267
25268/**
25269 @brief Process Update Scan Params Rsp function (called when a
25270 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025271
25272 @param pWDICtx: pointer to the WLAN DAL context
25273 pEventData: pointer to the event information structure
25274
Jeff Johnson295189b2012-06-20 16:38:30 -070025275 @see
25276 @return Result of the function call
25277*/
25278WDI_Status
25279WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025280(
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 WDI_ControlBlockType* pWDICtx,
25282 WDI_EventInfoType* pEventData
25283)
25284{
25285 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025286 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25290
25291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025293 -------------------------------------------------------------------------*/
25294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25295 ( NULL == pEventData->pEventData ))
25296 {
25297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025301 }
25302
25303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025304 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025305
Jeff Johnsone7245742012-09-05 17:12:55 -070025306 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025307
25308 /*-------------------------------------------------------------------------
25309 Extract response and send it to UMAC
25310 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025311 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25312 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 sizeof(halUpdScanParams.status));
25314
25315 uStatus = halUpdScanParams.status;
25316
25317 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025318 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025319
25320 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025322
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025324
25325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025326 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025327 halUpdScanParams.status);
25328
25329 /*Notify UMAC*/
25330 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25331
Jeff Johnsone7245742012-09-05 17:12:55 -070025332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025333}
25334#endif // FEATURE_WLAN_SCAN_PNO
25335
25336#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025337WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025338WDI_8023MulticastListReq
25339(
25340 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25341 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25342 void* pUserData
25343)
25344{
25345 WDI_EventInfoType wdiEventData;
25346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25347
25348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025349 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025350
25351 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025352 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 ------------------------------------------------------------------------*/
25354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25355 {
25356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25357 "WDI API call before module is initialized - Fail request");
25358
Jeff Johnsone7245742012-09-05 17:12:55 -070025359 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025360 }
25361
25362 /*------------------------------------------------------------------------
25363 Fill in Event data and post to the Main FSM
25364 ------------------------------------------------------------------------*/
25365 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025366 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025367 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025368 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025369 wdiEventData.pUserData = pUserData;
25370
25371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25372}
25373
Jeff Johnsone7245742012-09-05 17:12:55 -070025374WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025375WDI_ReceiveFilterSetFilterReq
25376(
25377 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25378 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25379 void* pUserData
25380)
25381{
25382 WDI_EventInfoType wdiEventData;
25383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25384
25385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025386 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025387
25388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 ------------------------------------------------------------------------*/
25391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25392 {
25393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25394 "WDI API call before module is initialized - Fail request");
25395
Jeff Johnsone7245742012-09-05 17:12:55 -070025396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025397 }
25398
25399 /*------------------------------------------------------------------------
25400 Fill in Event data and post to the Main FSM
25401 ------------------------------------------------------------------------*/
25402 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025403 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25404 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025405 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25406 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025407 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025408 wdiEventData.pUserData = pUserData;
25409
25410
25411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25412}
25413
Jeff Johnsone7245742012-09-05 17:12:55 -070025414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025415WDI_FilterMatchCountReq
25416(
25417 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25418 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25419 void* pUserData
25420)
25421{
25422 WDI_EventInfoType wdiEventData;
25423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25424
25425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025426 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025427
25428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 ------------------------------------------------------------------------*/
25431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25432 {
25433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25434 "WDI API call before module is initialized - Fail request");
25435
Jeff Johnsone7245742012-09-05 17:12:55 -070025436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 }
25438
25439 /*------------------------------------------------------------------------
25440 Fill in Event data and post to the Main FSM
25441 ------------------------------------------------------------------------*/
25442 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025443 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025444 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025445 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 wdiEventData.pUserData = pUserData;
25447
25448
25449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25450}
25451
Jeff Johnsone7245742012-09-05 17:12:55 -070025452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025453WDI_ReceiveFilterClearFilterReq
25454(
25455 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25456 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25457 void* pUserData
25458)
25459{
25460 WDI_EventInfoType wdiEventData;
25461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25462
25463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025464 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025465
25466 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025467 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 ------------------------------------------------------------------------*/
25469 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25470 {
25471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25472 "WDI API call before module is initialized - Fail request");
25473
Jeff Johnsone7245742012-09-05 17:12:55 -070025474 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025475 }
25476
25477 /*------------------------------------------------------------------------
25478 Fill in Event data and post to the Main FSM
25479 ------------------------------------------------------------------------*/
25480 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025481 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025482 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025483 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 wdiEventData.pUserData = pUserData;
25485
25486
25487 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25488}
25489
25490/**
25491 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025492
25493 @param pWDICtx: pointer to the WLAN DAL context
25494 pEventData: pointer to the event information structure
25495
Jeff Johnson295189b2012-06-20 16:38:30 -070025496 @see
25497 @return Result of the function call
25498*/
25499WDI_Status
25500WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025501(
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 WDI_ControlBlockType* pWDICtx,
25503 WDI_EventInfoType* pEventData
25504)
25505{
25506 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25507 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 wpt_uint16 usDataOffset = 0;
25510 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025511 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025512 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025513 wpt_uint8 ucCurrentBSSSesIdx = 0;
25514 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025515
25516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025517 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025518
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025519 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25520 if( NULL == pRcvFltMcAddrListType )
25521 {
25522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25523 "Failed to alloc in WDI_Process8023MulticastListReq");
25524 return WDI_STATUS_E_FAILURE;
25525 }
25526
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 -------------------------------------------------------------------------*/
25530 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25535 {
25536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025537 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025538 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025540 return WDI_STATUS_E_FAILURE;
25541 }
25542
25543 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25544 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25545 &pBSSSes);
25546 if ( NULL == pBSSSes )
25547 {
25548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025549 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025550 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025552 }
25553
25554 /*-----------------------------------------------------------------------
25555 Get message buffer
25556 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25558 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 sizeof(tHalRcvFltMcAddrListType),
25560 &pSendBuffer, &usDataOffset, &usSendSize))||
25561 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25562 {
25563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25564 "Unable to get send buffer in "
25565 "WDI_Process8023MulticastListReq() %x %x %x",
25566 pEventData, pwdiFltPktSetMcListReqParamsType,
25567 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025568 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025571 }
25572
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025573 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025574 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025575 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025577 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25579 sizeof(tSirMacAddr));
25580 }
25581
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025582 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025584 pRcvFltMcAddrListType,
25585 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025586
25587 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025589
25590
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025591 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025595 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025598}
25599
25600/**
25601 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025602
25603 @param pWDICtx: pointer to the WLAN DAL context
25604 pEventData: pointer to the event information structure
25605
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 @see
25607 @return Result of the function call
25608*/
25609WDI_Status
25610WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025611(
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 WDI_ControlBlockType* pWDICtx,
25613 WDI_EventInfoType* pEventData
25614)
25615{
25616 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25617 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 wpt_uint16 usDataOffset = 0;
25620 wpt_uint16 usSendSize = 0;
25621 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025622 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025623 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025624 wpt_uint8 ucCurrentBSSSesIdx = 0;
25625 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025626 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25627 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025628
25629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025630 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025631
25632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 -------------------------------------------------------------------------*/
25635 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25640 {
25641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 return WDI_STATUS_E_FAILURE;
25645 }
25646
25647 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25648 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25649 &pBSSSes);
25650 if ( NULL == pBSSSes )
25651 {
25652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025653 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 }
25656
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025657 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25658 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025659
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025660 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25661 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25662 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25663
25664 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25665 usSessRcvPktFilterCfgSize);
25666
25667 if(NULL == pSessRcvPktFilterCfg)
25668 {
25669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25670 "%s: Failed to allocate memory for "
25671 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025672 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025673 WDI_ASSERT(0);
25674 return WDI_STATUS_E_FAILURE;
25675 }
25676
25677 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25678
25679 /*-----------------------------------------------------------------------
25680 Get message buffer
25681 -----------------------------------------------------------------------*/
25682
25683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25684 usSessRcvPktFilterCfgSize,
25685 &pSendBuffer, &usDataOffset, &usSendSize))||
25686 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25687 {
25688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25689 "Unable to get send buffer in "
25690 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25691 pEventData, pwdiSetRcvPktFilterReqInfo,
25692 wdiReceiveFilterSetFilterCb);
25693 WDI_ASSERT(0);
25694 wpalMemoryFree(pSessRcvPktFilterCfg);
25695 return WDI_STATUS_E_FAILURE;
25696 }
25697
25698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25699 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25700 usSendSize,pSessRcvPktFilterCfg);
25701
25702 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25703 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25704 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25705 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25706
25707 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25708
25709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25710 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25711 pSessRcvPktFilterCfg->filterType);
25712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25713 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25714 pSessRcvPktFilterCfg->coleasceTime);
25715
25716 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25717 {
25718 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25719 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25720 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25721 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25722 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25723 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25724 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25725 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25726
25727 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25728 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25729 8);
25730 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25731 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25732 8);
25733
25734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25735 "Out:Proto %d Comp Flag %d \n",
25736 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25737 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25738
25739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25740 "Data Offset %d Data Len %d\n",
25741 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25742 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25743
25744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25745 "CData: %d:%d:%d:%d:%d:%d\n",
25746 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25747 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25748 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25749 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25750 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25751 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25752
25753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25754 "MData: %d:%d:%d:%d:%d:%d\n",
25755 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25756 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25757 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25758 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25759 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25760 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25761 }
25762
25763 wpalMemoryCopy( pSendBuffer+usDataOffset,
25764 pSessRcvPktFilterCfg,
25765 usSessRcvPktFilterCfgSize);
25766
25767
25768 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25769 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25770
25771 wpalMemoryFree(pSessRcvPktFilterCfg);
25772
25773 }
25774 /*If SLM_SESSIONIZATION is not supported then do this */
25775 else
25776 {
25777 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25778 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25779 * sizeof(tHalRcvPktFilterParams));
25780
25781 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 usRcvPktFilterCfgSize);
25783
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025784 if(NULL == pRcvPktFilterCfg)
25785 {
25786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25787 "%s: Failed to allocate memory for "
25788 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025789 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025790 WDI_ASSERT(0);
25791 return WDI_STATUS_E_FAILURE;
25792 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025793
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025794 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025795
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025796 /*-----------------------------------------------------------------------
25797 Get message buffer
25798 -----------------------------------------------------------------------*/
25799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 usRcvPktFilterCfgSize,
25801 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025802 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25803 {
25804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 "Unable to get send buffer in "
25806 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25807 pEventData, pwdiSetRcvPktFilterReqInfo,
25808 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025809 WDI_ASSERT(0);
25810 wpalMemoryFree(pRcvPktFilterCfg);
25811 return WDI_STATUS_E_FAILURE;
25812 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025813
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 usSendSize,usRcvPktFilterCfgSize);
25817
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025818 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25819 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25820 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25821 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025822
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025824 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025825 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025827 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025829
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025830 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25831 {
25832 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25833 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25834 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25835 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25836 pRcvPktFilterCfg->paramsData[i].dataOffset =
25837 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25838 pRcvPktFilterCfg->paramsData[i].dataLength =
25839 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025840
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025841 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25843 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025844 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25846 8);
25847
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025849 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025850 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025851 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25854 "Data Offset %d Data Len %d\n",
25855 pRcvPktFilterCfg->paramsData[i].dataOffset,
25856 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025857
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25859 "CData: %d:%d:%d:%d:%d:%d\n",
25860 pRcvPktFilterCfg->paramsData[i].compareData[0],
25861 pRcvPktFilterCfg->paramsData[i].compareData[1],
25862 pRcvPktFilterCfg->paramsData[i].compareData[2],
25863 pRcvPktFilterCfg->paramsData[i].compareData[3],
25864 pRcvPktFilterCfg->paramsData[i].compareData[4],
25865 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025866
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25868 "MData: %d:%d:%d:%d:%d:%d\n",
25869 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25870 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25871 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25872 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25873 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25874 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25875 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025877 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 pRcvPktFilterCfg,
25879 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025880
25881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025882 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25883 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025884
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025886 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025887 wpalMemoryFree(pRcvPktFilterCfg);
25888 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025894 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025895}
25896
25897/**
25898 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025899
25900 @param pWDICtx: pointer to the WLAN DAL context
25901 pEventData: pointer to the event information structure
25902
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 @see
25904 @return Result of the function call
25905*/
25906WDI_Status
25907WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025908(
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 WDI_ControlBlockType* pWDICtx,
25910 WDI_EventInfoType* pEventData
25911)
25912{
25913 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25914 NULL;
25915 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25916 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025917 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025918 wpt_uint16 usDataOffset = 0;
25919 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025920 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25921 wpt_uint8 ucCurrentBSSSesIdx = 0;
25922 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025923
25924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025925 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025926
25927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 -------------------------------------------------------------------------*/
25930 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025931 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25935 {
25936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 }
25941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025942 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25943 pwdiRcvFltPktMatchCntReqParamsType->bssId,
25944 &pBSSSes);
25945 if ( NULL == pBSSSes )
25946 {
25947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025948 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025949 return WDI_STATUS_E_FAILURE;
25950 }
25951
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 /*-----------------------------------------------------------------------
25953 Get message buffer
25954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25956 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025957 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025959 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070025960 {
25961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25962 "Unable to get send buffer in "
25963 "WDI_ProcessFilterMatchCountReq() %x %x %x",
25964 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
25965 wdiFilterMatchCountCb);
25966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 }
25969
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025970 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
25971 wpalMemoryCopy( pSendBuffer+usDataOffset,
25972 &rcvFltPktMatchCntReqParam,
25973 sizeof(rcvFltPktMatchCntReqParam));
25974
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 //
25976 // Don't need to fill send buffer other than header
25977 //
25978 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025979 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025980
25981
25982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025983 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025984 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25986 wdiFilterMatchCountCb,
25987 pEventData->pUserData,
25988 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025989}
25990
25991/**
25992 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025993
25994 @param pWDICtx: pointer to the WLAN DAL context
25995 pEventData: pointer to the event information structure
25996
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 @see
25998 @return Result of the function call
25999*/
26000WDI_Status
26001WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026002(
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 WDI_ControlBlockType* pWDICtx,
26004 WDI_EventInfoType* pEventData
26005)
Jeff Johnsone7245742012-09-05 17:12:55 -070026006{
Jeff Johnson295189b2012-06-20 16:38:30 -070026007 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26008 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026009 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026010 wpt_uint16 usDataOffset = 0;
26011 wpt_uint16 usSendSize = 0;
26012 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026013 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026015
26016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026017 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026018
26019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 -------------------------------------------------------------------------*/
26022 if (( NULL == pEventData ) ||
26023 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26024 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26027 {
26028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026031 return WDI_STATUS_E_FAILURE;
26032 }
26033
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026034 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026035 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26036 &pBSSSes);
26037 if ( NULL == pBSSSes )
26038 {
26039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026040 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026042 }
26043
26044 /*-----------------------------------------------------------------------
26045 Get message buffer
26046 -----------------------------------------------------------------------*/
26047 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026048 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 sizeof(tHalRcvFltPktClearParam),
26050 &pSendBuffer, &usDataOffset, &usSendSize))||
26051 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26052 {
26053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26054 "Unable to get send buffer in "
26055 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26056 pEventData, pwdiRcvFltPktClearReqParamsType,
26057 wdiRcvFltPktClearFilterCb);
26058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 }
26061
26062
26063 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026064 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026066 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026067
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26069 wpalMemoryCopy( pSendBuffer+usDataOffset,
26070 &rcvFltPktClearParam,
26071 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026072
26073 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026074 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026075
26076
26077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026078 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026081 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026082 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026083}
26084
26085/**
26086 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026087
26088 @param pWDICtx: pointer to the WLAN DAL context
26089 pEventData: pointer to the event information structure
26090
Jeff Johnson295189b2012-06-20 16:38:30 -070026091 @see
26092 @return Result of the function call
26093*/
26094WDI_Status
26095WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026096(
Jeff Johnson295189b2012-06-20 16:38:30 -070026097 WDI_ControlBlockType* pWDICtx,
26098 WDI_EventInfoType* pEventData
26099)
26100{
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 eHalStatus halStatus;
26102 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026103 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26104 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26106
26107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026108 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109
26110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 -------------------------------------------------------------------------*/
26113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26114 ( NULL == pEventData->pEventData ))
26115 {
26116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026120 }
26121
Jeff Johnsone7245742012-09-05 17:12:55 -070026122 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026123
26124 /*-------------------------------------------------------------------------
26125 Extract response and send it to UMAC
26126 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026127 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26128 {
26129 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26130 pEventData->pEventData,
26131 sizeof(halRcvFltPktSetMcListRsp));
26132
26133 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26134 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26135 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26136 halRcvFltPktSetMcListRsp.bssIdx;
26137 }
26138 else
26139 {
26140 halStatus = *((eHalStatus*)pEventData->pEventData);
26141 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026143
26144 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026145 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026146
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026148}
26149
26150/**
26151 @brief Process Set Rsp function (called when a
26152 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026153
26154 @param pWDICtx: pointer to the WLAN DAL context
26155 pEventData: pointer to the event information structure
26156
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 @see
26158 @return Result of the function call
26159*/
26160WDI_Status
26161WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026162(
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 WDI_ControlBlockType* pWDICtx,
26164 WDI_EventInfoType* pEventData
26165)
26166{
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 eHalStatus halStatus;
26168 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026169 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26170 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26172
26173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026174 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026175
26176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 -------------------------------------------------------------------------*/
26179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26180 ( NULL == pEventData->pEventData ))
26181 {
26182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 }
26187
26188 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026190
26191 /*-------------------------------------------------------------------------
26192 Extract response and send it to UMAC
26193 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026194 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26195 {
26196 wpalMemoryCopy( &halSetPktFilterRspParams,
26197 pEventData->pEventData,
26198 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026200 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26201 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26202 }
26203 else
26204 {
26205 halStatus = *((eHalStatus*)pEventData->pEventData);
26206 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26207 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026208 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026209 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026210
Jeff Johnsone7245742012-09-05 17:12:55 -070026211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026212}
26213
26214/**
26215 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026216
26217 @param pWDICtx: pointer to the WLAN DAL context
26218 pEventData: pointer to the event information structure
26219
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 @see
26221 @return Result of the function call
26222*/
26223WDI_Status
26224WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026225(
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 WDI_ControlBlockType* pWDICtx,
26227 WDI_EventInfoType* pEventData
26228)
26229{
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026232 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26233 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026234
26235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26236
26237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026238 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026239
26240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026242 -------------------------------------------------------------------------*/
26243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26244 ( NULL == pEventData->pEventData ))
26245 {
26246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 }
26251
Jeff Johnsone7245742012-09-05 17:12:55 -070026252 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026253
26254 /*-------------------------------------------------------------------------
26255 Extract response and send it to UMAC
26256 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026257 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26258 {
26259 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26260 pEventData->pEventData,
26261 sizeof(halRcvFltrPktMatachRsp));
26262
26263 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26264 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26265 }
26266 else
26267 {
26268 halStatus = *((eHalStatus*)pEventData->pEventData);
26269 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26270 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026271
26272 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026273 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026274
Jeff Johnsone7245742012-09-05 17:12:55 -070026275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026276}
26277
26278/**
26279 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026280
26281 @param pWDICtx: pointer to the WLAN DAL context
26282 pEventData: pointer to the event information structure
26283
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 @see
26285 @return Result of the function call
26286*/
26287WDI_Status
26288WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026289(
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 WDI_ControlBlockType* pWDICtx,
26291 WDI_EventInfoType* pEventData
26292)
26293{
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 eHalStatus halStatus;
26295 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026296 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26297 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26299
26300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026301 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026302
26303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026305 -------------------------------------------------------------------------*/
26306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26307 ( NULL == pEventData->pEventData ))
26308 {
26309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 }
26314
26315 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026316 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026317
26318 /*-------------------------------------------------------------------------
26319 Extract response and send it to UMAC
26320 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026321 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26322 {
26323 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26324 pEventData->pEventData,
26325 sizeof(halRcvFltPktClearRspMsg));
26326
26327 wdiRcvFltPktClearRspParamsType.wdiStatus =
26328 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26329 wdiRcvFltPktClearRspParamsType.bssIdx =
26330 halRcvFltPktClearRspMsg.bssIdx;
26331 }
26332 else
26333 {
26334 halStatus = *((eHalStatus*)pEventData->pEventData);
26335 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26336 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026337
26338 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026339 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026340
Jeff Johnsone7245742012-09-05 17:12:55 -070026341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026342}
26343#endif // WLAN_FEATURE_PACKET_FILTERING
26344
26345/**
26346 @brief Process Shutdown Rsp function
26347 There is no shutdown response comming from HAL
26348 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026349
Jeff Johnson295189b2012-06-20 16:38:30 -070026350 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026351 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026352
26353 @see
26354 @return Result of the function call
26355*/
26356WDI_Status
26357WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026358(
Jeff Johnson295189b2012-06-20 16:38:30 -070026359 WDI_ControlBlockType* pWDICtx,
26360 WDI_EventInfoType* pEventData
26361)
26362{
26363 /*There is no shutdown response comming from HAL - function just kept for
26364 simmetry */
26365 WDI_ASSERT(0);
26366 return WDI_STATUS_SUCCESS;
26367}/*WDI_ProcessShutdownRsp*/
26368
26369/**
26370 @brief WDI_SetPowerParamsReq
26371
Jeff Johnsone7245742012-09-05 17:12:55 -070026372 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026373 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026374
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 wdiPowerParamsCb: callback for passing back the response
26376 of the Set Power Params operation received from the
26377 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026378
Jeff Johnson295189b2012-06-20 16:38:30 -070026379 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026380 callback
26381
Jeff Johnson295189b2012-06-20 16:38:30 -070026382 @return Result of the function call
26383*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026385WDI_SetPowerParamsReq
26386(
26387 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26388 WDI_SetPowerParamsCb wdiPowerParamsCb,
26389 void* pUserData
26390)
26391{
26392 WDI_EventInfoType wdiEventData;
26393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26394
26395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026397 ------------------------------------------------------------------------*/
26398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26399 {
26400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26401 "WDI API call before module is initialized - Fail request");
26402
Jeff Johnsone7245742012-09-05 17:12:55 -070026403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 }
26405
26406 /*------------------------------------------------------------------------
26407 Fill in Event data and post to the Main FSM
26408 ------------------------------------------------------------------------*/
26409 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026410 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026411 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 wdiEventData.pUserData = pUserData;
26414
26415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26416}/*WDI_SetPowerParamsReq*/
26417
26418/**
26419 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026420
26421 @param pWDICtx: pointer to the WLAN DAL context
26422 pEventData: pointer to the event information structure
26423
Jeff Johnson295189b2012-06-20 16:38:30 -070026424 @see
26425 @return Result of the function call
26426*/
26427WDI_Status
26428WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026429(
Jeff Johnson295189b2012-06-20 16:38:30 -070026430 WDI_ControlBlockType* pWDICtx,
26431 WDI_EventInfoType* pEventData
26432)
26433{
26434 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26435 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026437 wpt_uint16 usDataOffset = 0;
26438 wpt_uint16 usSendSize = 0;
26439 tSetPowerParamsType powerParams;
26440
26441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026443 -------------------------------------------------------------------------*/
26444 if (( NULL == pEventData ) ||
26445 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26446 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26447 {
26448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026452 }
26453
26454 /*-----------------------------------------------------------------------
26455 Get message buffer
26456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 sizeof(powerParams),
26459 &pSendBuffer, &usDataOffset, &usSendSize))||
26460 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26461 {
26462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26463 "Unable to get send buffer in Set PNO req %x %x %x",
26464 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026467 }
26468
26469 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026470 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26472
26473 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026474 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026475 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26476
26477 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26480
26481 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026482 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026483 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26484
26485 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026486 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26488
26489 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026490 powerParams.uBETInterval =
26491 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026492
Yue Ma0da19492013-05-13 17:01:29 -070026493 /* MAX LI for modulated DTIM */
26494 powerParams.uMaxLIModulatedDTIM =
26495 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026496
26497 wpalMemoryCopy( pSendBuffer+usDataOffset,
26498 &powerParams,
26499 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026500
26501 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026502 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026503
26504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026505 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26508 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026509}
26510
26511/**
26512 @brief Process Power Params Rsp function (called when a
26513 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026514
26515 @param pWDICtx: pointer to the WLAN DAL context
26516 pEventData: pointer to the event information structure
26517
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 @see
26519 @return Result of the function call
26520*/
26521WDI_Status
26522WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026523(
Jeff Johnson295189b2012-06-20 16:38:30 -070026524 WDI_ControlBlockType* pWDICtx,
26525 WDI_EventInfoType* pEventData
26526)
26527{
26528 WDI_Status wdiStatus;
26529 eHalStatus halStatus;
26530 WDI_SetPowerParamsCb wdiPowerParamsCb;
26531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26532
26533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 -------------------------------------------------------------------------*/
26536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26537 ( NULL == pEventData->pEventData ))
26538 {
26539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026543 }
26544
Jeff Johnsone7245742012-09-05 17:12:55 -070026545 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026546
26547 /*-------------------------------------------------------------------------
26548 Extract response and send it to UMAC
26549 -------------------------------------------------------------------------*/
26550 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026551 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026552
26553 /*Notify UMAC*/
26554 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26555
Jeff Johnsone7245742012-09-05 17:12:55 -070026556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026557}/*WDI_ProcessSetPowerParamsRsp*/
26558
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026559/**
26560 @brief WDI_dhcpStartInd
26561 Host will send an event to the FW when DHCP is initiated
26562
26563 @param
26564 WDI_DHCPInd: DHCP Indication
26565 @see
26566 @return Result of the function call
26567*/
26568WDI_Status
26569WDI_dhcpStartInd
26570(
26571 WDI_DHCPInd *wdiDHCPInd
26572)
26573{
26574 WDI_EventInfoType wdiEventData;
26575
26576 /*------------------------------------------------------------------------
26577 Sanity Check
26578 ------------------------------------------------------------------------*/
26579 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26580 {
26581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26582 "WDI API call before module is initialized - Fail request");
26583
26584 return WDI_STATUS_E_NOT_ALLOWED;
26585 }
26586
26587 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26588 wdiEventData.pEventData = wdiDHCPInd;
26589 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26590 wdiEventData.pCBfnc = NULL;
26591 wdiEventData.pUserData = NULL;
26592
26593 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26594}
26595
26596
26597/**
26598 @brief WDI_dhcpStopInd
26599 Host will send an event to the FW when DHCP is completed
26600
26601 @param
26602 WDI_DHCPInd: DHCP Indication
26603 @see
26604 @return Result of the function call
26605*/
26606WDI_Status
26607WDI_dhcpStopInd
26608(
26609 WDI_DHCPInd *wdiDHCPInd
26610)
26611{
26612 WDI_EventInfoType wdiEventData;
26613
26614 /*------------------------------------------------------------------------
26615 Sanity Check
26616 ------------------------------------------------------------------------*/
26617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26618 {
26619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26620 "WDI API call before module is initialized - Fail request");
26621
26622 return WDI_STATUS_E_NOT_ALLOWED;
26623 }
26624
26625 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26626 wdiEventData.pEventData = wdiDHCPInd;
26627 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26628 wdiEventData.pCBfnc = NULL;
26629 wdiEventData.pUserData = NULL;
26630
26631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26632}
26633
26634
26635/**
26636 @brief Process DHCP Start Indication message and post it to HAL
26637
26638 @param pWDICtx: pointer to the WLAN DAL context
26639 pEventData: pointer to the event information structure
26640
26641 @see
26642 @return Result of the function call
26643*/
26644WDI_Status
26645WDI_ProcessDHCPStartInd
26646(
26647 WDI_ControlBlockType* pWDICtx,
26648 WDI_EventInfoType* pEventData
26649)
26650{
26651 wpt_uint8* pSendBuffer = NULL;
26652 wpt_uint16 usDataOffset = 0;
26653 wpt_uint16 usSendSize = 0;
26654 wpt_uint16 usLen = 0;
26655 WDI_DHCPInd* pwdiDHCPInd = NULL;
26656 tDHCPInfo* pDHCPInfo;
26657
26658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26659
26660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26661 "%s", __func__);
26662
26663 /*-------------------------------------------------------------------------
26664 Sanity check
26665 -------------------------------------------------------------------------*/
26666 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26667 {
26668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26669 "%s: Invalid parameters", __func__);
26670 WDI_ASSERT(0);
26671 return WDI_STATUS_E_FAILURE;
26672 }
26673 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26674 /*-----------------------------------------------------------------------
26675 Get message buffer
26676 -----------------------------------------------------------------------*/
26677
26678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26679 WDI_DHCP_START_IND,
26680 sizeof(tDHCPInfo),
26681 &pSendBuffer, &usDataOffset, &usSendSize))||
26682 ( usSendSize < (usDataOffset + usLen )))
26683 {
26684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26685 "Unable to get send buffer in DHCP Start req %p ",
26686 pEventData);
26687 WDI_ASSERT(0);
26688 return WDI_STATUS_E_FAILURE;
26689 }
26690
26691 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26692 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26693 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26694 WDI_MAC_ADDR_LEN);
26695
26696 pWDICtx->pReqStatusUserData = NULL;
26697 pWDICtx->pfncRspCB = NULL;
26698
26699 /*-------------------------------------------------------------------------
26700 Send DHCP Start Indication to HAL
26701 -------------------------------------------------------------------------*/
26702 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26703
26704}/*WDI_ProcessDHCPStartInd*/
26705
26706/**
26707 @brief Process DHCP Stop indication message and post it to HAL
26708
26709 @param pWDICtx: pointer to the WLAN DAL context
26710 pEventData: pointer to the event information structure
26711
26712 @see
26713 @return Result of the function call
26714*/
26715WDI_Status
26716WDI_ProcessDHCPStopInd
26717(
26718 WDI_ControlBlockType* pWDICtx,
26719 WDI_EventInfoType* pEventData
26720)
26721{
26722 wpt_uint8* pSendBuffer = NULL;
26723 wpt_uint16 usDataOffset = 0;
26724 wpt_uint16 usSendSize = 0;
26725 wpt_uint16 usLen = 0;
26726 WDI_DHCPInd* pwdiDHCPInd = NULL;
26727 tDHCPInfo* pDHCPInfo;
26728
26729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26730
26731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26732 "%s", __func__);
26733
26734 /*-------------------------------------------------------------------------
26735 Sanity check
26736 -------------------------------------------------------------------------*/
26737
26738 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26739 {
26740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26741 "%s: Invalid parameters", __func__);
26742 WDI_ASSERT(0);
26743 return WDI_STATUS_E_FAILURE;
26744 }
26745 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26746 /*-----------------------------------------------------------------------
26747 Get message buffer
26748 -----------------------------------------------------------------------*/
26749
26750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26751 WDI_DHCP_STOP_IND,
26752 sizeof(tDHCPInfo),
26753 &pSendBuffer, &usDataOffset, &usSendSize))||
26754 ( usSendSize < (usDataOffset + usLen )))
26755 {
26756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26757 "Unable to get send buffer in DHCP Start req %p ",
26758 pEventData);
26759 WDI_ASSERT(0);
26760 return WDI_STATUS_E_FAILURE;
26761 }
26762
26763 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26764 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26765 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26766 WDI_MAC_ADDR_LEN);
26767
26768 pWDICtx->pReqStatusUserData = NULL;
26769 pWDICtx->pfncRspCB = NULL;
26770 /*-------------------------------------------------------------------------
26771 Send DHCP Stop indication to HAL
26772 -------------------------------------------------------------------------*/
26773 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26774
26775}/*WDI_ProcessDHCPStopInd*/
26776
26777
Jeff Johnson295189b2012-06-20 16:38:30 -070026778#ifdef WLAN_FEATURE_GTK_OFFLOAD
26779/**
26780 @brief WDI_GTKOffloadReq will be called when the upper MAC
26781 wants to set GTK Rekey Counter while in power save. Upon
26782 the call of this API the WLAN DAL will pack and send a
26783 HAL GTK offload request message to the lower RIVA
26784 sub-system if DAL is in state STARTED.
26785
26786 In state BUSY this request will be queued. Request won't
26787 be allowed in any other state.
26788
26789 WDI_PostAssocReq must have been called.
26790
26791 @param pwdiGtkOffloadParams: the GTK offload as specified
26792 by the Device Interface
26793
26794 wdiGtkOffloadCb: callback for passing back the response
26795 of the GTK offload operation received from the device
26796
26797 pUserData: user data will be passed back with the
26798 callback
26799
26800 @see WDI_PostAssocReq
26801 @return Result of the function call
26802*/
26803WDI_Status
26804WDI_GTKOffloadReq
26805(
26806 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26807 WDI_GtkOffloadCb wdiGtkOffloadCb,
26808 void* pUserData
26809)
26810{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026811 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26813
26814 /*------------------------------------------------------------------------
26815 Sanity Check
26816 ------------------------------------------------------------------------*/
26817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26818 {
26819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26820 "WDI API call before module is initialized - Fail request");
26821
26822 return WDI_STATUS_E_NOT_ALLOWED;
26823 }
26824
26825 /*------------------------------------------------------------------------
26826 Fill in Event data and post to the Main FSM
26827 ------------------------------------------------------------------------*/
26828 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26829 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026830 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026831 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26832 wdiEventData.pUserData = pUserData;
26833
26834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26835}
26836
26837
26838/**
26839 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26840 MAC wants to get GTK Rekey Counter while in power save.
26841 Upon the call of this API the WLAN DAL will pack and
26842 send a HAL GTK offload request message to the lower RIVA
26843 sub-system if DAL is in state STARTED.
26844
26845 In state BUSY this request will be queued. Request won't
26846 be allowed in any other state.
26847
26848 WDI_PostAssocReq must have been called.
26849
26850 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26851 Information Message as specified by the
26852 Device Interface
26853
26854 wdiGtkOffloadGetInfoCb: callback for passing back the
26855 response of the GTK offload operation received from the
26856 device
26857
26858 pUserData: user data will be passed back with the
26859 callback
26860
26861 @see WDI_PostAssocReq
26862 @return Result of the function call
26863*/
26864WDI_Status
26865WDI_GTKOffloadGetInfoReq
26866(
26867 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26868 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26869 void* pUserData
26870)
26871{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026872 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26874
26875 /*------------------------------------------------------------------------
26876 Sanity Check
26877 ------------------------------------------------------------------------*/
26878 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26879 {
26880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26881 "WDI API call before module is initialized - Fail request");
26882
26883 return WDI_STATUS_E_NOT_ALLOWED;
26884 }
26885
26886 /*------------------------------------------------------------------------
26887 Fill in Event data and post to the Main FSM
26888 ------------------------------------------------------------------------*/
26889 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26890 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26891 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26892 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26893 wdiEventData.pUserData = pUserData;
26894
26895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26896}
26897
26898
26899/**
26900 @brief Process set GTK Offload Request function
26901
26902 @param pWDICtx: pointer to the WLAN DAL context
26903 pEventData: pointer to the event information structure
26904
26905 @see
26906 @return Result of the function call
26907*/
26908WDI_Status
26909WDI_ProcessGTKOffloadReq
26910(
26911 WDI_ControlBlockType* pWDICtx,
26912 WDI_EventInfoType* pEventData
26913)
26914{
26915 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26916 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26917 wpt_uint8* pSendBuffer = NULL;
26918 wpt_uint16 usDataOffset = 0;
26919 wpt_uint16 usSendSize = 0;
26920 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026921 wpt_uint8 ucCurrentSessionId = 0;
26922 WDI_BSSSessionType* pBSSSes = NULL;
26923
Jeff Johnson295189b2012-06-20 16:38:30 -070026924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26925
26926 /*-------------------------------------------------------------------------
26927 Sanity check
26928 -------------------------------------------------------------------------*/
26929 if (( NULL == pEventData ) ||
26930 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26931 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26932 {
26933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026935 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026936 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026937 }
26938
26939 /*-----------------------------------------------------------------------
26940 Get message buffer
26941 -----------------------------------------------------------------------*/
26942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
26943 sizeof(gtkOffloadReqParams),
26944 &pSendBuffer, &usDataOffset, &usSendSize))||
26945 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
26946 {
26947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26948 "Unable to get send buffer in GTK offload req %x %x %x",
26949 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
26950 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026951 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026952 }
26953
26954 //
26955 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
26956 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026957 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
26958 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
26959 &pBSSSes);
26960 if ( NULL == pBSSSes )
26961 {
26962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026963 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026964 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026965 }
26966
26967 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
26968
Jeff Johnson295189b2012-06-20 16:38:30 -070026969 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
26970 // Copy KCK
26971 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
26972 // Copy KEK
26973 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
26974 // Copy KeyReplayCounter
26975 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
26976
26977 wpalMemoryCopy( pSendBuffer+usDataOffset,
26978 &gtkOffloadReqParams,
26979 sizeof(gtkOffloadReqParams));
26980
26981 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
26982 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
26983
26984 /*-------------------------------------------------------------------------
26985 Send Get STA Request to HAL
26986 -------------------------------------------------------------------------*/
26987 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26988 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026989
26990fail:
26991 // Release the message buffer so we don't leak
26992 wpalMemoryFree(pSendBuffer);
26993
26994failRequest:
26995 //WDA should have failure check to avoid the memory leak
26996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026997}
26998
26999
27000/**
27001 @brief Process GTK Offload Get Information Request function
27002
27003 @param pWDICtx: pointer to the WLAN DAL context
27004 pEventData: pointer to the event information structure
27005
27006 @see
27007 @return Result of the function call
27008*/
27009WDI_Status
27010WDI_ProcessGTKOffloadGetInfoReq
27011(
27012 WDI_ControlBlockType* pWDICtx,
27013 WDI_EventInfoType* pEventData
27014)
27015{
27016 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27017 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27018 wpt_uint8* pSendBuffer = NULL;
27019 wpt_uint16 usDataOffset = 0;
27020 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027021 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27022 wpt_uint8 ucCurrentSessionId = 0;
27023 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027024
27025 /*-------------------------------------------------------------------------
27026 Sanity check
27027 -------------------------------------------------------------------------*/
27028 if (( NULL == pEventData ) ||
27029 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27030 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27031 {
27032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027034 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027035 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027036 }
27037
27038 /*-----------------------------------------------------------------------
27039 Get message buffer
27040 -----------------------------------------------------------------------*/
27041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027042 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027043 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027044 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027045 {
27046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27047 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27048 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27049 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027050 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027051 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027052 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27053 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27054 &pBSSSes);
27055 if ( NULL == pBSSSes )
27056 {
27057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027058 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027059 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027060 }
27061 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027062
27063 //
27064 // Don't need to fill send buffer other than header
27065 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027066 wpalMemoryCopy( pSendBuffer+usDataOffset,
27067 &halGtkOffloadGetInfoReqParams,
27068 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027069
27070 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27071 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27072
27073 /*-------------------------------------------------------------------------
27074 Send Get STA Request to HAL
27075 -------------------------------------------------------------------------*/
27076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27077 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027078fail:
27079 // Release the message buffer so we don't leak
27080 wpalMemoryFree(pSendBuffer);
27081
27082failRequest:
27083 //WDA should have failure check to avoid the memory leak
27084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027085}
27086
27087/**
27088 @brief Process host offload Rsp function (called when a
27089 response is being received over the bus from HAL)
27090
27091 @param pWDICtx: pointer to the WLAN DAL context
27092 pEventData: pointer to the event information structure
27093
27094 @see
27095 @return Result of the function call
27096*/
27097WDI_Status
27098WDI_ProcessGtkOffloadRsp
27099(
27100 WDI_ControlBlockType* pWDICtx,
27101 WDI_EventInfoType* pEventData
27102)
27103{
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 eHalStatus halStatus;
27105 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027106 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27107 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27109
27110 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27111
27112 /*-------------------------------------------------------------------------
27113 Sanity check
27114 -------------------------------------------------------------------------*/
27115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27116 ( NULL == pEventData->pEventData))
27117 {
27118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027120 WDI_ASSERT(0);
27121 return WDI_STATUS_E_FAILURE;
27122 }
27123
27124 /*-------------------------------------------------------------------------
27125 Extract response and send it to UMAC
27126 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027127 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27128 {
27129 wpalMemoryCopy( &halGtkOffloadRspParams,
27130 pEventData->pEventData,
27131 sizeof(halGtkOffloadRspParams));
27132
27133 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027134 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027135 wdiGtkOffloadRsparams.bssIdx =
27136 halGtkOffloadRspParams.bssIdx;
27137 }
27138 else
27139 {
27140 halStatus = *((eHalStatus*)pEventData->pEventData);
27141 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027143
27144 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027145 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027146
27147 return WDI_STATUS_SUCCESS;
27148}
27149
27150/**
27151 @brief Process GTK Offload Get Information Response function
27152
27153 @param pWDICtx: pointer to the WLAN DAL context
27154 pEventData: pointer to the event information structure
27155
27156 @see
27157 @return Result of the function call
27158*/
27159WDI_Status
27160WDI_ProcessGTKOffloadGetInfoRsp
27161(
27162 WDI_ControlBlockType* pWDICtx,
27163 WDI_EventInfoType* pEventData
27164)
27165{
Jeff Johnson295189b2012-06-20 16:38:30 -070027166 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027168 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27169 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027170 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027171
27172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27173
27174 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27175
27176 /*-------------------------------------------------------------------------
27177 Sanity check
27178 -------------------------------------------------------------------------*/
27179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27180 ( NULL == pEventData->pEventData ))
27181 {
27182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027184 WDI_ASSERT(0);
27185 return WDI_STATUS_E_FAILURE;
27186 }
27187
27188 /*-------------------------------------------------------------------------
27189 Extract response and send it to UMAC
27190 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027191 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27192 {
27193 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27194 pEventData->pEventData,
27195 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027196
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027197 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027198 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027199 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27200 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27201 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27202 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27203 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27204 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27205 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27206 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027207
27208 wpalMutexAcquire(&pWDICtx->wptMutex);
27209 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27210 &pBSSSes);
27211
27212 if ( NULL == pBSSSes )
27213 {
27214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27215 "Association sequence for this BSS does not exist or "
27216 "association no longer in progress - mysterious HAL response");
27217 wpalMutexRelease(&pWDICtx->wptMutex);
27218 return WDI_STATUS_E_NOT_ALLOWED;
27219 }
27220
27221 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27222 sizeof (wpt_macAddr));
27223 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027224 }
27225 else
27226 {
27227 halStatus = *((eHalStatus*)pEventData->pEventData);
27228 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27229 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 /*Notify UMAC*/
27231 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27232 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027233 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027234
27235 return WDI_STATUS_SUCCESS;
27236}
27237#endif // WLAN_FEATURE_GTK_OFFLOAD
27238
27239#ifdef WLAN_WAKEUP_EVENTS
27240WDI_Status
27241WDI_ProcessWakeReasonInd
27242(
27243 WDI_ControlBlockType* pWDICtx,
27244 WDI_EventInfoType* pEventData
27245)
27246{
27247 WDI_LowLevelIndType *pWdiInd;
27248 tpWakeReasonParams pWakeReasonParams;
27249 wpt_uint32 allocSize = 0;
27250
27251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027252 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027253
27254 /*-------------------------------------------------------------------------
27255 Sanity check
27256 -------------------------------------------------------------------------*/
27257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27258 ( NULL == pEventData->pEventData ))
27259 {
27260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027262 WDI_ASSERT( 0 );
27263 return WDI_STATUS_E_FAILURE;
27264 }
27265
27266 /*-------------------------------------------------------------------------
27267 Extract indication and send it to UMAC
27268 -------------------------------------------------------------------------*/
27269 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27270
27271 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27272
27273 //Allocate memory for WDI_WakeReasonIndType structure
27274 pWdiInd = wpalMemoryAllocate(allocSize) ;
27275
27276 if(NULL == pWdiInd)
27277 {
27278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27279 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027280 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027281 WDI_ASSERT(0);
27282 return WDI_STATUS_E_FAILURE;
27283 }
27284
27285 wpalMemoryZero(pWdiInd, allocSize);
27286
27287 /* Fill in the indication parameters*/
27288 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27289 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27290 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27291 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27292 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27293 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27294 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27295 &(pWakeReasonParams->aDataStart[0]),
27296 pWakeReasonParams->ulStoredDataLen);
27297
ltimariu034f7d62013-01-24 18:54:33 -080027298
27299 if ( pWDICtx->wdiLowLevelIndCB )
27300 {
27301 /*Notify UMAC*/
27302 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27303 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027304
27305 //Free memory allocated for WDI_WakeReasonIndType structure
27306 wpalMemoryFree(pWdiInd);
27307
27308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027309 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027310
27311 return WDI_STATUS_SUCCESS;
27312}
27313#endif // WLAN_WAKEUP_EVENTS
27314
27315void WDI_GetWcnssCompiledApiVersion
27316(
27317 WDI_WlanVersionType *pWcnssApiVersion
27318)
27319{
27320 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27321 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27322 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27323 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27324}
27325
27326/**
27327 @brief Process Set TM Level Rsp function (called when a
27328 response is being received over the bus from HAL)
27329
27330 @param pWDICtx: pointer to the WLAN DAL context
27331 pEventData: pointer to the event information structure
27332
27333 @see
27334 @return Result of the function call
27335*/
27336WDI_Status
27337WDI_ProcessSetTmLevelRsp
27338(
27339 WDI_ControlBlockType* pWDICtx,
27340 WDI_EventInfoType* pEventData
27341)
27342{
27343 WDI_Status wdiStatus;
27344 eHalStatus halStatus;
27345 WDI_SetTmLevelCb wdiSetTmLevelCb;
27346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27347
27348 /*-------------------------------------------------------------------------
27349 Sanity check
27350 -------------------------------------------------------------------------*/
27351 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27352 ( NULL == pEventData->pEventData ))
27353 {
27354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027356 WDI_ASSERT(0);
27357 return WDI_STATUS_E_FAILURE;
27358 }
27359
27360 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27361
27362 /*-------------------------------------------------------------------------
27363 Extract response and send it to UMAC
27364 -------------------------------------------------------------------------*/
27365 halStatus = *((eHalStatus*)pEventData->pEventData);
27366 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27367
27368 /*Notify UMAC*/
27369 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27370
27371 return WDI_STATUS_SUCCESS;
27372}/*WDI_ProcessSetTmLevelRsp*/
27373
27374/**
27375 @brief Process Set Thermal Mitigation level Changed request
27376
27377 @param pWDICtx: pointer to the WLAN DAL context
27378 pEventData: pointer to the event information structure
27379
27380 @see
27381 @return Result of the function call
27382*/
27383WDI_Status
27384WDI_ProcessSetTmLevelReq
27385(
27386 WDI_ControlBlockType* pWDICtx,
27387 WDI_EventInfoType* pEventData
27388)
27389{
27390 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27391 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27392 wpt_uint8* pSendBuffer = NULL;
27393 wpt_uint16 usDataOffset = 0;
27394 wpt_uint16 usSendSize = 0;
27395 tSetThermalMitgationType halTmMsg;
27396
27397 /*-------------------------------------------------------------------------
27398 Sanity check
27399 -------------------------------------------------------------------------*/
27400 if (( NULL == pEventData ) ||
27401 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27402 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27403 {
27404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027406 WDI_ASSERT(0);
27407 return WDI_STATUS_E_FAILURE;
27408 }
27409
27410 /*-----------------------------------------------------------------------
27411 Get message buffer
27412 -----------------------------------------------------------------------*/
27413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27414 sizeof(halTmMsg),
27415 &pSendBuffer, &usDataOffset, &usSendSize))||
27416 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27417 {
27418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27419 "Unable to get send buffer in Set PNO req %x %x %x",
27420 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27421 WDI_ASSERT(0);
27422 return WDI_STATUS_E_FAILURE;
27423 }
27424
27425 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27426 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27427
27428 wpalMemoryCopy( pSendBuffer+usDataOffset,
27429 &halTmMsg,
27430 sizeof(halTmMsg));
27431
27432 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27433 pWDICtx->pfncRspCB = NULL;
27434 /*-------------------------------------------------------------------------
27435 Send Get STA Request to HAL
27436 -------------------------------------------------------------------------*/
27437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27438 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27439}
27440
27441/* Fill the value from the global features enabled array to the global capabilities
27442 * bitmap struct
27443 */
27444static void
27445FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27446{
27447 wpt_int8 i;
27448 for (i=0; i<len; i++)
27449 {
27450 setFeatCaps(fCaps, enabledFeat[i]);
27451 }
27452}
27453
27454/**
27455 @brief WDI_featureCapsExchangeReq
27456 Post feature capability bitmap exchange event.
27457 Host will send its own capability to FW in this req and
27458 expect FW to send its capability back as a bitmap in Response
27459
27460 @param
27461
27462 wdiFeatureCapsExchangeCb: callback called on getting the response.
27463 It is kept to mantain similarity between WDI reqs and if needed, can
27464 be used in future. Currently, It is set to NULL
27465
27466 pUserData: user data will be passed back with the
27467 callback
27468
27469 @see
27470 @return Result of the function call
27471*/
27472WDI_Status
27473WDI_featureCapsExchangeReq
27474(
27475 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27476 void* pUserData
27477)
27478{
27479 WDI_EventInfoType wdiEventData;
27480 wpt_int32 fCapsStructSize;
27481
27482 /*------------------------------------------------------------------------
27483 Sanity Check
27484 ------------------------------------------------------------------------*/
27485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27486 {
27487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27488 "WDI API call before module is initialized - Fail request");
27489
27490 return WDI_STATUS_E_NOT_ALLOWED;
27491 }
27492
27493 /* Allocate memory separately for global variable carrying FW caps */
27494 fCapsStructSize = sizeof(tWlanFeatCaps);
27495 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27496 if ( NULL == gpHostWlanFeatCaps )
27497 {
27498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27499 "Cannot allocate memory for host capability info\n");
27500 WDI_ASSERT(0);
27501 return WDI_STATUS_MEM_FAILURE;
27502 }
27503
27504 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27505
27506 /*------------------------------------------------------------------------
27507 Fill in Event data and post to the Main FSM
27508 ------------------------------------------------------------------------*/
27509 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27510 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027512 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 gpHostWlanFeatCaps->featCaps[0],
27514 gpHostWlanFeatCaps->featCaps[1],
27515 gpHostWlanFeatCaps->featCaps[2],
27516 gpHostWlanFeatCaps->featCaps[3]
27517 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27519 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27521 wdiEventData.pEventData = gpHostWlanFeatCaps;
27522 wdiEventData.uEventDataSize = fCapsStructSize;
27523 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27524 wdiEventData.pUserData = pUserData;
27525
27526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27527}
27528
27529/**
Yathishd8713192012-12-10 14:21:35 -080027530 @brief Disable Active mode offload in Host
27531
27532 @param void
27533 @see
27534 @return void
27535*/
27536void
27537WDI_disableCapablityFeature(wpt_uint8 feature_index)
27538{
27539 supportEnabledFeatures[feature_index] = 0;
27540 return;
27541}
27542
27543/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027544 @brief Process Host-FW Capability Exchange Request function
27545
27546 @param pWDICtx: pointer to the WLAN DAL context
27547 pEventData: pointer to the event information structure
27548
27549 @see
27550 @return Result of the function call
27551*/
27552WDI_Status
27553WDI_ProcessFeatureCapsExchangeReq
27554(
27555 WDI_ControlBlockType* pWDICtx,
27556 WDI_EventInfoType* pEventData
27557)
27558{
27559 wpt_uint8* pSendBuffer = NULL;
27560 wpt_uint16 usDataOffset = 0;
27561 wpt_uint16 usSendSize = 0;
27562 wpt_uint16 usLen = 0;
27563
27564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27565
27566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027567 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027568
27569 /*-------------------------------------------------------------------------
27570 Sanity check
27571 -------------------------------------------------------------------------*/
27572 /* Call back function is NULL since not required for cap exchange req */
27573 if (( NULL == pEventData ) ||
27574 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27575 {
27576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027578 WDI_ASSERT(0);
27579 return WDI_STATUS_E_FAILURE;
27580 }
27581
27582 /*-----------------------------------------------------------------------
27583 Get message buffer
27584 -----------------------------------------------------------------------*/
27585 usLen = sizeof(tWlanFeatCaps);
27586
27587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27588 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27589 usLen,
27590 &pSendBuffer, &usDataOffset, &usSendSize))||
27591 ( usSendSize < (usDataOffset + usLen )))
27592 {
27593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27594 "Unable to get send buffer in feat caps exchange req %x %x",
27595 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27596 WDI_ASSERT(0);
27597 return WDI_STATUS_E_FAILURE;
27598 }
27599
27600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027601 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027602 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27603 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27604 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27605 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27606 );
27607
27608 /* Copy host caps after the offset in the send buffer */
27609 wpalMemoryCopy( pSendBuffer+usDataOffset,
27610 (tWlanFeatCaps *)pEventData->pEventData,
27611 usLen);
27612
27613 /*-------------------------------------------------------------------------
27614 Send Start Request to HAL
27615 -------------------------------------------------------------------------*/
27616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27617 (WDI_StartRspCb)pEventData->pCBfnc,
27618 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27619
27620}/*WDI_ProcessFeatureCapsExchangeReq*/
27621
27622/**
27623 @brief Process Host-FW Capability Exchange Response function
27624
27625 @param pWDICtx: pointer to the WLAN DAL context
27626 pEventData: pointer to the event information structure
27627
27628 @see
27629 @return Result of the function call
27630*/
27631WDI_Status
27632WDI_ProcessFeatureCapsExchangeRsp
27633(
27634 WDI_ControlBlockType* pWDICtx,
27635 WDI_EventInfoType* pEventData
27636)
27637{
27638 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27639 wpt_int32 fCapsStructSize;
27640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27641
27642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027643 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027644
27645 /*-------------------------------------------------------------------------
27646 Sanity check
27647 -------------------------------------------------------------------------*/
27648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27649 ( NULL == pEventData->pEventData ))
27650 {
27651 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027654 WDI_ASSERT(0);
27655 return WDI_STATUS_E_FAILURE;
27656 }
27657
27658 /* Allocate memory separately for global variable carrying FW caps */
27659 fCapsStructSize = sizeof(tWlanFeatCaps);
27660 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27661 if ( NULL == gpFwWlanFeatCaps )
27662 {
27663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27664 "Cannot allocate memory for host capability info\n");
27665 WDI_ASSERT(0);
27666 return WDI_STATUS_MEM_FAILURE;
27667 }
27668
27669 /*-------------------------------------------------------------------------
27670 Unpack HAL Response Message - the header was already extracted by the
27671 main Response Handling procedure
27672 -------------------------------------------------------------------------*/
27673 /*-------------------------------------------------------------------------
27674 Extract response and send it to UMAC
27675 -------------------------------------------------------------------------*/
27676
27677 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27678 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027680 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027681 gpFwWlanFeatCaps->featCaps[0],
27682 gpFwWlanFeatCaps->featCaps[1],
27683 gpFwWlanFeatCaps->featCaps[2],
27684 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027685 );
27686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27687 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27689
27690 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27691 if (wdiFeatureCapsExchangeCb != NULL)
27692 wdiFeatureCapsExchangeCb(NULL, NULL);
27693
27694 return WDI_STATUS_SUCCESS;
27695}
27696
Mohit Khanna4a70d262012-09-11 16:30:12 -070027697#ifdef WLAN_FEATURE_11AC
27698WDI_Status
27699WDI_ProcessUpdateVHTOpModeRsp
27700(
27701 WDI_ControlBlockType* pWDICtx,
27702 WDI_EventInfoType* pEventData
27703)
27704{
27705 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27706 WDI_Status wdiStatus;
27707 eHalStatus halStatus;
27708
27709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27710
27711 /*-------------------------------------------------------------------------
27712 Sanity check
27713 -------------------------------------------------------------------------*/
27714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27715 ( NULL == pEventData->pEventData))
27716 {
27717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027718 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027719 WDI_ASSERT(0);
27720 return WDI_STATUS_E_FAILURE;
27721 }
27722 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27723
27724 /*-------------------------------------------------------------------------
27725 Extract response and send it to UMAC
27726 -------------------------------------------------------------------------*/
27727 halStatus = *((eHalStatus*)pEventData->pEventData);
27728 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27729
27730 /*Notify UMAC*/
27731 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27732
27733 return WDI_STATUS_SUCCESS;
27734}
27735#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027736/**
27737 @brief WDI_getHostWlanFeatCaps
27738 WDI API that returns whether the feature passed to it as enum value in
27739 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27740 variable storing host capability bitmap to find this. This can be used by
27741 other moduels to decide certain things like call different APIs based on
27742 whether a particular feature is supported.
27743
27744 @param
27745
27746 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27747
27748 @see
27749 @return
27750 0 - if the feature is NOT supported in host
27751 any non-zero value - if the feature is SUPPORTED in host.
27752*/
27753wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27754{
27755 wpt_uint8 featSupported = 0;
27756 if (gpHostWlanFeatCaps != NULL)
27757 {
27758 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27759 }
27760 else
27761 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027763 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027764 }
27765 return featSupported;
27766}
27767
27768/**
27769 @brief WDI_getFwWlanFeatCaps
27770 WDI API that returns whether the feature passed to it as enum value in
27771 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27772 variable storing host capability bitmap to find this. This can be used by
27773 other moduels to decide certain things like call different APIs based on
27774 whether a particular feature is supported.
27775
27776 @param
27777
27778 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27779 in wlan_hal_msg.h.
27780
27781 @see
27782 @return
27783 0 - if the feature is NOT supported in FW
27784 any non-zero value - if the feature is SUPPORTED in FW.
27785*/
27786wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27787{
27788 wpt_uint8 featSupported = 0;
27789 if (gpFwWlanFeatCaps != NULL)
27790 {
27791 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27792 }
27793 else
27794 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027796 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027797 }
27798 return featSupported;
27799}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027800
27801#ifdef WLAN_FEATURE_11AC
27802WDI_Status
27803WDI_ProcessUpdateVHTOpModeReq
27804(
27805 WDI_ControlBlockType* pWDICtx,
27806 WDI_EventInfoType* pEventData
27807)
27808{
27809 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27810 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27811 wpt_uint8* pSendBuffer = NULL;
27812 wpt_uint16 usDataOffset = 0;
27813 wpt_uint16 usSendSize = 0;
27814
27815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27816
27817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027818 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027819
27820 /*-------------------------------------------------------------------------
27821 Sanity check
27822 -------------------------------------------------------------------------*/
27823 if (( NULL == pEventData ) ||
27824 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27825 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27826 {
27827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027828 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027829 WDI_ASSERT(0);
27830 return WDI_STATUS_E_FAILURE;
27831 }
27832
27833 /*-----------------------------------------------------------------------
27834 Get message buffer
27835 -----------------------------------------------------------------------*/
27836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27837 sizeof(WDI_UpdateVHTOpMode),
27838 &pSendBuffer, &usDataOffset, &usSendSize))||
27839 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27840 {
27841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27842 "Unable to get send buffer in update vht opMode req");
27843 WDI_ASSERT(0);
27844 return WDI_STATUS_E_FAILURE;
27845 }
27846
27847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27848 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27849
27850 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27851 sizeof(WDI_UpdateVHTOpMode));
27852
27853 /*-------------------------------------------------------------------------
27854 Send Start Request to HAL
27855 -------------------------------------------------------------------------*/
27856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27857 wdiVHTOpModeCb,
27858 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27859
27860}
27861
27862WDI_Status
27863WDI_UpdateVHTOpModeReq
27864(
27865 WDI_UpdateVHTOpMode *pData,
27866 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27867 void* pUserData
27868)
27869{
27870 WDI_EventInfoType wdiEventData;
27871
27872 /*------------------------------------------------------------------------
27873 Sanity Check
27874 ------------------------------------------------------------------------*/
27875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27876 {
27877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27878 "WDI API call before module is initialized - Fail request");
27879
27880 return WDI_STATUS_E_NOT_ALLOWED;
27881 }
27882
27883 /*------------------------------------------------------------------------
27884 Fill in Event data and post to the Main FSM
27885 ------------------------------------------------------------------------*/
27886 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27887 wdiEventData.pEventData = pData;
27888 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27889 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27890 wdiEventData.pUserData = pUserData;
27891
27892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27893 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27894
27895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27896
27897}
27898#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027899
27900/**
27901 @brief WDI_TransportChannelDebug -
27902 Display DXE Channel debugging information
27903 User may request to display DXE channel snapshot
27904 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027905
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027906 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027907 @param enableStallDetect : Enable stall detect feature
27908 This feature will take effect to data performance
27909 Not integrate till fully verification
27910 @see
27911 @return none
27912*/
27913void WDI_TransportChannelDebug
27914(
27915 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027916 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027917)
27918{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027919 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027920 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027921}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027922/**
27923 @brief WDI_SsrTimerCB
27924 Callback function for SSR timer, if this is called then the graceful
27925 shutdown for Riva did not happen.
27926
27927 @param pUserData : user data to timer
27928
27929 @see
27930 @return none
27931*/
27932void
27933WDI_SsrTimerCB
27934(
27935 void *pUserData
27936)
27937{
27938 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27940
27941 if (NULL == pWDICtx )
27942 {
27943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027944 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027945 WDI_ASSERT(0);
27946 return;
27947 }
27948 wpalRivaSubystemRestart();
27949
27950 return;
27951
27952}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070027953
27954/**
27955 @brief WDI_SetEnableSSR -
27956 This API is called to enable/disable SSR on WDI timeout.
27957
27958 @param enableSSR : enable/disable SSR
27959
27960 @see
27961 @return none
27962*/
27963void WDI_SetEnableSSR(wpt_boolean enableSSR)
27964{
27965 gWDICb.bEnableSSR = enableSSR;
27966}
Leo Chang00bc9132013-08-01 19:21:11 -070027967
27968
27969#ifdef FEATURE_WLAN_LPHB
27970/**
27971 @brief WDI_ProcessLphbWaitTimeoutInd -
27972 This function will be invoked when FW detects low power
27973 heart beat failure
27974
27975 @param pWDICtx : wdi context
27976 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070027977 @see
27978 @return Result of the function call
27979*/
27980WDI_Status
27981WDI_ProcessLphbWaitTimeoutInd
27982(
27983 WDI_ControlBlockType* pWDICtx,
27984 WDI_EventInfoType* pEventData
27985)
27986{
27987 WDI_LowLevelIndType wdiInd;
27988 tHalLowPowerHeartBeatIndMsg *lphbIndicationParam;
27989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27990
27991 /*-------------------------------------------------------------------------
27992 Sanity check
27993 -------------------------------------------------------------------------*/
27994 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27995 (NULL == pEventData->pEventData))
27996 {
27997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27998 "%s: Invalid parameters", __func__);
27999 WDI_ASSERT(0);
28000 return WDI_STATUS_E_FAILURE;
28001 }
28002
28003 /*-------------------------------------------------------------------------
28004 Extract indication and send it to UMAC
28005 -------------------------------------------------------------------------*/
28006 lphbIndicationParam = (tHalLowPowerHeartBeatIndMsg *)pEventData->pEventData;
28007
28008 wdiInd.wdiIndicationType = WDI_LPHB_WAIT_TIMEOUT_IND;
28009 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
28010 lphbIndicationParam->lowPowerHeartBeatIndParams.bssIdx;
28011 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
28012 lphbIndicationParam->lowPowerHeartBeatIndParams.sessionIdx;
28013 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
28014 lphbIndicationParam->lowPowerHeartBeatIndParams.protocolType;
28015 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
28016 lphbIndicationParam->lowPowerHeartBeatIndParams.eventReason;
28017 /*Notify UMAC*/
28018 if (pWDICtx->wdiLowLevelIndCB)
28019 {
28020 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28021 }
28022
28023 return WDI_STATUS_SUCCESS;
28024}
28025
28026/**
28027 @brief WDI_ProcessLphbCfgRsp -
28028 LPHB configuration response from FW
28029
28030 @param pWDICtx : wdi context
28031 pEventData : indication data
28032
28033 @see
28034 @return Result of the function call
28035*/
28036WDI_Status WDI_ProcessLphbCfgRsp
28037(
28038 WDI_ControlBlockType* pWDICtx,
28039 WDI_EventInfoType* pEventData
28040)
28041{
28042 WDI_Status wdiStatus;
28043 eHalStatus halStatus;
28044 WDI_LphbCfgCb wdiLphbCfgCb;
28045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28046
28047 /*-------------------------------------------------------------------------
28048 Sanity check
28049 -------------------------------------------------------------------------*/
28050 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28051 (NULL == pEventData->pEventData))
28052 {
28053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28054 "%s: Invalid parameters", __func__);
28055 WDI_ASSERT(0);
28056 return WDI_STATUS_E_FAILURE;
28057 }
28058
28059 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28060
28061 /*-------------------------------------------------------------------------
28062 Extract response and send it to UMAC
28063 -------------------------------------------------------------------------*/
28064 halStatus = *((eHalStatus*)pEventData->pEventData);
28065 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28066
28067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28068 "LPHB Cfg Rsp Return status %d", wdiStatus);
28069 /*Notify UMAC*/
28070 if (NULL != wdiLphbCfgCb)
28071 {
28072 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28073 }
28074
28075 return WDI_STATUS_SUCCESS;
28076}
28077
28078/**
28079 @brief WDI_ProcessLPHBConfReq -
28080 LPHB configuration request to FW
28081
28082 @param pWDICtx : wdi context
28083 pEventData : indication data
28084
28085 @see
28086 @return none
28087*/
28088WDI_Status WDI_ProcessLPHBConfReq
28089(
28090 WDI_ControlBlockType* pWDICtx,
28091 WDI_EventInfoType* pEventData
28092)
28093{
28094 WDI_LPHBReq *pLphbReqParams;
28095 WDI_Status wdiStatus;
28096 wpt_uint8* pSendBuffer = NULL;
28097 wpt_uint16 usDataOffset = 0;
28098 wpt_uint16 usSendSize = 0;
28099 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28101
28102 /*-------------------------------------------------------------------------
28103 Sanity check
28104 -------------------------------------------------------------------------*/
28105 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28106 {
28107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28108 "%s: Invalid parameters in Suspend ind",__func__);
28109 WDI_ASSERT(0);
28110 return WDI_STATUS_E_FAILURE;
28111 }
28112
28113 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28114
28115 /*-----------------------------------------------------------------------
28116 Get message buffer
28117 -----------------------------------------------------------------------*/
28118 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28119 WDI_LPHB_CFG_REQ,
28120 sizeof(tHalLowPowerHeartBeatReqMsg),
28121 &pSendBuffer, &usDataOffset, &usSendSize))||
28122 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28123 {
28124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28125 "Unable to get send buffer in LPHB Ind ");
28126 WDI_ASSERT(0);
28127 return WDI_STATUS_E_FAILURE;
28128 }
28129
28130 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28131 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28132
28133 halLphbReqRarams->lowPowerHeartBeatCmdType =
28134 (tANI_U16)(++pLphbReqParams->cmd);
28135 switch ((tANI_U16)pLphbReqParams->cmd)
28136 {
28137 case WDI_LPHB_SET_EN_PARAMS_INDID:
28138 halLphbReqRarams->sessionIdx =
28139 pLphbReqParams->params.lphbEnableReq.session;
28140 halLphbReqRarams->options.control.heartBeatEnable =
28141 pLphbReqParams->params.lphbEnableReq.enable;
28142 halLphbReqRarams->options.control.heartBeatType =
28143 pLphbReqParams->params.lphbEnableReq.item;
28144 break;
28145
28146 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28147 halLphbReqRarams->sessionIdx =
28148 pLphbReqParams->params.lphbTcpParamReq.session;
28149 halLphbReqRarams->options.tcpParams.timeOutSec =
28150 pLphbReqParams->params.lphbTcpParamReq.timeout;
28151 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28152 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28153 sizeof(v_U32_t));
28154 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28155 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28156 sizeof(v_U32_t));
28157
28158 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28159 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28160 WDI_MAC_ADDR_LEN);
28161
28162 halLphbReqRarams->options.tcpParams.hostPort =
28163 pLphbReqParams->params.lphbTcpParamReq.src_port;
28164 halLphbReqRarams->options.tcpParams.destPort =
28165 pLphbReqParams->params.lphbTcpParamReq.dst_port;
28166 break;
28167
28168 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28169 halLphbReqRarams->sessionIdx =
28170 pLphbReqParams->params.lphbTcpFilterReq.session;
28171 halLphbReqRarams->options.tcpUdpFilter.offset =
28172 pLphbReqParams->params.lphbTcpFilterReq.offset;
28173 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28174 pLphbReqParams->params.lphbTcpFilterReq.length;
28175 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28176 pLphbReqParams->params.lphbTcpFilterReq.filter,
28177 WDI_LPHB_FILTER_LEN);
28178 break;
28179
28180 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28181 halLphbReqRarams->sessionIdx =
28182 pLphbReqParams->params.lphbUdpParamReq.session;
28183 halLphbReqRarams->options.udpParams.timeOutSec =
28184 pLphbReqParams->params.lphbUdpParamReq.timeout;
28185 halLphbReqRarams->options.udpParams.timePeriodSec =
28186 pLphbReqParams->params.lphbUdpParamReq.interval;
28187 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28188 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28189 sizeof(v_U32_t));
28190 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28191 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28192 sizeof(v_U32_t));
28193
28194 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28195 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28196 WDI_MAC_ADDR_LEN);
28197
28198 halLphbReqRarams->options.udpParams.hostPort =
28199 pLphbReqParams->params.lphbUdpParamReq.src_port;
28200 halLphbReqRarams->options.udpParams.destPort =
28201 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28202 break;
28203
28204 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28205 halLphbReqRarams->sessionIdx =
28206 pLphbReqParams->params.lphbUdpFilterReq.session;
28207 halLphbReqRarams->options.tcpUdpFilter.offset =
28208 pLphbReqParams->params.lphbUdpFilterReq.offset;
28209 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28210 pLphbReqParams->params.lphbUdpFilterReq.length;
28211 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28212 pLphbReqParams->params.lphbUdpFilterReq.filter,
28213 WDI_LPHB_FILTER_LEN);
28214 break;
28215
28216 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28217 /* NA */
28218 break;
28219
28220 default:
28221 break;
28222 }
28223
28224 /*-------------------------------------------------------------------------
28225 Send Suspend Request to HAL
28226 -------------------------------------------------------------------------*/
28227 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28228 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28229
28230 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28231 usSendSize, pWDICtx->pfncRspCB,
28232 pWDICtx->pReqStatusUserData,
28233 WDI_LPHB_CFG_RESP);
28234
28235 return wdiStatus;
28236}
28237
28238/**
28239 @brief WDI_LPHBConfReq -
28240 LPHB configuration request API
28241
28242 @param lphbconfParam : configuration parameter
28243 usrData : client context
28244 lphbCfgCb : callback function pointer
28245
28246 @see
28247 @return Success or fail status code
28248*/
28249WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28250 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28251{
28252 WDI_EventInfoType wdiEventData;
28253
28254 /*------------------------------------------------------------------------
28255 Sanity Check
28256 ------------------------------------------------------------------------*/
28257 if (eWLAN_PAL_FALSE == gWDIInitialized)
28258 {
28259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28260 "WDI API call before module is initialized - Fail request");
28261
28262 return WDI_STATUS_E_NOT_ALLOWED;
28263 }
28264
28265 /*------------------------------------------------------------------------
28266 Fill in Event data and post to the Main FSM
28267 ------------------------------------------------------------------------*/
28268 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28269 wdiEventData.pEventData = lphbconfParam;
28270 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28271 wdiEventData.pCBfnc = lphbCfgCb;
28272 wdiEventData.pUserData = usrData;
28273
28274 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28275}
28276#endif /* FEATURE_WLAN_LPHB */
28277
Ravi Joshi96d77342013-07-23 08:37:49 -070028278/**
28279 @brief WDI_ProcessIbssPeerInactivityInd
28280 Process peer inactivity indication coming from HAL
28281
28282 @param pWDICtx: pointer to the WLAN DAL context
28283 pEventData: pointer to the event information structure
28284 @see
28285 @return Result of the function call
28286*/
28287WDI_Status
28288WDI_ProcessIbssPeerInactivityInd
28289(
28290 WDI_ControlBlockType* pWDICtx,
28291 WDI_EventInfoType* pEventData
28292)
28293{
28294 WDI_LowLevelIndType wdiInd;
28295 tIbssPeerInactivityIndMsg halIbssIndMsg;
28296
28297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28298
28299 /*-------------------------------------------------------------------------
28300 Sanity check
28301 -------------------------------------------------------------------------*/
28302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28303 ( NULL == pEventData->pEventData ))
28304 {
28305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28306 "%s: Invalid parameters", __func__);
28307 WDI_ASSERT( 0 );
28308 return WDI_STATUS_E_FAILURE;
28309 }
28310
28311 /*-------------------------------------------------------------------------
28312 Extract indication and send it to UMAC
28313 -------------------------------------------------------------------------*/
28314 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28315 pEventData->pEventData,
28316 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28317
28318 /*Fill in the indication parameters*/
28319 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28320
28321 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28322 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28323
28324 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28325 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28326
28327 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28328 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28329 sizeof(tSirMacAddr));
28330
28331 /*Notify UMAC*/
28332 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28333
28334 return WDI_STATUS_SUCCESS;
28335
28336} /*WDI_ProcessIbssPeerInactivityInd*/