blob: cc5e6ff9d80005242fd820ee77fc8890f479a347 [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
Madan Mohan Koyyalamudi5aa244c2013-09-13 19:36:52 +0530171#ifdef FEATURE_WLAN_TDLS
172 ,ADVANCE_TDLS //29
173#else
174 ,FEATURE_NOT_SUPPORTED //29
175#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800176 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700177
178/*--------------------------------------------------------------------------
179 WLAN DAL State Machine
180 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700181WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700182{
183 /*WDI_INIT_ST*/
184 {{
185 WDI_MainStart, /*WDI_START_EVENT*/
186 NULL, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
189 WDI_MainClose, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
191 }},
192
193 /*WDI_STARTED_ST*/
194 {{
195 WDI_MainStartStarted, /*WDI_START_EVENT*/
196 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
197 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
198 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
199 NULL, /*WDI_CLOSE_EVENT*/
200 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
201 }},
202
203 /*WDI_STOPPED_ST*/
204 {{
205 WDI_MainStart, /*WDI_START_EVENT*/
206 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
207 NULL, /*WDI_REQUEST_EVENT*/
208 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
209 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700210 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700211 }},
212
213 /*WDI_BUSY_ST*/
214 {{
215 WDI_MainStartBusy, /*WDI_START_EVENT*/
216 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
217 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
218 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
219 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
220 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
221 }}
222};
223
Jeff Johnsone7245742012-09-05 17:12:55 -0700224/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700225 DAL Request Processing Array - the functions in this table will only be
226 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700227 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700228 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700229WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700230{
231 /*INIT*/
232 WDI_ProcessStartReq, /* WDI_START_REQ */
233 WDI_ProcessStopReq, /* WDI_STOP_REQ */
234 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
235
236 /*SCAN*/
237 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
238 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
239 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
240 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
241
242 /*ASSOCIATION*/
243 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
244 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
245 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
246 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
247 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
248
249 /* Security */
250 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
251 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
252 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
253 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
254
255 /* QoS and BA APIs */
256 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
257 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
258 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
259 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
260 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
261
262 /* Miscellaneous Control APIs */
263 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
264 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
265 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
266 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
267 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
268
269 /*BA APIs*/
270 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
271 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
272
273 /*Beacon processing APIs*/
274 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
275 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
276
277 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
278 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
279 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
280 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 /* PowerSave APIs */
283 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
284 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
285 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
286 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
287 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
288 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
289 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
290 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
291 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
292 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
293 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
294 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
295 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
296 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
297 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
298 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
299 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
300 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
301 /*NV Download APIs*/
302 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
303 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
304 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
305#ifdef WLAN_FEATURE_VOWIFI_11R
306 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
307#else
308 NULL,
309#endif /* WLAN_FEATURE_VOWIFI_11R */
310 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
311 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313
314#ifdef FEATURE_OEM_DATA_SUPPORT
315 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
316#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700318#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700319 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700320
321 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700322
323#ifdef FEATURE_WLAN_SCAN_PNO
324 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
325 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
326 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
327#else
328 NULL,
329 NULL,
330 NULL,
331#endif /* FEATURE_WLAN_SCAN_PNO */
332
333 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334
Jeff Johnson295189b2012-06-20 16:38:30 -0700335#ifdef WLAN_FEATURE_PACKET_FILTERING
336 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700337 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700338 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700339 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700340 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700341 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700343 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700344#else
345 NULL,
346 NULL,
347 NULL,
348 NULL,
349#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700350 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
352 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
353
354 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
355#ifdef FEATURE_WLAN_CCX
356 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
357#else
358 NULL,
359#endif
360
361#ifdef WLAN_FEATURE_GTK_OFFLOAD
362 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
363 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
364#else
365 NULL,
366 NULL,
367#endif // WLAN_FEATURE_GTK_OFFLOAD
368
369 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
370 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700371#ifdef WLAN_FEATURE_11AC
372 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800373#else
374 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700375#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800376#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
377 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
378#else
schangd82195a2013-03-13 18:41:24 -0700379 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800380#endif
schangd82195a2013-03-13 18:41:24 -0700381 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700382#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700383 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700384#else
385 NULL,
386#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530387#ifdef FEATURE_WLAN_TDLS
388 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
389#else
390 NULL,
391#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700392#ifdef FEATURE_WLAN_LPHB
393 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
394#else
395 NULL,
396#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530397
398#ifdef FEATURE_WLAN_BATCH_SCAN
399 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
400#else
401 NULL,
402#endif /* FEATURE_WLAN_BATCH_SCAN */
403
schangd82195a2013-03-13 18:41:24 -0700404 /*-------------------------------------------------------------------------
405 Indications
406 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700407 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800408 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530409 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
410 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700411#ifdef WLAN_FEATURE_11W
412 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
413#else
414 NULL,
415#endif
Yue Ma365933a2013-08-14 15:59:08 -0700416 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
417 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530418#ifdef FEATURE_WLAN_BATCH_SCAN
419 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
420 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
421#else
422 NULL,
423 NULL,
424#endif /* FEATURE_WLAN_BATCH_SCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700425};
426
427
Jeff Johnsone7245742012-09-05 17:12:55 -0700428/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700429 DAL Request Processing Array - the functions in this table will only be
430 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700431 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700432 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700433WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700434{
435 /*INIT*/
436 WDI_ProcessStartRsp, /* WDI_START_RESP */
437 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
438 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
439
440 /*SCAN*/
441 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
442 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
443 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
444 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
445
446 /* ASSOCIATION*/
447 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
448 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
449 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
450 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
451 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
452
453 /* Security */
454 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
455 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
456 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
457 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
458
459 /* QoS and BA APIs */
460 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
461 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
462 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
463 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
464 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
465
466 /* Miscellaneous Control APIs */
467 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
468 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
469 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
470 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
471 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
472
473 /* BA APIs*/
474 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
475 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700476
Jeff Johnson295189b2012-06-20 16:38:30 -0700477 /* IBSS APIs*/
478 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
479 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
480
481 /*Soft AP APIs*/
482 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
483 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
484 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
485 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
486
487 /* PowerSave APIs */
488 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
489 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
490 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
491 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
492 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
493 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
494 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
495 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
496 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
497 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
498 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
499 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
500 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
501 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
502 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
503 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
504 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
505 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700506
Jeff Johnson295189b2012-06-20 16:38:30 -0700507
508 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
509
510 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
511 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
512#ifdef WLAN_FEATURE_VOWIFI_11R
513 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
514#else
515 NULL,
516#endif /* WLAN_FEATURE_VOWIFI_11R */
517 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
518 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700519#ifdef FEATURE_OEM_DATA_SUPPORT
520 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
521#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700522 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700523#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700524 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
525
Jeff Johnson295189b2012-06-20 16:38:30 -0700526 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700527
Jeff Johnson295189b2012-06-20 16:38:30 -0700528 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700529
Jeff Johnsone7245742012-09-05 17:12:55 -0700530 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
531
Jeff Johnson295189b2012-06-20 16:38:30 -0700532#ifdef FEATURE_WLAN_SCAN_PNO
533 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
534 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
535 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
536#else
537 NULL,
538 NULL,
539 NULL,
540#endif // FEATURE_WLAN_SCAN_PNO
541
542 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
543
544 /*---------------------------------------------------------------------
545 Indications
546 ---------------------------------------------------------------------*/
547#ifdef WLAN_FEATURE_PACKET_FILTERING
548 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700549 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700550 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700551 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700552 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700553 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700554 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700555 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700556#else
557 NULL,
558 NULL,
559 NULL,
560 NULL,
561#endif // WLAN_FEATURE_PACKET_FILTERING
562
563 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
564 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
565
566 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
567#ifdef FEATURE_WLAN_CCX
568 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
569#else
570 NULL,
571#endif
572
573#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700574 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
575 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700576#else
577 NULL,
578 NULL,
579#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700580 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
581 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700582#ifdef WLAN_FEATURE_11AC
583 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700584#else
585 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700586#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800587#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
588 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
589#else
590 NULL,
591#endif
schangd82195a2013-03-13 18:41:24 -0700592 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700593#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700594 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700595#else
596 NULL,
597#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530598#ifdef FEATURE_WLAN_TDLS
599 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
600#else
601 NULL,
602#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700603#ifdef FEATURE_WLAN_LPHB
604 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
605#else
606 NULL,
607#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530608
609#ifdef FEATURE_WLAN_BATCH_SCAN
610 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
611#else
612 NULL,
613#endif /*FEATURE_WLAN_BATCH_SCAN*/
614
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 /*---------------------------------------------------------------------
616 Indications
617 ---------------------------------------------------------------------*/
618 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
619 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
620 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
621 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
622 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
623 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
624
625 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
626
627 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
628
Jeff Johnson295189b2012-06-20 16:38:30 -0700629 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700630
631#ifdef FEATURE_WLAN_SCAN_PNO
632 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
633#else
634 NULL,
635#endif // FEATURE_WLAN_SCAN_PNO
636
637#ifdef WLAN_WAKEUP_EVENTS
638 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
639#else // WLAN_WAKEUP_EVENTS
640 NULL,
641#endif // WLAN_WAKEUP_EVENTS
642
643 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800644
Viral Modi9dc288a2012-12-10 13:09:21 -0800645 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530646#ifdef FEATURE_WLAN_TDLS
647 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
648#else
649 NULL,
650#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700651
652#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700653 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700654#else
655 NULL,
656#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700657
658 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700659
660 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530661
662#ifdef FEATURE_WLAN_BATCH_SCAN
663 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
664#else
665 NULL,
666#endif
667
Jeff Johnson295189b2012-06-20 16:38:30 -0700668};
669
670
Jeff Johnsone7245742012-09-05 17:12:55 -0700671/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700672 WLAN DAL Global Control Block
673 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700674WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700675static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
676
Jeff Johnsone7245742012-09-05 17:12:55 -0700677const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700678
679/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700680WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700681void* WDI_GET_PAL_CTX( void )
682{
Jeff Johnsone7245742012-09-05 17:12:55 -0700683 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700684}/*WDI_GET_PAL_CTX*/
685
Jeff Johnsone7245742012-09-05 17:12:55 -0700686/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700687 Helper inline converters
688 ============================================================================*/
689/*Convert WDI driver type into HAL driver type*/
690WPT_STATIC WPT_INLINE WDI_Status
691WDI_HAL_2_WDI_STATUS
692(
693 eHalStatus halStatus
694);
695
696/*Convert WDI request type into HAL request type*/
697WPT_STATIC WPT_INLINE tHalHostMsgType
698WDI_2_HAL_REQ_TYPE
699(
700 WDI_RequestEnumType wdiReqType
701);
702
703/*Convert WDI response type into HAL response type*/
704WPT_STATIC WPT_INLINE WDI_ResponseEnumType
705HAL_2_WDI_RSP_TYPE
706(
707 tHalHostMsgType halMsg
708);
709
710/*Convert WDI driver type into HAL driver type*/
711WPT_STATIC WPT_INLINE tDriverType
712WDI_2_HAL_DRV_TYPE
713(
714 WDI_DriverType wdiDriverType
715);
716
717/*Convert WDI stop reason into HAL stop reason*/
718WPT_STATIC WPT_INLINE tHalStopType
719WDI_2_HAL_STOP_REASON
720(
721 WDI_StopType wdiStopType
722);
723
724/*Convert WDI scan mode type into HAL scan mode type*/
725WPT_STATIC WPT_INLINE eHalSysMode
726WDI_2_HAL_SCAN_MODE
727(
728 WDI_ScanMode wdiScanMode
729);
730
731/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700732WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700733WDI_2_HAL_SEC_CH_OFFSET
734(
735 WDI_HTSecondaryChannelOffset wdiSecChOffset
736);
737
738/*Convert WDI BSS type into HAL BSS type*/
739WPT_STATIC WPT_INLINE tSirBssType
740WDI_2_HAL_BSS_TYPE
741(
742 WDI_BssType wdiBSSType
743);
744
745/*Convert WDI NW type into HAL NW type*/
746WPT_STATIC WPT_INLINE tSirNwType
747WDI_2_HAL_NW_TYPE
748(
749 WDI_NwType wdiNWType
750);
751
752/*Convert WDI chanel bonding type into HAL cb type*/
753WPT_STATIC WPT_INLINE ePhyChanBondState
754WDI_2_HAL_CB_STATE
755(
756 WDI_PhyChanBondState wdiCbState
757);
758
759/*Convert WDI chanel bonding type into HAL cb type*/
760WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
761WDI_2_HAL_HT_OPER_MODE
762(
763 WDI_HTOperatingMode wdiHTOperMode
764);
765
766/*Convert WDI mimo PS type into HAL mimo PS type*/
767WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
768WDI_2_HAL_MIMO_PS
769(
770 WDI_HTMIMOPowerSaveState wdiHTOperMode
771);
772
773/*Convert WDI ENC type into HAL ENC type*/
774WPT_STATIC WPT_INLINE tAniEdType
775WDI_2_HAL_ENC_TYPE
776(
777 WDI_EncryptType wdiEncType
778);
779
780/*Convert WDI WEP type into HAL WEP type*/
781WPT_STATIC WPT_INLINE tAniWepType
782WDI_2_HAL_WEP_TYPE
783(
784 WDI_WepType wdiWEPType
785);
786
787/*Convert WDI Link State into HAL Link State*/
788WPT_STATIC WPT_INLINE tSirLinkState
789WDI_2_HAL_LINK_STATE
790(
791 WDI_LinkStateType wdiLinkState
792);
793
Jeff Johnsone7245742012-09-05 17:12:55 -0700794/*Translate a STA Context from WDI into HAL*/
795WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700796void
797WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700798(
Jeff Johnson295189b2012-06-20 16:38:30 -0700799 tConfigStaParams* phalConfigSta,
800 WDI_ConfigStaReqInfoType* pwdiConfigSta
801);
Jeff Johnsone7245742012-09-05 17:12:55 -0700802
803/*Translate a Rate set info from WDI into HAL*/
804WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700805WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700806(
Jeff Johnson295189b2012-06-20 16:38:30 -0700807 tSirMacRateSet* pHalRateSet,
808 WDI_RateSet* pwdiRateSet
809);
810
811/*Translate an EDCA Parameter Record from WDI into HAL*/
812WPT_STATIC WPT_INLINE void
813WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700814(
Jeff Johnson295189b2012-06-20 16:38:30 -0700815 tSirMacEdcaParamRecord* phalEdcaParam,
816 WDI_EdcaParamRecord* pWDIEdcaParam
817);
818
819/*Copy a management frame header from WDI fmt into HAL fmt*/
820WPT_STATIC WPT_INLINE void
821WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
822(
823 tSirMacMgmtHdr* pmacMgmtHdr,
824 WDI_MacMgmtHdr* pwdiMacMgmtHdr
825);
826
827/*Copy config bss parameters from WDI fmt into HAL fmt*/
828WPT_STATIC WPT_INLINE void
829WDI_CopyWDIConfigBSSToHALConfigBSS
830(
831 tConfigBssParams* phalConfigBSS,
832 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
833);
834
Jeff Johnsone7245742012-09-05 17:12:55 -0700835/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700836 pointed to by user data */
837WPT_STATIC WPT_INLINE void
838WDI_ExtractRequestCBFromEvent
839(
840 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700841 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700842 void** ppUserData
843);
844
845wpt_uint8
846WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700847(
Jeff Johnson295189b2012-06-20 16:38:30 -0700848 WDI_ControlBlockType* pWDICtx,
849 WDI_BSSSessionType** ppSession
850);
851
852void
853WDI_AddBcastSTAtoSTATable
854(
855 WDI_ControlBlockType* pWDICtx,
856 WDI_AddStaParams * staParams,
857 wpt_uint16 usBcastStaIdx
858);
859
860WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700861(
Jeff Johnson295189b2012-06-20 16:38:30 -0700862 WDI_ControlBlockType* pWDICtx,
863 WDI_EventInfoType* pEventData
864);
865
866void
867WDI_SetPowerStateCb
868(
869 wpt_status status,
870 unsigned int dxePhyAddr,
871 void *pContext
872);
873
874#define CASE_RETURN_STRING( str ) \
875 case ( ( str ) ): return( #str ); break \
876
877/**
878 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700879
880 @param wdiReqMsgId: WDI Message request Id
881
882 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700883 @return Result of the function call
884*/
885static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
886{
887 switch (wdiReqMsgId)
888 {
889 CASE_RETURN_STRING( WDI_START_REQ );
890 CASE_RETURN_STRING( WDI_STOP_REQ );
891 CASE_RETURN_STRING( WDI_CLOSE_REQ );
892 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
893 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
894 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
895 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
896 CASE_RETURN_STRING( WDI_JOIN_REQ );
897 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
898 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
899 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
900 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
901 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
902 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
903 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
904 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
905 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
906 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
907 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
908 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
909 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
910 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
911 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
912 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
913 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
914 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
915 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
916 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
917 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
918 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
919 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
920 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
921 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
922 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
923 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530924#ifdef FEATURE_WLAN_TDLS
925 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
926#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700927 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
928 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
929 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
930 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
931 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
932 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
933 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
934 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
935 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
936 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
937 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
938 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
939 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
940 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
941 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
942 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
943 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
944 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
945 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
946 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
947 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
948 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
949 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
950 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
951 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700952 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700953 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
954 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
955 #ifdef FEATURE_WLAN_SCAN_PNO
956 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
957 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
958 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
959 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700960#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700961 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700962#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700963 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
964 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
965 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
966 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
967 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
968 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
969 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
970 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
971 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800972 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800973 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700974#ifdef WLAN_FEATURE_11W
975 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
976#endif
Rajeev3db91f12013-10-05 11:03:42 +0530977#ifdef FEATURE_WLAN_BATCH_SCAN
978 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
979 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
980 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
981#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700982 default:
983 return "Unknown WDI MessageId";
984 }
985}
986
987
988
989/**
990 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700991
992 @param wdiRespMsgId: WDI Message response Id
993
994 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700995 @return Result of the function call
996*/
997static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
998{
999 switch (wdiRespMsgId)
1000 {
1001 CASE_RETURN_STRING( WDI_START_RESP );
1002 CASE_RETURN_STRING( WDI_STOP_RESP );
1003 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1004 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1005 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1006 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1007 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1008 CASE_RETURN_STRING( WDI_JOIN_RESP );
1009 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1010 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1011 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1012 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1013 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1014 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1015 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1016 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1017 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1018 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1019 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1020 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1021 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1022 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1023 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1024 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1025 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1026 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1027 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1028 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1029 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1030 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1031 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1032 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1033 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1034 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1035 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301036#ifdef FEATURE_WLAN_TDLS
1037 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1038 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1039#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001040 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1041 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1042 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1043 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1044 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1045 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1046 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1047 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1048 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1049 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1050 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1051 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1052 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1053 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1054 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1055 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1056 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1057 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1058 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1059 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1060 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1061 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1062 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1063 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1064 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001065 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001066 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1067 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1068 #ifdef FEATURE_WLAN_SCAN_PNO
1069 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1070 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1071 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1072 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001073#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001074 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001075#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001076 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1077 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1078 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1079 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1080 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1081 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1082 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1083 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001084 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301085#ifdef FEATURE_WLAN_BATCH_SCAN
1086 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1087#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001088 default:
1089 return "Unknown WDI MessageId";
1090 }
1091}
1092
1093/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301094 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1095 Capability bitmap array.
1096 @param capabilityBitmap - Base address of Bitmap array
1097 @see
1098 @returns None
1099 */
1100void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1101{
1102 int i;
1103 char capStr[512];
1104 char *pCapStr = capStr;
1105 for (i = 0; i < 32; i++) {
1106 if ((*(capabilityBitmap + 0) & (1 << i))) {
1107 switch(i) {
1108 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1109 pCapStr += strlen("MCC");
1110 break;
1111 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1112 pCapStr += strlen("P2P");
1113 break;
1114 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1115 pCapStr += strlen("DOT11AC");
1116 break;
1117 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1118 pCapStr += strlen("SLM_SESSIONIZATION");
1119 break;
1120 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1121 pCapStr += strlen("DOT11AC_OPMODE");
1122 break;
1123 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1124 pCapStr += strlen("SAP32STA");
1125 break;
1126 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1127 pCapStr += strlen("TDLS");
1128 break;
1129 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1130 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1131 break;
1132 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1133 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1134 break;
1135 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1136 pCapStr += strlen("BEACON_OFFLOAD");
1137 break;
1138 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1139 pCapStr += strlen("SCAN_OFFLOAD");
1140 break;
1141 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1142 pCapStr += strlen("ROAM_OFFLOAD");
1143 break;
1144 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1145 pCapStr += strlen("BCN_MISS_OFFLOAD");
1146 break;
1147 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1148 pCapStr += strlen("STA_POWERSAVE");
1149 break;
1150 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1151 pCapStr += strlen("AP_UAPSD");
1152 break;
1153 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1154 pCapStr += strlen("AP_DFS");
1155 break;
1156 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1157 pCapStr += strlen("BLOCKACK");
1158 break;
1159 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1160 pCapStr += strlen("PHY_ERR");
1161 break;
1162 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1163 pCapStr += strlen("BCN_FILTER");
1164 break;
1165 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1166 pCapStr += strlen("RTT");
1167 break;
1168 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1169 pCapStr += strlen("RATECTRL");
1170 break;
1171 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1172 pCapStr += strlen("WOW");
1173 break;
1174 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1175 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1176 break;
1177 }
1178 *pCapStr++ = ',';
1179 *pCapStr++ = ' ';
1180 }
1181 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301182 pCapStr -= 2;
1183 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301184 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301186}
1187
1188/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001189 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001190
1191 @param halStatusId: HAL status Id
1192
1193 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 @return Result of the function call
1195*/
1196static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1197{
1198 switch (halStatusId)
1199 {
1200 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1201 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1202 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1203 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1204 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1205 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1206 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1207 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1208 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1209 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1210 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1211 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1212 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1213 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1214 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1215 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1216 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1217 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1218 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1219 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1220 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1221 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1222 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1223 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1224 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1225 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1226 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1227 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1228 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1229 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1230 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1231 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1232 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1233 default:
1234 return "Unknown HAL status";
1235 }
1236}
1237
Jeff Johnsone7245742012-09-05 17:12:55 -07001238/*========================================================================
1239
Jeff Johnson295189b2012-06-20 16:38:30 -07001240 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001241
Jeff Johnson295189b2012-06-20 16:38:30 -07001242==========================================================================*/
1243
1244/**
1245 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001246
Jeff Johnson295189b2012-06-20 16:38:30 -07001247 DAL will allocate all the resources it needs. It will open PAL, it will also
1248 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 DXE/SMD or any other drivers that they need.
1250
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 @param pOSContext: pointer to the OS context provided by the UMAC
1252 will be passed on to PAL on Open
1253 ppWDIGlobalCtx: output pointer of Global Context
1254 pWdiDevCapability: output pointer of device capability
1255
1256 @return Result of the function call
1257*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001258WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001259WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001260(
Jeff Johnson295189b2012-06-20 16:38:30 -07001261 void* pOSContext,
1262 void** ppWDIGlobalCtx,
1263 WDI_DeviceCapabilityType* pWdiDevCapability,
1264 unsigned int driverType
1265)
1266{
1267 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001268 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001270 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1272
1273 /*---------------------------------------------------------------------
1274 Sanity check
1275 ---------------------------------------------------------------------*/
1276 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1277 {
1278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1279 "Invalid input parameters in WDI_Init");
1280
Jeff Johnsone7245742012-09-05 17:12:55 -07001281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 }
1283
1284 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001285 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001286 ---------------------------------------------------------------------*/
1287 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1288 {
1289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1290 "WDI module already initialized - return");
1291
Jeff Johnsone7245742012-09-05 17:12:55 -07001292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001293 }
1294
1295 /*Module is now initialized - this flag is to ensure the fact that multiple
1296 init will not happen on WDI
1297 !! - potential race does exist because read and set are not atomic,
1298 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001299 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001300
1301 /*Setup the control block */
1302 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001303 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001304
1305 /*Setup the STA Table*/
1306 wdiStatus = WDI_STATableInit(&gWDICb);
1307 if ( WDI_STATUS_SUCCESS != wdiStatus )
1308 {
1309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1310 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001311 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001312 goto fail_STATableInit;
1313 }
1314
1315 /*------------------------------------------------------------------------
1316 Open the PAL
1317 ------------------------------------------------------------------------*/
1318 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1319 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1320 {
1321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1322 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001323 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001324 goto fail_wpalOpen;
1325 }
1326
1327 /*Initialize main synchro mutex - it will be used to ensure integrity of
1328 the main WDI Control Block*/
1329 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1330 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1331 {
1332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1333 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001334 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 goto fail_mutex;
1336 }
1337
1338 /*Initialize the response timer - it will be used to time all messages
1339 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001340 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1341 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001342 &gWDICb);
1343 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1344 {
1345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1346 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001347 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001348 goto fail_timer;
1349 }
1350
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001351 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1352 WDI_SsrTimerCB,
1353 &gWDICb);
1354 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1355 {
1356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1357 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001358 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001359 goto fail_timer2;
1360 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 /* Initialize the WDI Pending Request Queue*/
1362 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1363 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1364 {
1365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1366 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001367 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 goto fail_pend_queue;
1369 }
1370
1371 /*Init WDI Pending Assoc Id Queue */
1372 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1373 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1374 {
1375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1376 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001377 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001378 goto fail_assoc_queue;
1379 }
1380
1381 /*Initialize the BSS sessions pending Queue */
1382 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1383 {
1384 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1385 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1386 {
1387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1388 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001389 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 goto fail_bss_queue;
1391 }
1392 }
1393
1394 /*Indicate the control block is sufficiently initialized for callbacks*/
1395 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1396
1397 /*------------------------------------------------------------------------
1398 Initialize the Data Path Utility Module
1399 ------------------------------------------------------------------------*/
1400 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1401 if ( WDI_STATUS_SUCCESS != wdiStatus )
1402 {
1403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1404 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001405 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001406 goto fail_dp_util_init;
1407 }
1408
1409 /* Init Set power state event */
1410 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001411 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001412 {
1413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1414 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001415 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001416 goto fail_power_event;
1417 }
1418
1419 /* Init WCTS action event */
1420 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001421 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001422 {
1423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1424 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001425 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 goto fail_wcts_event;
1427 }
1428
1429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001430 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001431 ------------------------------------------------------------------------*/
1432 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1433 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001434 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001435 wctsCBs.wctsRxMsgCBData = &gWDICb;
1436
Jeff Johnsone7245742012-09-05 17:12:55 -07001437 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001438 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001439 WDI_CT_CHANNEL_SIZE,
1440 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001441
1442 if ( NULL == gWDICb.wctsHandle )
1443 {
1444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001445 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 goto fail_wcts_open;
1447 }
1448
1449 gWDICb.driverMode = (tDriverType)driverType;
1450 /* FTM mode not need to open Transport Driver */
1451 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001452 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 /*------------------------------------------------------------------------
1454 Open the Data Transport
1455 ------------------------------------------------------------------------*/
1456 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1457 {
1458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001459 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 goto fail_wdts_open;
1461 }
1462 }
1463
1464 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001465 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001466
1467 /*Send the context as a ptr to the global WDI Control Block*/
1468 *ppWDIGlobalCtx = &gWDICb;
1469
1470 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001471 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1473 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1474 return WDI_STATUS_SUCCESS;
1475
1476 /* ERROR handlers
1477 Undo everything that completed successfully */
1478
1479 fail_wdts_open:
1480 {
1481 wpt_status eventStatus;
1482
1483 /* Closing WCTS in this scenario is tricky since it has to close
1484 the SMD channel and then we get notified asynchronously when
1485 the channel has been closed. So we take some of the logic from
1486 the "normal" close procedure in WDI_Close()
1487 */
1488
1489 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001490 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001491 {
1492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001493 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001494 }
1495
1496 WCTS_CloseTransport(gWDICb.wctsHandle);
1497
1498 /* Wait for WCTS to close the control transport. If we were able
1499 to reset the event flag, then we'll wait for the event,
1500 otherwise we'll wait for a maximum amount of time required for
1501 the channel to be closed */
1502 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1503 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001504 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 WDI_WCTS_ACTION_TIMEOUT);
1506 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1507 {
1508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001509 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001510 }
1511 }
1512 else
1513 {
1514 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1515 }
1516 }
1517 fail_wcts_open:
1518 wpalEventDelete(&gWDICb.wctsActionEvent);
1519 fail_wcts_event:
1520 wpalEventDelete(&gWDICb.setPowerStateEvent);
1521 fail_power_event:
1522 WDI_DP_UtilsExit(&gWDICb);
1523 fail_dp_util_init:
1524 gWDICb.magic = 0;
1525 fail_bss_queue:
1526 /* entries 0 thru i-1 were successfully initialized */
1527 while (0 < i)
1528 {
1529 i--;
1530 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1531 }
1532 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1533 fail_assoc_queue:
1534 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1535 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001536 wpalTimerDelete(&gWDICb.ssrTimer);
1537 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 wpalTimerDelete(&gWDICb.wptResponseTimer);
1539 fail_timer:
1540 wpalMutexDelete(&gWDICb.wptMutex);
1541 fail_mutex:
1542 wpalClose(gWDICb.pPALContext);
1543 fail_wpalOpen:
1544 WDI_STATableClose(&gWDICb);
1545 fail_STATableInit:
1546 gWDIInitialized = eWLAN_PAL_FALSE;
1547
1548 return WDI_STATUS_E_FAILURE;
1549
1550}/*WDI_Init*/;
1551
1552/**
1553 @brief WDI_Start will be called when the upper MAC is ready to
1554 commence operation with the WLAN Device. Upon the call
1555 of this API the WLAN DAL will pack and send a HAL Start
1556 message to the lower RIVA sub-system if the SMD channel
1557 has been fully opened and the RIVA subsystem is up.
1558
1559 If the RIVA sub-system is not yet up and running DAL
1560 will queue the request for Open and will wait for the
1561 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001562 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001563
1564 WDI_Init must have been called.
1565
Jeff Johnsone7245742012-09-05 17:12:55 -07001566 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001567 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001568
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 wdiStartRspCb: callback for passing back the response of
1570 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001571
Jeff Johnson295189b2012-06-20 16:38:30 -07001572 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001573 callback
1574
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 @see WDI_Start
1576 @return Result of the function call
1577*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001578WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001579WDI_Start
1580(
1581 WDI_StartReqParamsType* pwdiStartParams,
1582 WDI_StartRspCb wdiStartRspCb,
1583 void* pUserData
1584)
1585{
1586 WDI_EventInfoType wdiEventData;
1587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1588
1589 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001590 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 ------------------------------------------------------------------------*/
1592 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1593 {
1594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1595 "WDI API call before module is initialized - Fail request");
1596
Jeff Johnsone7245742012-09-05 17:12:55 -07001597 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 }
1599
1600 /*------------------------------------------------------------------------
1601 Fill in Event data and post to the Main FSM
1602 ------------------------------------------------------------------------*/
1603 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001604 wdiEventData.pEventData = pwdiStartParams;
1605 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1606 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001607 wdiEventData.pUserData = pUserData;
1608
1609 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1610
1611}/*WDI_Start*/
1612
1613/**
1614 @brief WDI_Stop will be called when the upper MAC is ready to
1615 stop any operation with the WLAN Device. Upon the call
1616 of this API the WLAN DAL will pack and send a HAL Stop
1617 message to the lower RIVA sub-system if the DAL Core is
1618 in started state.
1619
1620 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001621
1622 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001623
1624 WDI_Start must have been called.
1625
Jeff Johnsone7245742012-09-05 17:12:55 -07001626 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001628
Jeff Johnson295189b2012-06-20 16:38:30 -07001629 wdiStopRspCb: callback for passing back the response of
1630 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001631
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001633 callback
1634
Jeff Johnson295189b2012-06-20 16:38:30 -07001635 @see WDI_Start
1636 @return Result of the function call
1637*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001638WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001639WDI_Stop
1640(
1641 WDI_StopReqParamsType* pwdiStopParams,
1642 WDI_StopRspCb wdiStopRspCb,
1643 void* pUserData
1644)
1645{
1646 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001647 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1649
1650 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001651 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001652 ------------------------------------------------------------------------*/
1653 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1654 {
1655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1656 "WDI API call before module is initialized - Fail request");
1657
Jeff Johnsone7245742012-09-05 17:12:55 -07001658 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 }
1660
Jeff Johnson43971f52012-07-17 12:26:56 -07001661 /*Access to the global state must be locked before cleaning */
1662 wpalMutexAcquire(&pWDICtx->wptMutex);
1663
1664 /*Clear all pending request*/
1665 WDI_ClearPendingRequests(pWDICtx);
1666
1667 /*We have completed cleaning unlock now*/
1668 wpalMutexRelease(&pWDICtx->wptMutex);
1669
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 /* Free the global variables */
1671 wpalMemoryFree(gpHostWlanFeatCaps);
1672 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001673 gpHostWlanFeatCaps = NULL;
1674 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001675
1676 /*------------------------------------------------------------------------
1677 Fill in Event data and post to the Main FSM
1678 ------------------------------------------------------------------------*/
1679 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001680 wdiEventData.pEventData = pwdiStopParams;
1681 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1682 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001683 wdiEventData.pUserData = pUserData;
1684
1685 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1686
1687}/*WDI_Stop*/
1688
1689
1690
1691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001692 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001693 needs to interact with DAL. DAL will free its control
1694 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001695
1696 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001697
1698 WDI_Stop must have been called.
1699
1700 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001701
Jeff Johnson295189b2012-06-20 16:38:30 -07001702 @see WDI_Stop
1703 @return Result of the function call
1704*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001705WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001706WDI_Close
1707(
1708 void
1709)
1710{
1711 wpt_uint8 i;
1712 WDI_EventInfoType wdiEventData;
1713 wpt_status wptStatus;
1714 wpt_status eventStatus;
1715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1716
1717 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001718 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 ------------------------------------------------------------------------*/
1720 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1721 {
1722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1723 "WDI API call before module is initialized - Fail request");
1724
Jeff Johnsone7245742012-09-05 17:12:55 -07001725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001726 }
1727
1728 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1729 (the control transport will be closed by the FSM and we'll want
1730 to wait until that completes)*/
1731 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001732 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 {
1734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001735 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 /* fall through and try to finish closing via the FSM */
1737 }
1738
1739 /*------------------------------------------------------------------------
1740 Fill in Event data and post to the Main FSM
1741 ------------------------------------------------------------------------*/
1742 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 wdiEventData.pEventData = NULL;
1744 wdiEventData.uEventDataSize = 0;
1745 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001746 wdiEventData.pUserData = NULL;
1747
1748 gWDIInitialized = eWLAN_PAL_FALSE;
1749
1750 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1751
1752 /*Wait for WCTS to close the control transport
1753 (but only if we were able to reset the event flag*/
1754 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1755 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001756 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 WDI_WCTS_ACTION_TIMEOUT);
1758 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1759 {
1760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001761 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 }
1763 }
1764
1765 /* Destroy the WCTS action event */
1766 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1767 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1768 {
1769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1770 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001771 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001772 }
1773
1774 /* Destroy the Set Power State event */
1775 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1776 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1777 {
1778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1779 "WDI Close failed to destroy an event");
1780
Jeff Johnsone7245742012-09-05 17:12:55 -07001781 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001782 }
1783
1784 /*------------------------------------------------------------------------
1785 Closes the Data Path Utility Module
1786 ------------------------------------------------------------------------*/
1787 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1788 {
1789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1790 "WDI Init failed to close the DP Util Module");
1791
Jeff Johnsone7245742012-09-05 17:12:55 -07001792 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 }
1794
1795 /*destroy the BSS sessions pending Queue */
1796 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1797 {
1798 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1799 }
1800
1801 /* destroy the WDI Pending Assoc Id Request Queue*/
1802 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1803
1804 /* destroy the WDI Pending Request Queue*/
1805 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001806
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 /*destroy the response timer */
1808 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1809
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001810 /*destroy the SSR timer */
1811 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1812
Jeff Johnson295189b2012-06-20 16:38:30 -07001813 /*invalidate the main synchro mutex */
1814 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1815 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1816 {
1817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1818 "Failed to delete mutex %d", wptStatus);
1819 WDI_ASSERT(0);
1820 }
1821
1822 /*Clear control block. note that this will clear the "magic"
1823 which will inhibit all asynchronous callbacks*/
1824 WDI_CleanCB(&gWDICb);
1825
1826 return wptStatus;
1827
1828}/*WDI_Close*/
1829
1830/**
1831 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1832 This will do most of the WDI stop & close
1833 operations without doing any handshake with Riva
1834
1835 This will also make sure that the control transport
1836 will NOT be closed.
1837
1838 This request will not be queued.
1839
1840
1841 WDI_Start must have been called.
1842
1843 @param closeTransport: Close control channel if this is set
1844
1845 @return Result of the function call
1846*/
1847WDI_Status
1848WDI_Shutdown
1849(
1850 wpt_boolean closeTransport
1851)
1852{
1853 WDI_EventInfoType wdiEventData;
1854 wpt_status wptStatus;
1855 int i = 0;
1856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1857
1858 /*------------------------------------------------------------------------
1859 Sanity Check
1860 ------------------------------------------------------------------------*/
1861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1862 {
1863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1864 "WDI API call before module is initialized - Fail request");
1865
1866 return WDI_STATUS_E_NOT_ALLOWED;
1867 }
1868
1869 /*------------------------------------------------------------------------
1870 Fill in Event data and post to the Main FSM
1871 ------------------------------------------------------------------------*/
1872 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1873 wdiEventData.pEventData = NULL;
1874 wdiEventData.uEventDataSize = 0;
1875
1876 /* Shutdown will not be queued, if the state is busy timer will be
1877 * stopped & this message will be processed.*/
1878 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1879 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1880 {
1881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001882 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 }
1884 /* Destroy the Set Power State event */
1885 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1886 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1887 {
1888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1889 "WDI Close failed to destroy an event");
1890
1891 WDI_ASSERT(0);
1892 }
1893 /*------------------------------------------------------------------------
1894 Closes the Data Path Utility Module
1895 ------------------------------------------------------------------------*/
1896 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1897 {
1898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1899 "WDI Init failed to close the DP Util Module");
1900
1901 WDI_ASSERT(0);
1902 }
1903 if ( closeTransport )
1904 {
1905 /* Close control transport, called from module unload */
1906 WCTS_CloseTransport(gWDICb.wctsHandle);
1907 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001908 else
1909 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001910 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001911 the pending messages in the transport queue */
1912 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1913 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 /*destroy the BSS sessions pending Queue */
1915 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1916 {
1917 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1918 }
1919
1920 /* destroy the WDI Pending Assoc Id Request Queue*/
1921 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1922 /* destroy the WDI Pending Request Queue*/
1923 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1924 /*destroy the response timer */
1925 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001926 /*destroy the SSR timer */
1927 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001928
1929 /*invalidate the main synchro mutex */
1930 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1931 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1932 {
1933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001934 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001935 WDI_ASSERT(0);
1936 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001937 /* Free the global variables */
1938 wpalMemoryFree(gpHostWlanFeatCaps);
1939 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001940 gpHostWlanFeatCaps = NULL;
1941 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001942 /*Clear control block. note that this will clear the "magic"
1943 which will inhibit all asynchronous callbacks*/
1944 WDI_CleanCB(&gWDICb);
1945 return wptStatus;
1946
1947}/*WDI_Shutdown*/
1948
1949
Jeff Johnsone7245742012-09-05 17:12:55 -07001950/*========================================================================
1951
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001953
Jeff Johnson295189b2012-06-20 16:38:30 -07001954==========================================================================*/
1955
1956/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001957 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001958 the WLAN Device to get ready for a scan procedure. Upon
1959 the call of this API the WLAN DAL will pack and send a
1960 HAL Init Scan request message to the lower RIVA
1961 sub-system if DAL is in state STARTED.
1962
1963 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001964 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001965
1966 WDI_Start must have been called.
1967
1968 @param wdiInitScanParams: the init scan parameters as specified
1969 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001970
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 wdiInitScanRspCb: callback for passing back the response
1972 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001973
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 callback
1976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 @see WDI_Start
1978 @return Result of the function call
1979*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001980WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001981WDI_InitScanReq
1982(
1983 WDI_InitScanReqParamsType* pwdiInitScanParams,
1984 WDI_InitScanRspCb wdiInitScanRspCb,
1985 void* pUserData
1986)
1987{
1988 WDI_EventInfoType wdiEventData;
1989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1990
1991 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 ------------------------------------------------------------------------*/
1994 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1995 {
1996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1997 "WDI API call before module is initialized - Fail request");
1998
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 }
2001
2002 /*------------------------------------------------------------------------
2003 Fill in Event data and post to the Main FSM
2004 ------------------------------------------------------------------------*/
2005 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 wdiEventData.pEventData = pwdiInitScanParams;
2007 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2008 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 wdiEventData.pUserData = pUserData;
2010
2011 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2012
2013}/*WDI_InitScanReq*/
2014
2015/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 wishes to change the Scan channel on the WLAN Device.
2018 Upon the call of this API the WLAN DAL will pack and
2019 send a HAL Start Scan request message to the lower RIVA
2020 sub-system if DAL is in state STARTED.
2021
2022 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002024
2025 WDI_InitScanReq must have been called.
2026
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002029
Jeff Johnson295189b2012-06-20 16:38:30 -07002030 wdiStartScanRspCb: callback for passing back the
2031 response of the start scan operation received from the
2032 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002033
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 callback
2036
Jeff Johnson295189b2012-06-20 16:38:30 -07002037 @see WDI_InitScanReq
2038 @return Result of the function call
2039*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002040WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002041WDI_StartScanReq
2042(
2043 WDI_StartScanReqParamsType* pwdiStartScanParams,
2044 WDI_StartScanRspCb wdiStartScanRspCb,
2045 void* pUserData
2046)
2047{
2048 WDI_EventInfoType wdiEventData;
2049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2050
2051 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002053 ------------------------------------------------------------------------*/
2054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2055 {
2056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2057 "WDI API call before module is initialized - Fail request");
2058
Jeff Johnsone7245742012-09-05 17:12:55 -07002059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 }
2061
2062 /*------------------------------------------------------------------------
2063 Fill in Event data and post to the Main FSM
2064 ------------------------------------------------------------------------*/
2065 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002066 wdiEventData.pEventData = pwdiStartScanParams;
2067 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2068 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 wdiEventData.pUserData = pUserData;
2070
2071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2072
2073}/*WDI_StartScanReq*/
2074
2075
2076/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 wants to end scanning for a particular channel that it
2079 had set before by calling Scan Start on the WLAN Device.
2080 Upon the call of this API the WLAN DAL will pack and
2081 send a HAL End Scan request message to the lower RIVA
2082 sub-system if DAL is in state STARTED.
2083
2084 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002086
2087 WDI_StartScanReq must have been called.
2088
Jeff Johnsone7245742012-09-05 17:12:55 -07002089 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002090 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002091
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 wdiEndScanRspCb: callback for passing back the response
2093 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002094
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002096 callback
2097
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 @see WDI_StartScanReq
2099 @return Result of the function call
2100*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002101WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002102WDI_EndScanReq
2103(
2104 WDI_EndScanReqParamsType* pwdiEndScanParams,
2105 WDI_EndScanRspCb wdiEndScanRspCb,
2106 void* pUserData
2107)
2108{
2109 WDI_EventInfoType wdiEventData;
2110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2111
2112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 ------------------------------------------------------------------------*/
2115 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2116 {
2117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2118 "WDI API call before module is initialized - Fail request");
2119
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 }
2122
2123 /*------------------------------------------------------------------------
2124 Fill in Event data and post to the Main FSM
2125 ------------------------------------------------------------------------*/
2126 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 wdiEventData.pEventData = pwdiEndScanParams;
2128 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2129 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 wdiEventData.pUserData = pUserData;
2131
2132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2133
2134}/*WDI_EndScanReq*/
2135
2136
2137/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002138 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 completed the scan process on the WLAN Device. Upon the
2140 call of this API the WLAN DAL will pack and send a HAL
2141 Finish Scan Request request message to the lower RIVA
2142 sub-system if DAL is in state STARTED.
2143
2144 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002145 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002146
2147 WDI_InitScanReq must have been called.
2148
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002151
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 wdiFinishScanRspCb: callback for passing back the
2153 response of the finish scan operation received from the
2154 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002155
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 callback
2158
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 @see WDI_InitScanReq
2160 @return Result of the function call
2161*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002162WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002163WDI_FinishScanReq
2164(
2165 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2166 WDI_FinishScanRspCb wdiFinishScanRspCb,
2167 void* pUserData
2168)
2169{
2170 WDI_EventInfoType wdiEventData;
2171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2172
2173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 ------------------------------------------------------------------------*/
2176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2177 {
2178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2179 "WDI API call before module is initialized - Fail request");
2180
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 }
2183
2184 /*------------------------------------------------------------------------
2185 Fill in Event data and post to the Main FSM
2186 ------------------------------------------------------------------------*/
2187 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 wdiEventData.pEventData = pwdiFinishScanParams;
2189 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2190 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002191 wdiEventData.pUserData = pUserData;
2192
2193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2194
2195}/*WDI_FinishScanReq*/
2196
Jeff Johnsone7245742012-09-05 17:12:55 -07002197/*========================================================================
2198
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002200
Jeff Johnson295189b2012-06-20 16:38:30 -07002201==========================================================================*/
2202
2203/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002204 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 to start an association procedure to a BSS. Upon the
2206 call of this API the WLAN DAL will pack and send a HAL
2207 Join request message to the lower RIVA sub-system if
2208 DAL is in state STARTED.
2209
2210 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002212
2213 WDI_Start must have been called.
2214
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002217
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 wdiJoinRspCb: callback for passing back the response of
2219 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002220
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002222 callback
2223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 @see WDI_Start
2225 @return Result of the function call
2226*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002227WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002228WDI_JoinReq
2229(
2230 WDI_JoinReqParamsType* pwdiJoinParams,
2231 WDI_JoinRspCb wdiJoinRspCb,
2232 void* pUserData
2233)
2234{
2235 WDI_EventInfoType wdiEventData;
2236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2237
2238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 ------------------------------------------------------------------------*/
2241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2242 {
2243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2244 "WDI API call before module is initialized - Fail request");
2245
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 }
2248
2249 /*------------------------------------------------------------------------
2250 Fill in Event data and post to the Main FSM
2251 ------------------------------------------------------------------------*/
2252 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 wdiEventData.pEventData = pwdiJoinParams;
2254 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2255 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 wdiEventData.pUserData = pUserData;
2257
2258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2259
2260}/*WDI_JoinReq*/
2261
2262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002264 wishes to configure the newly acquired or in process of
2265 being acquired BSS to the HW . Upon the call of this API
2266 the WLAN DAL will pack and send a HAL Config BSS request
2267 message to the lower RIVA sub-system if DAL is in state
2268 STARTED.
2269
2270 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002272
2273 WDI_JoinReq must have been called.
2274
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002277
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 wdiConfigBSSRspCb: callback for passing back the
2279 response of the config BSS operation received from the
2280 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 callback
2284
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 @see WDI_JoinReq
2286 @return Result of the function call
2287*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002288WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002289WDI_ConfigBSSReq
2290(
2291 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2292 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2293 void* pUserData
2294)
2295{
2296 WDI_EventInfoType wdiEventData;
2297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2298
2299 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 ------------------------------------------------------------------------*/
2302 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2303 {
2304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2305 "WDI API call before module is initialized - Fail request");
2306
Jeff Johnsone7245742012-09-05 17:12:55 -07002307 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 }
2309
2310 /*------------------------------------------------------------------------
2311 Fill in Event data and post to the Main FSM
2312 ------------------------------------------------------------------------*/
2313 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 wdiEventData.pEventData = pwdiConfigBSSParams;
2315 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2316 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002317 wdiEventData.pUserData = pUserData;
2318
2319 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2320
2321}/*WDI_ConfigBSSReq*/
2322
2323/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002324 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 disassociating from the BSS and wishes to notify HW.
2326 Upon the call of this API the WLAN DAL will pack and
2327 send a HAL Del BSS request message to the lower RIVA
2328 sub-system if DAL is in state STARTED.
2329
2330 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002331 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002332
2333 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2334
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002336 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002337
Jeff Johnson295189b2012-06-20 16:38:30 -07002338 wdiDelBSSRspCb: callback for passing back the response
2339 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002340
Jeff Johnson295189b2012-06-20 16:38:30 -07002341 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 callback
2343
2344 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002345 @return Result of the function call
2346*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002347WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002348WDI_DelBSSReq
2349(
2350 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2351 WDI_DelBSSRspCb wdiDelBSSRspCb,
2352 void* pUserData
2353)
2354{
2355 WDI_EventInfoType wdiEventData;
2356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2357
2358 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 ------------------------------------------------------------------------*/
2361 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2362 {
2363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2364 "WDI API call before module is initialized - Fail request");
2365
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 }
2368
2369 /*------------------------------------------------------------------------
2370 Fill in Event data and post to the Main FSM
2371 ------------------------------------------------------------------------*/
2372 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 wdiEventData.pEventData = pwdiDelBSSParams;
2374 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2375 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 wdiEventData.pUserData = pUserData;
2377
2378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2379
2380}/*WDI_DelBSSReq*/
2381
2382/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 associated to a BSS and wishes to configure HW for
2385 associated state. Upon the call of this API the WLAN DAL
2386 will pack and send a HAL Post Assoc request message to
2387 the lower RIVA sub-system if DAL is in state STARTED.
2388
2389 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002391
2392 WDI_JoinReq must have been called.
2393
2394 @param wdiPostAssocReqParams: the assoc parameters as specified
2395 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002396
Jeff Johnson295189b2012-06-20 16:38:30 -07002397 wdiPostAssocRspCb: callback for passing back the
2398 response of the post assoc operation received from the
2399 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002400
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 callback
2403
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 @see WDI_JoinReq
2405 @return Result of the function call
2406*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002407WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002408WDI_PostAssocReq
2409(
2410 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2411 WDI_PostAssocRspCb wdiPostAssocRspCb,
2412 void* pUserData
2413)
2414{
2415 WDI_EventInfoType wdiEventData;
2416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2417
2418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 ------------------------------------------------------------------------*/
2421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2422 {
2423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2424 "WDI API call before module is initialized - Fail request");
2425
Jeff Johnsone7245742012-09-05 17:12:55 -07002426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 }
2428
2429 /*------------------------------------------------------------------------
2430 Fill in Event data and post to the Main FSM
2431 ------------------------------------------------------------------------*/
2432 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002433 wdiEventData.pEventData = pwdiPostAssocReqParams;
2434 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2435 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002436 wdiEventData.pUserData = pUserData;
2437
2438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2439
2440}/*WDI_PostAssocReq*/
2441
2442/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 association with another STA has ended and the station
2445 must be deleted from HW. Upon the call of this API the
2446 WLAN DAL will pack and send a HAL Del STA request
2447 message to the lower RIVA sub-system if DAL is in state
2448 STARTED.
2449
2450 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002452
2453 WDI_PostAssocReq must have been called.
2454
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 wdiDelSTARspCb: callback for passing back the response
2459 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 callback
2463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 @see WDI_PostAssocReq
2465 @return Result of the function call
2466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002468WDI_DelSTAReq
2469(
2470 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2471 WDI_DelSTARspCb wdiDelSTARspCb,
2472 void* pUserData
2473)
2474{
2475 WDI_EventInfoType wdiEventData;
2476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2477
2478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 ------------------------------------------------------------------------*/
2481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2482 {
2483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2484 "WDI API call before module is initialized - Fail request");
2485
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 }
2488
2489 /*------------------------------------------------------------------------
2490 Fill in Event data and post to the Main FSM
2491 ------------------------------------------------------------------------*/
2492 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 wdiEventData.pEventData = pwdiDelSTAParams;
2494 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2495 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 wdiEventData.pUserData = pUserData;
2497
2498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2499
2500}/*WDI_DelSTAReq*/
2501
Jeff Johnsone7245742012-09-05 17:12:55 -07002502/*========================================================================
2503
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002505
Jeff Johnson295189b2012-06-20 16:38:30 -07002506==========================================================================*/
2507
2508/**
2509 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2510 install a BSS encryption key on the HW. Upon the call of this
2511 API the WLAN DAL will pack and send a Set BSS Key request
2512 message to the lower RIVA sub-system if DAL is in state
2513 STARTED.
2514
2515 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002516 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002517
2518 WDI_PostAssocReq must have been called.
2519
Jeff Johnsone7245742012-09-05 17:12:55 -07002520 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002522
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 wdiSetBSSKeyRspCb: callback for passing back the
2524 response of the set BSS Key operation received from the
2525 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002526
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 callback
2529
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 @see WDI_PostAssocReq
2531 @return Result of the function call
2532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002534WDI_SetBSSKeyReq
2535(
2536 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2537 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2538 void* pUserData
2539)
2540{
2541 WDI_EventInfoType wdiEventData;
2542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2543
2544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 ------------------------------------------------------------------------*/
2547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2548 {
2549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2550 "WDI API call before module is initialized - Fail request");
2551
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 }
2554
2555 /*------------------------------------------------------------------------
2556 Fill in Event data and post to the Main FSM
2557 ------------------------------------------------------------------------*/
2558 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2560 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2561 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 wdiEventData.pUserData = pUserData;
2563
2564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2565
2566}/*WDI_SetBSSKeyReq*/
2567
2568/**
2569 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2570 uninstall a BSS key from HW. Upon the call of this API the
2571 WLAN DAL will pack and send a HAL Remove BSS Key request
2572 message to the lower RIVA sub-system if DAL is in state
2573 STARTED.
2574
2575 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002577
2578 WDI_SetBSSKeyReq must have been called.
2579
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002582
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 wdiRemoveBSSKeyRspCb: callback for passing back the
2584 response of the remove BSS key operation received from
2585 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 callback
2589
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 @see WDI_SetBSSKeyReq
2591 @return Result of the function call
2592*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002593WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002594WDI_RemoveBSSKeyReq
2595(
2596 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2597 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2598 void* pUserData
2599)
2600{
2601 WDI_EventInfoType wdiEventData;
2602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2603
2604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 ------------------------------------------------------------------------*/
2607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2608 {
2609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2610 "WDI API call before module is initialized - Fail request");
2611
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 }
2614
2615 /*------------------------------------------------------------------------
2616 Fill in Event data and post to the Main FSM
2617 ------------------------------------------------------------------------*/
2618 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2620 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2621 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 wdiEventData.pUserData = pUserData;
2623
2624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2625
2626}/*WDI_RemoveBSSKeyReq*/
2627
2628
2629/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002631 ready to install a STA(ast) encryption key in HW. Upon
2632 the call of this API the WLAN DAL will pack and send a
2633 HAL Set STA Key request message to the lower RIVA
2634 sub-system if DAL is in state STARTED.
2635
2636 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002638
2639 WDI_PostAssocReq must have been called.
2640
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002643
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 wdiSetSTAKeyRspCb: callback for passing back the
2645 response of the set STA key operation received from the
2646 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002647
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 callback
2650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 @see WDI_PostAssocReq
2652 @return Result of the function call
2653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002655WDI_SetSTAKeyReq
2656(
2657 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2658 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2659 void* pUserData
2660)
2661{
2662 WDI_EventInfoType wdiEventData;
2663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2664
2665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 ------------------------------------------------------------------------*/
2668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2669 {
2670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2671 "WDI API call before module is initialized - Fail request");
2672
Jeff Johnsone7245742012-09-05 17:12:55 -07002673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 }
2675
2676 /*------------------------------------------------------------------------
2677 Fill in Event data and post to the Main FSM
2678 ------------------------------------------------------------------------*/
2679 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2681 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2682 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 wdiEventData.pUserData = pUserData;
2684
2685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2686
2687}/*WDI_SetSTAKeyReq*/
2688
2689
2690/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 wants to uninstall a previously set STA key in HW. Upon
2693 the call of this API the WLAN DAL will pack and send a
2694 HAL Remove STA Key request message to the lower RIVA
2695 sub-system if DAL is in state STARTED.
2696
2697 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002698 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002699
2700 WDI_SetSTAKeyReq must have been called.
2701
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002704
Jeff Johnson295189b2012-06-20 16:38:30 -07002705 wdiRemoveSTAKeyRspCb: callback for passing back the
2706 response of the remove STA key operation received from
2707 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002708
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002710 callback
2711
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 @see WDI_SetSTAKeyReq
2713 @return Result of the function call
2714*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002715WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002716WDI_RemoveSTAKeyReq
2717(
2718 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2719 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2720 void* pUserData
2721)
2722{
2723 WDI_EventInfoType wdiEventData;
2724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2725
2726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002728 ------------------------------------------------------------------------*/
2729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2730 {
2731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2732 "WDI API call before module is initialized - Fail request");
2733
Jeff Johnsone7245742012-09-05 17:12:55 -07002734 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002735 }
2736
2737 /*------------------------------------------------------------------------
2738 Fill in Event data and post to the Main FSM
2739 ------------------------------------------------------------------------*/
2740 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2742 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2743 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002744 wdiEventData.pUserData = pUserData;
2745
2746 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2747
2748}/*WDI_RemoveSTAKeyReq*/
2749
2750
2751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 wants to install a STA Bcast encryption key on the HW.
2754 Upon the call of this API the WLAN DAL will pack and
2755 send a HAL Start request message to the lower RIVA
2756 sub-system if DAL is in state STARTED.
2757
2758 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002759 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002760
2761 WDI_PostAssocReq must have been called.
2762
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002765
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 wdiSetSTABcastKeyRspCb: callback for passing back the
2767 response of the set BSS Key operation received from the
2768 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 callback
2772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 @see WDI_PostAssocReq
2774 @return Result of the function call
2775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002777WDI_SetSTABcastKeyReq
2778(
2779 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2780 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2781 void* pUserData
2782)
2783
2784{
2785 WDI_EventInfoType wdiEventData;
2786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2787
2788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 ------------------------------------------------------------------------*/
2791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2792 {
2793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2794 "WDI API call before module is initialized - Fail request");
2795
Jeff Johnsone7245742012-09-05 17:12:55 -07002796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 }
2798
2799 /*------------------------------------------------------------------------
2800 Fill in Event data and post to the Main FSM
2801 ------------------------------------------------------------------------*/
2802 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002803 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2804 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2805 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002806 wdiEventData.pUserData = pUserData;
2807
2808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2809
2810}/*WDI_SetSTABcastKeyReq*/
2811
2812/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002813 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002814 MAC wants to uninstall a STA Bcast key from HW. Upon the
2815 call of this API the WLAN DAL will pack and send a HAL
2816 Remove STA Bcast Key request message to the lower RIVA
2817 sub-system if DAL is in state STARTED.
2818
2819 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002820 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002821
2822 WDI_SetSTABcastKeyReq must have been called.
2823
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 parameters as specified by the Device
2826 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002827
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2829 response of the remove STA Bcast key operation received
2830 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002831
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 callback
2834
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 @see WDI_SetSTABcastKeyReq
2836 @return Result of the function call
2837*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002838WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002839WDI_RemoveSTABcastKeyReq
2840(
2841 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2842 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2843 void* pUserData
2844)
2845{
2846 WDI_EventInfoType wdiEventData;
2847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2848
2849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002850 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 ------------------------------------------------------------------------*/
2852 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2853 {
2854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2855 "WDI API call before module is initialized - Fail request");
2856
Jeff Johnsone7245742012-09-05 17:12:55 -07002857 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 }
2859
2860 /*------------------------------------------------------------------------
2861 Fill in Event data and post to the Main FSM
2862 ------------------------------------------------------------------------*/
2863 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002864 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2865 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2866 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002867 wdiEventData.pUserData = pUserData;
2868
2869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2870
2871}/*WDI_RemoveSTABcastKeyReq*/
2872
2873/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002874 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 MAC wants to set Max Tx Power to HW. Upon the
2876 call of this API the WLAN DAL will pack and send a HAL
2877 Remove STA Bcast Key request message to the lower RIVA
2878 sub-system if DAL is in state STARTED.
2879
2880 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002881 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002882
2883 WDI_SetSTABcastKeyReq must have been called.
2884
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 parameters as specified by the Device
2887 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002888
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2890 response of the remove STA Bcast key operation received
2891 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002892
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 callback
2895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 @see WDI_SetMaxTxPowerReq
2897 @return Result of the function call
2898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002900WDI_SetMaxTxPowerReq
2901(
2902 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2903 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2904 void* pUserData
2905)
2906{
2907 WDI_EventInfoType wdiEventData;
2908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2909
2910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002912 ------------------------------------------------------------------------*/
2913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2914 {
2915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2916 "WDI API call before module is initialized - Fail request");
2917
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 }
2920
2921 /*------------------------------------------------------------------------
2922 Fill in Event data and post to the Main FSM
2923 ------------------------------------------------------------------------*/
2924 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2926 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2927 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002928 wdiEventData.pUserData = pUserData;
2929
2930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2931}
2932
schangd82195a2013-03-13 18:41:24 -07002933/**
2934 @brief WDI_SetTxPowerReq will be called when the upper
2935 MAC wants to set Tx Power to HW.
2936 In state BUSY this request will be queued. Request won't
2937 be allowed in any other state.
2938
2939
2940 @param pwdiSetTxPowerParams: set TS Power parameters
2941 BSSID and target TX Power with dbm included
2942
2943 wdiReqStatusCb: callback for passing back the response
2944
2945 pUserData: user data will be passed back with the
2946 callback
2947
2948 @return Result of the function call
2949*/
2950WDI_Status
2951WDI_SetTxPowerReq
2952(
2953 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2954 WDA_SetTxPowerRspCb wdiReqStatusCb,
2955 void* pUserData
2956)
2957{
2958 WDI_EventInfoType wdiEventData;
2959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2960
2961 /*------------------------------------------------------------------------
2962 Sanity Check
2963 ------------------------------------------------------------------------*/
2964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2965 {
2966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2967 "WDI API call before module is initialized - Fail request");
2968
2969 return WDI_STATUS_E_NOT_ALLOWED;
2970 }
2971
2972 /*------------------------------------------------------------------------
2973 Fill in Event data and post to the Main FSM
2974 ------------------------------------------------------------------------*/
2975 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2976 wdiEventData.pEventData = pwdiSetTxPowerParams;
2977 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2978 wdiEventData.pCBfnc = wdiReqStatusCb;
2979 wdiEventData.pUserData = pUserData;
2980
2981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2982}
2983
Jeff Johnson295189b2012-06-20 16:38:30 -07002984#ifdef FEATURE_WLAN_CCX
2985WDI_Status
2986WDI_TSMStatsReq
2987(
2988 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2989 WDI_TsmRspCb wdiReqStatusCb,
2990 void* pUserData
2991)
2992{
2993 WDI_EventInfoType wdiEventData;
2994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002995 /*------------------------------------------------------------------------
2996 Sanity Check
2997 ------------------------------------------------------------------------*/
2998 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2999 {
3000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3001 "WDI API call before module is initialized - Fail request");
3002
3003 return WDI_STATUS_E_NOT_ALLOWED;
3004 }
3005
3006 /*------------------------------------------------------------------------
3007 Fill in Event data and post to the Main FSM
3008 ------------------------------------------------------------------------*/
3009 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3010 wdiEventData.pEventData = pwdiTsmReqParams;
3011 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3012 wdiEventData.pCBfnc = wdiReqStatusCb;
3013 wdiEventData.pUserData = pUserData;
3014
3015 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3016
3017}
3018#endif
3019
3020/*========================================================================
3021
3022 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003023
Jeff Johnson295189b2012-06-20 16:38:30 -07003024==========================================================================*/
3025
3026/**
3027 @brief WDI_AddTSReq will be called when the upper MAC to inform
3028 the device of a successful add TSpec negotiation. HW
3029 needs to receive the TSpec Info from the UMAC in order
3030 to configure properly the QoS data traffic. Upon the
3031 call of this API the WLAN DAL will pack and send a HAL
3032 Add TS request message to the lower RIVA sub-system if
3033 DAL is in state STARTED.
3034
3035 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003036 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003037
3038 WDI_PostAssocReq must have been called.
3039
3040 @param wdiAddTsReqParams: the add TS parameters as specified by
3041 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003042
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 wdiAddTsRspCb: callback for passing back the response of
3044 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003045
Jeff Johnson295189b2012-06-20 16:38:30 -07003046 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 callback
3048
Jeff Johnson295189b2012-06-20 16:38:30 -07003049 @see WDI_PostAssocReq
3050 @return Result of the function call
3051*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003052WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003053WDI_AddTSReq
3054(
3055 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3056 WDI_AddTsRspCb wdiAddTsRspCb,
3057 void* pUserData
3058)
3059{
3060 WDI_EventInfoType wdiEventData;
3061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3062
3063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 ------------------------------------------------------------------------*/
3066 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3067 {
3068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3069 "WDI API call before module is initialized - Fail request");
3070
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 }
3073
3074 /*------------------------------------------------------------------------
3075 Fill in Event data and post to the Main FSM
3076 ------------------------------------------------------------------------*/
3077 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 wdiEventData.pEventData = pwdiAddTsReqParams;
3079 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3080 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003081 wdiEventData.pUserData = pUserData;
3082
3083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3084
3085}/*WDI_AddTSReq*/
3086
3087
3088
3089/**
3090 @brief WDI_DelTSReq will be called when the upper MAC has ended
3091 admission on a specific AC. This is to inform HW that
3092 QoS traffic parameters must be rest. Upon the call of
3093 this API the WLAN DAL will pack and send a HAL Del TS
3094 request message to the lower RIVA sub-system if DAL is
3095 in state STARTED.
3096
3097 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003098 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003099
3100 WDI_AddTSReq must have been called.
3101
3102 @param wdiDelTsReqParams: the del TS parameters as specified by
3103 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003104
Jeff Johnson295189b2012-06-20 16:38:30 -07003105 wdiDelTsRspCb: callback for passing back the response of
3106 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003107
Jeff Johnson295189b2012-06-20 16:38:30 -07003108 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003109 callback
3110
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 @see WDI_AddTSReq
3112 @return Result of the function call
3113*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003114WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003115WDI_DelTSReq
3116(
3117 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3118 WDI_DelTsRspCb wdiDelTsRspCb,
3119 void* pUserData
3120)
3121{
3122 WDI_EventInfoType wdiEventData;
3123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3124
3125 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003126 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 ------------------------------------------------------------------------*/
3128 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3129 {
3130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3131 "WDI API call before module is initialized - Fail request");
3132
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 }
3135
3136 /*------------------------------------------------------------------------
3137 Fill in Event data and post to the Main FSM
3138 ------------------------------------------------------------------------*/
3139 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 wdiEventData.pEventData = pwdiDelTsReqParams;
3141 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3142 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003143 wdiEventData.pUserData = pUserData;
3144
3145 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3146
3147}/*WDI_DelTSReq*/
3148
3149
3150
3151/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 wishes to update the EDCA parameters used by HW for QoS
3154 data traffic. Upon the call of this API the WLAN DAL
3155 will pack and send a HAL Update EDCA Params request
3156 message to the lower RIVA sub-system if DAL is in state
3157 STARTED.
3158
3159 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003160 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003161
3162 WDI_PostAssocReq must have been called.
3163
Jeff Johnsone7245742012-09-05 17:12:55 -07003164 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003166
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 wdiUpdateEDCAParamsRspCb: callback for passing back the
3168 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003169
Jeff Johnson295189b2012-06-20 16:38:30 -07003170 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 callback
3172
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 @see WDI_PostAssocReq
3174 @return Result of the function call
3175*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003176WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003177WDI_UpdateEDCAParams
3178(
3179 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3180 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3181 void* pUserData
3182)
3183{
3184 WDI_EventInfoType wdiEventData;
3185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3186
3187 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 ------------------------------------------------------------------------*/
3190 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3191 {
3192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3193 "WDI API call before module is initialized - Fail request");
3194
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003196 }
3197
3198 /*------------------------------------------------------------------------
3199 Fill in Event data and post to the Main FSM
3200 ------------------------------------------------------------------------*/
3201 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003202 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3203 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3204 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 wdiEventData.pUserData = pUserData;
3206
3207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3208
3209}/*WDI_UpdateEDCAParams*/
3210
3211
3212/**
3213 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3214 successfully a BA session and needs to notify the HW for
3215 the appropriate settings to take place. Upon the call of
3216 this API the WLAN DAL will pack and send a HAL Add BA
3217 request message to the lower RIVA sub-system if DAL is
3218 in state STARTED.
3219
3220 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003221 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003222
3223 WDI_PostAssocReq must have been called.
3224
3225 @param wdiAddBAReqParams: the add BA parameters as specified by
3226 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003227
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 wdiAddBARspCb: callback for passing back the response of
3229 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003230
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 callback
3233
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 @see WDI_PostAssocReq
3235 @return Result of the function call
3236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003238WDI_AddBASessionReq
3239(
3240 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3241 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3242 void* pUserData
3243)
3244{
3245 WDI_EventInfoType wdiEventData;
3246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3247
3248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003250 ------------------------------------------------------------------------*/
3251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3252 {
3253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3254 "WDI API call before module is initialized - Fail request");
3255
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 }
3258
3259 /*------------------------------------------------------------------------
3260 Fill in Event data and post to the Main FSM
3261 ------------------------------------------------------------------------*/
3262 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3264 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3265 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 wdiEventData.pUserData = pUserData;
3267
3268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3269
3270}/*WDI_AddBASessionReq*/
3271
3272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 inform HW that it has deleted a previously created BA
3275 session. Upon the call of this API the WLAN DAL will
3276 pack and send a HAL Del BA request message to the lower
3277 RIVA sub-system if DAL is in state STARTED.
3278
3279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003281
3282 WDI_AddBAReq must have been called.
3283
3284 @param wdiDelBAReqParams: the del BA parameters as specified by
3285 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003286
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 wdiDelBARspCb: callback for passing back the response of
3288 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003289
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003291 callback
3292
Jeff Johnson295189b2012-06-20 16:38:30 -07003293 @see WDI_AddBAReq
3294 @return Result of the function call
3295*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003296WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003297WDI_DelBAReq
3298(
3299 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3300 WDI_DelBARspCb wdiDelBARspCb,
3301 void* pUserData
3302)
3303{
3304 WDI_EventInfoType wdiEventData;
3305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3306
3307 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 ------------------------------------------------------------------------*/
3310 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3311 {
3312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3313 "WDI API call before module is initialized - Fail request");
3314
Jeff Johnsone7245742012-09-05 17:12:55 -07003315 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 }
3317
3318 /*------------------------------------------------------------------------
3319 Fill in Event data and post to the Main FSM
3320 ------------------------------------------------------------------------*/
3321 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003322 wdiEventData.pEventData = pwdiDelBAReqParams;
3323 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3324 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003325 wdiEventData.pUserData = pUserData;
3326
3327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3328
3329}/*WDI_DelBAReq*/
3330
Jeff Johnsone7245742012-09-05 17:12:55 -07003331/*========================================================================
3332
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003334
Jeff Johnson295189b2012-06-20 16:38:30 -07003335==========================================================================*/
3336
3337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 wants to set the power save related configurations of
3340 the WLAN Device. Upon the call of this API the WLAN DAL
3341 will pack and send a HAL Update CFG request message to
3342 the lower RIVA sub-system if DAL is in state STARTED.
3343
3344 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003345 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003346
3347 WDI_Start must have been called.
3348
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003351
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 wdiSetPwrSaveCfgCb: callback for passing back the
3353 response of the set power save cfg operation received
3354 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003355
Jeff Johnson295189b2012-06-20 16:38:30 -07003356 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003357 callback
3358
Jeff Johnson295189b2012-06-20 16:38:30 -07003359 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 @return Result of the function call
3361*/
3362WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003363WDI_SetPwrSaveCfgReq
3364(
3365 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3366 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3367 void* pUserData
3368)
3369{
3370 WDI_EventInfoType wdiEventData;
3371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3372
3373 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003375 ------------------------------------------------------------------------*/
3376 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3377 {
3378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3379 "WDI API call before module is initialized - Fail request");
3380
Jeff Johnsone7245742012-09-05 17:12:55 -07003381 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003382 }
3383
3384 /*------------------------------------------------------------------------
3385 Fill in Event data and post to the Main FSM
3386 ------------------------------------------------------------------------*/
3387 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 wdiEventData.pEventData = pwdiPowerSaveCfg;
3389 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3390 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 wdiEventData.pUserData = pUserData;
3392
3393 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3394
3395}/*WDI_SetPwrSaveCfgReq*/
3396
3397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003398 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003399 request the device to get into IMPS power state. Upon
3400 the call of this API the WLAN DAL will send a HAL Enter
3401 IMPS request message to the lower RIVA sub-system if DAL
3402 is in state STARTED.
3403
3404 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003406
Jeff Johnsone7245742012-09-05 17:12:55 -07003407
3408 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 response of the Enter IMPS operation received from the
3410 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003413 callback
3414
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 @see WDI_Start
3416 @return Result of the function call
3417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003419WDI_EnterImpsReq
3420(
3421 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3422 void* pUserData
3423)
3424{
3425 WDI_EventInfoType wdiEventData;
3426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3427
3428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 ------------------------------------------------------------------------*/
3431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3432 {
3433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3434 "WDI API call before module is initialized - Fail request");
3435
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 }
3438
3439 /*------------------------------------------------------------------------
3440 Fill in Event data and post to the Main FSM
3441 ------------------------------------------------------------------------*/
3442 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 wdiEventData.pEventData = NULL;
3444 wdiEventData.uEventDataSize = 0;
3445 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003446 wdiEventData.pUserData = pUserData;
3447
3448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3449
3450}/*WDI_EnterImpsReq*/
3451
3452/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003453 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003454 request the device to get out of IMPS power state. Upon
3455 the call of this API the WLAN DAL will send a HAL Exit
3456 IMPS request message to the lower RIVA sub-system if DAL
3457 is in state STARTED.
3458
3459 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003461
Jeff Johnson295189b2012-06-20 16:38:30 -07003462
Jeff Johnsone7245742012-09-05 17:12:55 -07003463
3464 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003466
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003468 callback
3469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 @see WDI_Start
3471 @return Result of the function call
3472*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003474WDI_ExitImpsReq
3475(
3476 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3477 void* pUserData
3478)
3479{
3480 WDI_EventInfoType wdiEventData;
3481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3482
3483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003485 ------------------------------------------------------------------------*/
3486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3487 {
3488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3489 "WDI API call before module is initialized - Fail request");
3490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 }
3493
3494 /*------------------------------------------------------------------------
3495 Fill in Event data and post to the Main FSM
3496 ------------------------------------------------------------------------*/
3497 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 wdiEventData.pEventData = NULL;
3499 wdiEventData.uEventDataSize = 0;
3500 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiEventData.pUserData = pUserData;
3502
3503 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3504
3505}/*WDI_ExitImpsReq*/
3506
3507/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 request the device to get into BMPS power state. Upon
3510 the call of this API the WLAN DAL will pack and send a
3511 HAL Enter BMPS request message to the lower RIVA
3512 sub-system if DAL is in state STARTED.
3513
3514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003516
3517 WDI_PostAssocReq must have been called.
3518
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003521
Jeff Johnson295189b2012-06-20 16:38:30 -07003522 wdiEnterBmpsRspCb: callback for passing back the
3523 response of the Enter BMPS operation received from the
3524 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003525
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003527 callback
3528
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 @see WDI_PostAssocReq
3530 @return Result of the function call
3531*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003532WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003533WDI_EnterBmpsReq
3534(
3535 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3536 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3537 void* pUserData
3538)
3539{
3540 WDI_EventInfoType wdiEventData;
3541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3542
3543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003544 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 ------------------------------------------------------------------------*/
3546 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3547 {
3548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3549 "WDI API call before module is initialized - Fail request");
3550
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 }
3553
3554 /*------------------------------------------------------------------------
3555 Fill in Event data and post to the Main FSM
3556 ------------------------------------------------------------------------*/
3557 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3559 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3560 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 wdiEventData.pUserData = pUserData;
3562
3563 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3564
3565}/*WDI_EnterBmpsReq*/
3566
3567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 request the device to get out of BMPS power state. Upon
3570 the call of this API the WLAN DAL will pack and send a
3571 HAL Exit BMPS request message to the lower RIVA
3572 sub-system if DAL is in state STARTED.
3573
3574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003576
3577 WDI_PostAssocReq must have been called.
3578
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003581
Jeff Johnson295189b2012-06-20 16:38:30 -07003582 wdiExitBmpsRspCb: callback for passing back the response
3583 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003584
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 callback
3587
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 @see WDI_PostAssocReq
3589 @return Result of the function call
3590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003592WDI_ExitBmpsReq
3593(
3594 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3595 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3596 void* pUserData
3597)
3598{
3599 WDI_EventInfoType wdiEventData;
3600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3601
3602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 ------------------------------------------------------------------------*/
3605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3606 {
3607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3608 "WDI API call before module is initialized - Fail request");
3609
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 }
3612
3613 /*------------------------------------------------------------------------
3614 Fill in Event data and post to the Main FSM
3615 ------------------------------------------------------------------------*/
3616 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003617 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3618 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3619 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 wdiEventData.pUserData = pUserData;
3621
3622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3623
3624}/*WDI_ExitBmpsReq*/
3625
3626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 request the device to get into UAPSD power state. Upon
3629 the call of this API the WLAN DAL will pack and send a
3630 HAL Enter UAPSD request message to the lower RIVA
3631 sub-system if DAL is in state STARTED.
3632
3633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003635
3636 WDI_PostAssocReq must have been called.
3637 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003638
3639 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003641
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 wdiEnterUapsdRspCb: callback for passing back the
3643 response of the Enter UAPSD operation received from the
3644 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003645
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 callback
3648
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3650 @return Result of the function call
3651*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003652WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003653WDI_EnterUapsdReq
3654(
3655 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3656 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3657 void* pUserData
3658)
3659{
3660 WDI_EventInfoType wdiEventData;
3661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3662
3663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 ------------------------------------------------------------------------*/
3666 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3667 {
3668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3669 "WDI API call before module is initialized - Fail request");
3670
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 }
3673
3674 /*------------------------------------------------------------------------
3675 Fill in Event data and post to the Main FSM
3676 ------------------------------------------------------------------------*/
3677 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3679 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3680 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 wdiEventData.pUserData = pUserData;
3682
3683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3684
3685}/*WDI_EnterUapsdReq*/
3686
3687/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 request the device to get out of UAPSD power state. Upon
3690 the call of this API the WLAN DAL will send a HAL Exit
3691 UAPSD request message to the lower RIVA sub-system if
3692 DAL is in state STARTED.
3693
3694 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003696
3697 WDI_PostAssocReq must have been called.
3698
Jeff Johnsone7245742012-09-05 17:12:55 -07003699 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003700 response of the Exit UAPSD operation received from the
3701 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003702
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003704 callback
3705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 @see WDI_PostAssocReq
3707 @return Result of the function call
3708*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003710WDI_ExitUapsdReq
3711(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003712 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3714 void* pUserData
3715)
3716{
3717 WDI_EventInfoType wdiEventData;
3718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3719
3720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 ------------------------------------------------------------------------*/
3723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3724 {
3725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3726 "WDI API call before module is initialized - Fail request");
3727
Jeff Johnsone7245742012-09-05 17:12:55 -07003728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003729 }
3730
3731 /*------------------------------------------------------------------------
3732 Fill in Event data and post to the Main FSM
3733 ------------------------------------------------------------------------*/
3734 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003735 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3736 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 wdiEventData.pUserData = pUserData;
3739
3740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3741
3742}/*WDI_ExitUapsdReq*/
3743
3744/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 MAC wants to set the UAPSD related configurations
3747 of an associated STA (while acting as an AP) to the WLAN
3748 Device. Upon the call of this API the WLAN DAL will pack
3749 and send a HAL Update UAPSD params request message to
3750 the lower RIVA sub-system if DAL is in state STARTED.
3751
3752 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003754
3755 WDI_ConfigBSSReq must have been called.
3756
Jeff Johnsone7245742012-09-05 17:12:55 -07003757 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003759
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 wdiUpdateUapsdParamsCb: callback for passing back the
3761 response of the update UAPSD params operation received
3762 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003763
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 callback
3766
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 @see WDI_ConfigBSSReq
3768 @return Result of the function call
3769*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003771WDI_UpdateUapsdParamsReq
3772(
3773 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3774 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3775 void* pUserData
3776)
3777{
3778 WDI_EventInfoType wdiEventData;
3779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3780
3781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 ------------------------------------------------------------------------*/
3784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3785 {
3786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3787 "WDI API call before module is initialized - Fail request");
3788
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 }
3791
3792 /*------------------------------------------------------------------------
3793 Fill in Event data and post to the Main FSM
3794 ------------------------------------------------------------------------*/
3795 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003797 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 wdiEventData.pUserData = pUserData;
3800
3801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3802
3803}/*WDI_UpdateUapsdParamsReq*/
3804
3805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 MAC wants to set the UAPSD related configurations before
3808 requesting for enter UAPSD power state to the WLAN
3809 Device. Upon the call of this API the WLAN DAL will pack
3810 and send a HAL Set UAPSD params request message to
3811 the lower RIVA sub-system if DAL is in state STARTED.
3812
3813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003815
3816 WDI_PostAssocReq must have been called.
3817
3818 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3819 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003820
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 wdiSetUapsdAcParamsCb: callback for passing back the
3822 response of the set UAPSD params operation received from
3823 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 callback
3827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 @see WDI_PostAssocReq
3829 @return Result of the function call
3830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003832WDI_SetUapsdAcParamsReq
3833(
3834 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3835 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3836 void* pUserData
3837)
3838{
3839 WDI_EventInfoType wdiEventData;
3840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3841
3842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 ------------------------------------------------------------------------*/
3845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3846 {
3847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3848 "WDI API call before module is initialized - Fail request");
3849
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 }
3852
3853 /*------------------------------------------------------------------------
3854 Fill in Event data and post to the Main FSM
3855 ------------------------------------------------------------------------*/
3856 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 wdiEventData.pEventData = pwdiUapsdInfo;
3858 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3859 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 wdiEventData.pUserData = pUserData;
3861
3862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3863
3864}/*WDI_SetUapsdAcParamsReq*/
3865
3866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 MAC wants to set/reset the RXP filters for received pkts
3869 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3870 and send a HAL configure RXP filter request message to
3871 the lower RIVA sub-system.
3872
3873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003875
Jeff Johnsone7245742012-09-05 17:12:55 -07003876
3877 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 filter as specified by the Device
3879 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003880
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 wdiConfigureRxpFilterCb: callback for passing back the
3882 response of the configure RXP filter operation received
3883 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 callback
3887
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 @return Result of the function call
3889*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003891WDI_ConfigureRxpFilterReq
3892(
3893 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3894 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3895 void* pUserData
3896)
3897{
3898 WDI_EventInfoType wdiEventData;
3899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3900
3901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 ------------------------------------------------------------------------*/
3904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3905 {
3906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3907 "WDI API call before module is initialized - Fail request");
3908
Jeff Johnsone7245742012-09-05 17:12:55 -07003909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 }
3911
3912 /*------------------------------------------------------------------------
3913 Fill in Event data and post to the Main FSM
3914 ------------------------------------------------------------------------*/
3915 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3917 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3918 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003919 wdiEventData.pUserData = pUserData;
3920
3921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3922}/*WDI_ConfigureRxpFilterReq*/
3923
3924/**
3925 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3926 wants to set the beacon filters while in power save.
3927 Upon the call of this API the WLAN DAL will pack and
3928 send a Beacon filter request message to the
3929 lower RIVA sub-system.
3930
3931 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003933
Jeff Johnsone7245742012-09-05 17:12:55 -07003934
3935 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 filter as specified by the Device
3937 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003938
Jeff Johnson295189b2012-06-20 16:38:30 -07003939 wdiBeaconFilterCb: callback for passing back the
3940 response of the set beacon filter operation received
3941 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003942
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003944 callback
3945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 @return Result of the function call
3947*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003948WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003949WDI_SetBeaconFilterReq
3950(
3951 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3952 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3953 void* pUserData
3954)
3955{
3956 WDI_EventInfoType wdiEventData;
3957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3958
3959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 ------------------------------------------------------------------------*/
3962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3963 {
3964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3965 "WDI API call before module is initialized - Fail request");
3966
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 }
3969
3970 /*------------------------------------------------------------------------
3971 Fill in Event data and post to the Main FSM
3972 ------------------------------------------------------------------------*/
3973 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003975 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 wdiEventData.pUserData = pUserData;
3978
3979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3980}/*WDI_SetBeaconFilterReq*/
3981
3982/**
3983 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3984 wants to remove the beacon filter for particular IE
3985 while in power save. Upon the call of this API the WLAN
3986 DAL will pack and send a remove Beacon filter request
3987 message to the lower RIVA sub-system.
3988
3989 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003991
Jeff Johnsone7245742012-09-05 17:12:55 -07003992
3993 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 filter as specified by the Device
3995 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003996
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 wdiBeaconFilterCb: callback for passing back the
3998 response of the remove beacon filter operation received
3999 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004000
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 callback
4003
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 @return Result of the function call
4005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004007WDI_RemBeaconFilterReq
4008(
4009 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4010 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4011 void* pUserData
4012)
4013{
4014 WDI_EventInfoType wdiEventData;
4015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4016
4017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 ------------------------------------------------------------------------*/
4020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4021 {
4022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4023 "WDI API call before module is initialized - Fail request");
4024
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 }
4027
4028 /*------------------------------------------------------------------------
4029 Fill in Event data and post to the Main FSM
4030 ------------------------------------------------------------------------*/
4031 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004033 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 wdiEventData.pUserData = pUserData;
4036
4037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4038}/*WDI_RemBeaconFilterReq*/
4039
4040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004041 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 MAC wants to set the RSSI thresholds related
4043 configurations while in power save. Upon the call of
4044 this API the WLAN DAL will pack and send a HAL Set RSSI
4045 thresholds request message to the lower RIVA
4046 sub-system if DAL is in state STARTED.
4047
4048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004050
4051 WDI_PostAssocReq must have been called.
4052
4053 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4054 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004055
Jeff Johnson295189b2012-06-20 16:38:30 -07004056 wdiSetUapsdAcParamsCb: callback for passing back the
4057 response of the set UAPSD params operation received from
4058 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004059
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 callback
4062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 @see WDI_PostAssocReq
4064 @return Result of the function call
4065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004067WDI_SetRSSIThresholdsReq
4068(
4069 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4070 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4071 void* pUserData
4072)
4073{
4074 WDI_EventInfoType wdiEventData;
4075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4076
4077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 ------------------------------------------------------------------------*/
4080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4081 {
4082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4083 "WDI API call before module is initialized - Fail request");
4084
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 }
4087
4088 /*------------------------------------------------------------------------
4089 Fill in Event data and post to the Main FSM
4090 ------------------------------------------------------------------------*/
4091 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004093 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 wdiEventData.pUserData = pUserData;
4096
4097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4098}/* WDI_SetRSSIThresholdsReq*/
4099
4100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 wants to set the filter to minimize unnecessary host
4103 wakeup due to broadcast traffic while in power save.
4104 Upon the call of this API the WLAN DAL will pack and
4105 send a HAL host offload request message to the
4106 lower RIVA sub-system if DAL is in state STARTED.
4107
4108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004110
4111 WDI_PostAssocReq must have been called.
4112
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 wdiHostOffloadCb: callback for passing back the response
4117 of the host offload operation received from the
4118 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_PostAssocReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_HostOffloadReq
4128(
4129 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4130 WDI_HostOffloadCb wdiHostOffloadCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004153 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158}/*WDI_HostOffloadReq*/
4159
4160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 @brief WDI_KeepAliveReq will be called when the upper MAC
4162 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 and minimize unnecessary host wakeups due to while in power save.
4164 Upon the call of this API the WLAN DAL will pack and
4165 send a HAL Keep Alive request message to the
4166 lower RIVA sub-system if DAL is in state STARTED.
4167
4168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004170
4171 WDI_PostAssocReq must have been called.
4172
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004175
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 wdiKeepAliveCb: callback for passing back the response
4177 of the Keep Alive operation received from the
4178 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004179
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 callback
4182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 @see WDI_PostAssocReq
4184 @return Result of the function call
4185*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004186WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004187WDI_KeepAliveReq
4188(
4189 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4190 WDI_KeepAliveCb wdiKeepAliveCb,
4191 void* pUserData
4192)
4193{
4194 WDI_EventInfoType wdiEventData;
4195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4196
4197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 ------------------------------------------------------------------------*/
4200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4201 {
4202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4203 "WDI_KeepAliveReq: WDI API call before module "
4204 "is initialized - Fail request");
4205
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 }
4208
4209 /*------------------------------------------------------------------------
4210 Fill in Event data and post to the Main FSM
4211 ------------------------------------------------------------------------*/
4212 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 wdiEventData.pEventData = pwdiKeepAliveParams;
4214 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4215 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 wdiEventData.pUserData = pUserData;
4217
4218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4219}/*WDI_KeepAliveReq*/
4220
4221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wants to set the Wowl Bcast ptrn to minimize unnecessary
4224 host wakeup due to broadcast traffic while in power
4225 save. Upon the call of this API the WLAN DAL will pack
4226 and send a HAL Wowl Bcast ptrn request message to the
4227 lower RIVA sub-system if DAL is in state STARTED.
4228
4229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004231
4232 WDI_PostAssocReq must have been called.
4233
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004235 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004236
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 wdiWowlAddBcPtrnCb: callback for passing back the
4238 response of the add Wowl bcast ptrn operation received
4239 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004242 callback
4243
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 @see WDI_PostAssocReq
4245 @return Result of the function call
4246*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004248WDI_WowlAddBcPtrnReq
4249(
4250 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4251 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4252 void* pUserData
4253)
4254{
4255 WDI_EventInfoType wdiEventData;
4256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4257
4258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004260 ------------------------------------------------------------------------*/
4261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4262 {
4263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4264 "WDI API call before module is initialized - Fail request");
4265
Jeff Johnsone7245742012-09-05 17:12:55 -07004266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 }
4268
4269 /*------------------------------------------------------------------------
4270 Fill in Event data and post to the Main FSM
4271 ------------------------------------------------------------------------*/
4272 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004273 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004274 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004275 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 wdiEventData.pUserData = pUserData;
4277
4278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4279}/*WDI_WowlAddBcPtrnReq*/
4280
4281/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 wants to clear the Wowl Bcast ptrn. Upon the call of
4284 this API the WLAN DAL will pack and send a HAL delete
4285 Wowl Bcast ptrn request message to the lower RIVA
4286 sub-system if DAL is in state STARTED.
4287
4288 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004290
4291 WDI_WowlAddBcPtrnReq must have been called.
4292
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004295
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 wdiWowlDelBcPtrnCb: callback for passing back the
4297 response of the del Wowl bcast ptrn operation received
4298 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004301 callback
4302
Jeff Johnson295189b2012-06-20 16:38:30 -07004303 @see WDI_WowlAddBcPtrnReq
4304 @return Result of the function call
4305*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004306WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004307WDI_WowlDelBcPtrnReq
4308(
4309 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4310 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4311 void* pUserData
4312)
4313{
4314 WDI_EventInfoType wdiEventData;
4315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4316
4317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004318 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 ------------------------------------------------------------------------*/
4320 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4321 {
4322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4323 "WDI API call before module is initialized - Fail request");
4324
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 }
4327
4328 /*------------------------------------------------------------------------
4329 Fill in Event data and post to the Main FSM
4330 ------------------------------------------------------------------------*/
4331 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004333 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 wdiEventData.pUserData = pUserData;
4336
4337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4338}/*WDI_WowlDelBcPtrnReq*/
4339
4340/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004341 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 wants to enter the Wowl state to minimize unnecessary
4343 host wakeup while in power save. Upon the call of this
4344 API the WLAN DAL will pack and send a HAL Wowl enter
4345 request message to the lower RIVA sub-system if DAL is
4346 in state STARTED.
4347
4348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004350
4351 WDI_PostAssocReq must have been called.
4352
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004355
Jeff Johnson295189b2012-06-20 16:38:30 -07004356 wdiWowlEnterReqCb: callback for passing back the
4357 response of the enter Wowl operation received from the
4358 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004361 callback
4362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 @see WDI_PostAssocReq
4364 @return Result of the function call
4365*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004366WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004367WDI_WowlEnterReq
4368(
4369 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4370 WDI_WowlEnterReqCb wdiWowlEnterCb,
4371 void* pUserData
4372)
4373{
4374 WDI_EventInfoType wdiEventData;
4375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4376
4377 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 ------------------------------------------------------------------------*/
4380 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4381 {
4382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4383 "WDI API call before module is initialized - Fail request");
4384
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 }
4387
4388 /*------------------------------------------------------------------------
4389 Fill in Event data and post to the Main FSM
4390 ------------------------------------------------------------------------*/
4391 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004393 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004394 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 wdiEventData.pUserData = pUserData;
4396
4397 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4398}/*WDI_WowlEnterReq*/
4399
4400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 wants to exit the Wowl state. Upon the call of this API
4403 the WLAN DAL will pack and send a HAL Wowl exit request
4404 message to the lower RIVA sub-system if DAL is in state
4405 STARTED.
4406
4407 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004408 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004409
4410 WDI_WowlEnterReq must have been called.
4411
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004413 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004414
Jeff Johnson295189b2012-06-20 16:38:30 -07004415 wdiWowlExitReqCb: callback for passing back the response
4416 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004417
Jeff Johnson295189b2012-06-20 16:38:30 -07004418 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 callback
4420
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 @see WDI_WowlEnterReq
4422 @return Result of the function call
4423*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004425WDI_WowlExitReq
4426(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004427 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004428 WDI_WowlExitReqCb wdiWowlExitCb,
4429 void* pUserData
4430)
4431{
4432 WDI_EventInfoType wdiEventData;
4433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4434
4435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004437 ------------------------------------------------------------------------*/
4438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4439 {
4440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4441 "WDI API call before module is initialized - Fail request");
4442
Jeff Johnsone7245742012-09-05 17:12:55 -07004443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004444 }
4445
4446 /*------------------------------------------------------------------------
4447 Fill in Event data and post to the Main FSM
4448 ------------------------------------------------------------------------*/
4449 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004450 wdiEventData.pEventData = pwdiWowlExitParams;
4451 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 wdiEventData.pUserData = pUserData;
4454
4455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4456}/*WDI_WowlExitReq*/
4457
4458/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004460 the upper MAC wants to dynamically adjusts the listen
4461 interval based on the WLAN/MSM activity. Upon the call
4462 of this API the WLAN DAL will pack and send a HAL
4463 configure Apps Cpu Wakeup State request message to the
4464 lower RIVA sub-system.
4465
4466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004468
Jeff Johnsone7245742012-09-05 17:12:55 -07004469
4470 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 Apps Cpu Wakeup State as specified by the
4472 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004473
Jeff Johnson295189b2012-06-20 16:38:30 -07004474 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4475 back the response of the configure Apps Cpu Wakeup State
4476 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004477
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 callback
4480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 @return Result of the function call
4482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004484WDI_ConfigureAppsCpuWakeupStateReq
4485(
4486 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4487 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4488 void* pUserData
4489)
4490{
4491 WDI_EventInfoType wdiEventData;
4492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4493
4494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 ------------------------------------------------------------------------*/
4497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4498 {
4499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4500 "WDI API call before module is initialized - Fail request");
4501
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 }
4504
4505 /*------------------------------------------------------------------------
4506 Fill in Event data and post to the Main FSM
4507 ------------------------------------------------------------------------*/
4508 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4510 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4511 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 wdiEventData.pUserData = pUserData;
4513
4514 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4515}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4516/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004517 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004518 to to perform a flush operation on a given AC. Upon the
4519 call of this API the WLAN DAL will pack and send a HAL
4520 Flush AC request message to the lower RIVA sub-system if
4521 DAL is in state STARTED.
4522
4523 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004524 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004525
4526 WDI_AddBAReq must have been called.
4527
Jeff Johnsone7245742012-09-05 17:12:55 -07004528 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004529 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004530
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 wdiFlushAcRspCb: callback for passing back the response
4532 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004533
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004535 callback
4536
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 @see WDI_AddBAReq
4538 @return Result of the function call
4539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004541WDI_FlushAcReq
4542(
4543 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4544 WDI_FlushAcRspCb wdiFlushAcRspCb,
4545 void* pUserData
4546)
4547{
4548 WDI_EventInfoType wdiEventData;
4549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4550
4551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 ------------------------------------------------------------------------*/
4554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4555 {
4556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4557 "WDI API call before module is initialized - Fail request");
4558
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 }
4561
4562 /*------------------------------------------------------------------------
4563 Fill in Event data and post to the Main FSM
4564 ------------------------------------------------------------------------*/
4565 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 wdiEventData.pEventData = pwdiFlushAcReqParams;
4567 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4568 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 wdiEventData.pUserData = pUserData;
4570
4571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4572
4573}/*WDI_FlushAcReq*/
4574
4575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004576 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004577 wants to notify the lower mac on a BT AMP event. This is
4578 to inform BTC-SLM that some BT AMP event occurred. Upon
4579 the call of this API the WLAN DAL will pack and send a
4580 HAL BT AMP event request message to the lower RIVA
4581 sub-system if DAL is in state STARTED.
4582
4583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004585
Jeff Johnsone7245742012-09-05 17:12:55 -07004586
4587 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004588 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004589
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 wdiBtAmpEventRspCb: callback for passing back the
4591 response of the BT AMP event operation received from the
4592 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004593
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 callback
4596
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 @return Result of the function call
4598*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004599WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004600WDI_BtAmpEventReq
4601(
4602 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4603 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4604 void* pUserData
4605)
4606{
4607 WDI_EventInfoType wdiEventData;
4608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4609
4610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004611 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 ------------------------------------------------------------------------*/
4613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4614 {
4615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4616 "WDI API call before module is initialized - Fail request");
4617
Jeff Johnsone7245742012-09-05 17:12:55 -07004618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004619 }
4620
4621 /*------------------------------------------------------------------------
4622 Fill in Event data and post to the Main FSM
4623 ------------------------------------------------------------------------*/
4624 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004625 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4626 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4627 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 wdiEventData.pUserData = pUserData;
4629
4630 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4631
4632}/*WDI_BtAmpEventReq*/
4633
Jeff Johnsone7245742012-09-05 17:12:55 -07004634#ifdef FEATURE_OEM_DATA_SUPPORT
4635/**
4636 @brief WDI_Start Oem Data Req will be called when the upper MAC
4637 wants to notify the lower mac on a oem data Req event.Upon
4638 the call of this API the WLAN DAL will pack and send a
4639 HAL OEM Data Req event request message to the lower RIVA
4640 sub-system if DAL is in state STARTED.
4641
4642 In state BUSY this request will be queued. Request won't
4643 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004644
4645
Jeff Johnsone7245742012-09-05 17:12:55 -07004646
4647 @param pwdiOemDataReqParams: the Oem Data Req as
4648 specified by the Device Interface
4649
4650 wdiStartOemDataRspCb: callback for passing back the
4651 response of the Oem Data Req received from the
4652 device
4653
4654 pUserData: user data will be passed back with the
4655 callback
4656
4657 @return Result of the function call
4658*/
4659WDI_Status
4660WDI_StartOemDataReq
4661(
4662 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4663 WDI_oemDataRspCb wdiOemDataRspCb,
4664 void* pUserData
4665)
4666{
4667 WDI_EventInfoType wdiEventData;
4668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4669
4670 /*------------------------------------------------------------------------
4671 Sanity Check
4672 ------------------------------------------------------------------------*/
4673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4674 {
4675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4676 "WDI API call before module is initialized - Fail request");
4677
4678 return WDI_STATUS_E_NOT_ALLOWED;
4679 }
4680
4681 /*------------------------------------------------------------------------
4682 Fill in Event data and post to the Main FSM
4683 ------------------------------------------------------------------------*/
4684 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4685 wdiEventData.pEventData = pwdiOemDataReqParams;
4686 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4687 wdiEventData.pCBfnc = wdiOemDataRspCb;
4688 wdiEventData.pUserData = pUserData;
4689
4690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4691
4692
4693}
4694
4695#endif
4696
4697
4698/*========================================================================
4699
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004701
Jeff Johnson295189b2012-06-20 16:38:30 -07004702==========================================================================*/
4703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 the WLAN HW to change the current channel of operation.
4706 Upon the call of this API the WLAN DAL will pack and
4707 send a HAL Start request message to the lower RIVA
4708 sub-system if DAL is in state STARTED.
4709
4710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004712
4713 WDI_Start must have been called.
4714
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004717
Jeff Johnson295189b2012-06-20 16:38:30 -07004718 wdiSwitchChRspCb: callback for passing back the response
4719 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004720
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 callback
4723
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 @see WDI_Start
4725 @return Result of the function call
4726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004728WDI_SwitchChReq
4729(
4730 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4731 WDI_SwitchChRspCb wdiSwitchChRspCb,
4732 void* pUserData
4733)
4734{
4735 WDI_EventInfoType wdiEventData;
4736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4737
4738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 ------------------------------------------------------------------------*/
4741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4742 {
4743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4744 "WDI API call before module is initialized - Fail request");
4745
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004747 }
4748
4749 /*------------------------------------------------------------------------
4750 Fill in Event data and post to the Main FSM
4751 ------------------------------------------------------------------------*/
4752 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 wdiEventData.pEventData = pwdiSwitchChReqParams;
4754 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4755 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 wdiEventData.pUserData = pUserData;
4757
4758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4759
4760}/*WDI_SwitchChReq*/
4761
4762
4763/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 wishes to add or update a STA in HW. Upon the call of
4766 this API the WLAN DAL will pack and send a HAL Start
4767 message request message to the lower RIVA sub-system if
4768 DAL is in state STARTED.
4769
4770 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004772
4773 WDI_Start must have been called.
4774
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 wdiConfigSTARspCb: callback for passing back the
4779 response of the config STA operation received from the
4780 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004781
Jeff Johnson295189b2012-06-20 16:38:30 -07004782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 callback
4784
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 @see WDI_Start
4786 @return Result of the function call
4787*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004788WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004789WDI_ConfigSTAReq
4790(
4791 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4792 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4793 void* pUserData
4794)
4795{
4796 WDI_EventInfoType wdiEventData;
4797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4798
4799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 ------------------------------------------------------------------------*/
4802 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4803 {
4804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4805 "WDI API call before module is initialized - Fail request");
4806
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 }
4809
4810 /*------------------------------------------------------------------------
4811 Fill in Event data and post to the Main FSM
4812 ------------------------------------------------------------------------*/
4813 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004814 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4815 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4816 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wdiEventData.pUserData = pUserData;
4818
4819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4820
4821}/*WDI_ConfigSTAReq*/
4822
4823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 wants to change the state of an ongoing link. Upon the
4826 call of this API the WLAN DAL will pack and send a HAL
4827 Start message request message to the lower RIVA
4828 sub-system if DAL is in state STARTED.
4829
4830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004832
4833 WDI_JoinStartReq must have been called.
4834
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 wdiSetLinkStateRspCb: callback for passing back the
4839 response of the set link state operation received from
4840 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004841
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 callback
4844
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 @see WDI_JoinStartReq
4846 @return Result of the function call
4847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004849WDI_SetLinkStateReq
4850(
4851 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4852 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4853 void* pUserData
4854)
4855{
4856 WDI_EventInfoType wdiEventData;
4857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4858
4859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 ------------------------------------------------------------------------*/
4862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4863 {
4864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4865 "WDI API call before module is initialized - Fail request");
4866
Jeff Johnsone7245742012-09-05 17:12:55 -07004867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 }
4869
4870 /*------------------------------------------------------------------------
4871 Fill in Event data and post to the Main FSM
4872 ------------------------------------------------------------------------*/
4873 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004874 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4875 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4876 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 wdiEventData.pUserData = pUserData;
4878
4879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4880
4881}/*WDI_SetLinkStateReq*/
4882
4883
4884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004885 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 to get statistics (MIB counters) from the device. Upon
4887 the call of this API the WLAN DAL will pack and send a
4888 HAL Start request message to the lower RIVA sub-system
4889 if DAL is in state STARTED.
4890
4891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004893
4894 WDI_Start must have been called.
4895
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004898
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 wdiGetStatsRspCb: callback for passing back the response
4900 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004901
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 callback
4904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 @see WDI_Start
4906 @return Result of the function call
4907*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004908WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004909WDI_GetStatsReq
4910(
4911 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4912 WDI_GetStatsRspCb wdiGetStatsRspCb,
4913 void* pUserData
4914)
4915{
4916 WDI_EventInfoType wdiEventData;
4917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4918
4919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 ------------------------------------------------------------------------*/
4922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4923 {
4924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4925 "WDI API call before module is initialized - Fail request");
4926
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004928 }
4929
4930 /*------------------------------------------------------------------------
4931 Fill in Event data and post to the Main FSM
4932 ------------------------------------------------------------------------*/
4933 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 wdiEventData.pEventData = pwdiGetStatsReqParams;
4935 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4936 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004937 wdiEventData.pUserData = pUserData;
4938
4939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4940
4941}/*WDI_GetStatsReq*/
4942
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004943#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4944/**
4945 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4946 to get roam rssi from the device. Upon
4947 the call of this API the WLAN DAL will pack and send a
4948 HAL Start request message to the lower RIVA sub-system
4949 if DAL is in state STARTED.
4950
4951 In state BUSY this request will be queued. Request won't
4952 be allowed in any other state.
4953
4954 WDI_Start must have been called.
4955
4956 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4957 specified by the Device Interface
4958
4959 wdiGetRoamRssiRspCb: callback for passing back the response
4960 of the get stats operation received from the device
4961
4962 pUserData: user data will be passed back with the
4963 callback
4964
4965 @see WDI_Start
4966 @return Result of the function call
4967*/
4968WDI_Status
4969WDI_GetRoamRssiReq
4970(
4971 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4972 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4973 void* pUserData
4974)
4975{
4976 WDI_EventInfoType wdiEventData;
4977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4978
4979 /*------------------------------------------------------------------------
4980 Sanity Check
4981 ------------------------------------------------------------------------*/
4982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4983 {
4984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4985 "WDI API call before module is initialized - Fail request");
4986
4987 return WDI_STATUS_E_NOT_ALLOWED;
4988 }
4989 /*------------------------------------------------------------------------
4990 Fill in Event data and post to the Main FSM
4991 ------------------------------------------------------------------------*/
4992 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4993 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4994 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4995 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4996 wdiEventData.pUserData = pUserData;
4997
4998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4999
5000}/*WDI_GetRoamRssiReq*/
5001#endif
5002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003
5004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005005 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 it wishes to change the configuration of the WLAN
5007 Device. Upon the call of this API the WLAN DAL will pack
5008 and send a HAL Update CFG request message to the lower
5009 RIVA sub-system if DAL is in state STARTED.
5010
5011 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005012 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005013
5014 WDI_Start must have been called.
5015
Jeff Johnsone7245742012-09-05 17:12:55 -07005016 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005017 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005018
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 wdiUpdateCfgsRspCb: callback for passing back the
5020 response of the update cfg operation received from the
5021 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005022
Jeff Johnson295189b2012-06-20 16:38:30 -07005023 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 callback
5025
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 @see WDI_Start
5027 @return Result of the function call
5028*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005030WDI_UpdateCfgReq
5031(
5032 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5033 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5034 void* pUserData
5035)
5036{
5037 WDI_EventInfoType wdiEventData;
5038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5039
5040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005041 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 ------------------------------------------------------------------------*/
5043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5044 {
5045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5046 "WDI API call before module is initialized - Fail request");
5047
Jeff Johnsone7245742012-09-05 17:12:55 -07005048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 }
5050
5051 /*------------------------------------------------------------------------
5052 Fill in Event data and post to the Main FSM
5053 ------------------------------------------------------------------------*/
5054 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005055 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5056 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5057 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005058 wdiEventData.pUserData = pUserData;
5059
5060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5061
5062}/*WDI_UpdateCfgReq*/
5063
5064
5065
5066/**
5067 @brief WDI_AddBAReq will be called when the upper MAC has setup
5068 successfully a BA session and needs to notify the HW for
5069 the appropriate settings to take place. Upon the call of
5070 this API the WLAN DAL will pack and send a HAL Add BA
5071 request message to the lower RIVA sub-system if DAL is
5072 in state STARTED.
5073
5074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005076
5077 WDI_PostAssocReq must have been called.
5078
5079 @param wdiAddBAReqParams: the add BA parameters as specified by
5080 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005081
Jeff Johnson295189b2012-06-20 16:38:30 -07005082 wdiAddBARspCb: callback for passing back the response of
5083 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005084
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 callback
5087
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 @see WDI_PostAssocReq
5089 @return Result of the function call
5090*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005091WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005092WDI_AddBAReq
5093(
5094 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5095 WDI_AddBARspCb wdiAddBARspCb,
5096 void* pUserData
5097)
5098{
5099 WDI_EventInfoType wdiEventData;
5100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5101
5102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005104 ------------------------------------------------------------------------*/
5105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5106 {
5107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5108 "WDI API call before module is initialized - Fail request");
5109
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005111 }
5112
5113 /*------------------------------------------------------------------------
5114 Fill in Event data and post to the Main FSM
5115 ------------------------------------------------------------------------*/
5116 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005117 wdiEventData.pEventData = pwdiAddBAReqParams;
5118 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5119 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 wdiEventData.pUserData = pUserData;
5121
5122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5123
5124}/*WDI_AddBAReq*/
5125
5126
5127/**
5128 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5129 successfully a BA session and needs to notify the HW for
5130 the appropriate settings to take place. Upon the call of
5131 this API the WLAN DAL will pack and send a HAL Add BA
5132 request message to the lower RIVA sub-system if DAL is
5133 in state STARTED.
5134
5135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005137
5138 WDI_PostAssocReq must have been called.
5139
5140 @param wdiAddBAReqParams: the add BA parameters as specified by
5141 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005142
Jeff Johnson295189b2012-06-20 16:38:30 -07005143 wdiAddBARspCb: callback for passing back the response of
5144 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005145
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 callback
5148
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 @see WDI_PostAssocReq
5150 @return Result of the function call
5151*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005153WDI_TriggerBAReq
5154(
5155 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5156 WDI_TriggerBARspCb wdiTriggerBARspCb,
5157 void* pUserData
5158)
5159{
5160 WDI_EventInfoType wdiEventData;
5161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5162
5163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 ------------------------------------------------------------------------*/
5166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5167 {
5168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5169 "WDI API call before module is initialized - Fail request");
5170
Jeff Johnsone7245742012-09-05 17:12:55 -07005171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 }
5173
5174 /*------------------------------------------------------------------------
5175 Fill in Event data and post to the Main FSM
5176 ------------------------------------------------------------------------*/
5177 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5179 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5180 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 wdiEventData.pUserData = pUserData;
5182
5183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5184
5185}/*WDI_AddBAReq*/
5186
5187/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005188 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 wishes to update any of the Beacon parameters used by HW.
5190 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5191 message to the lower RIVA sub-system if DAL is in state
5192 STARTED.
5193
5194 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005195 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005196
5197 WDI_PostAssocReq must have been called.
5198
Jeff Johnsone7245742012-09-05 17:12:55 -07005199 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005201
Jeff Johnson295189b2012-06-20 16:38:30 -07005202 wdiUpdateBeaconParamsRspCb: callback for passing back the
5203 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005204
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 callback
5207
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 @see WDI_PostAssocReq
5209 @return Result of the function call
5210*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005211WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005212WDI_UpdateBeaconParamsReq
5213(
5214 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5215 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5216 void* pUserData
5217)
5218{
5219 WDI_EventInfoType wdiEventData;
5220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5221
5222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 ------------------------------------------------------------------------*/
5225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5226 {
5227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5228 "WDI API call before module is initialized - Fail request");
5229
Jeff Johnsone7245742012-09-05 17:12:55 -07005230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 }
5232
5233 /*------------------------------------------------------------------------
5234 Fill in Event data and post to the Main FSM
5235 ------------------------------------------------------------------------*/
5236 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005237 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5238 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5239 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 wdiEventData.pUserData = pUserData;
5241
5242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5243
5244}/*WDI_UpdateBeaconParamsReq*/
5245
5246/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 wishes to update the Beacon template used by HW.
5249 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5250 message to the lower RIVA sub-system if DAL is in state
5251 STARTED.
5252
5253 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005254 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005255
5256 WDI_PostAssocReq must have been called.
5257
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005260
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 wdiSendBeaconParamsRspCb: callback for passing back the
5262 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005263
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 callback
5266
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 @see WDI_PostAssocReq
5268 @return Result of the function call
5269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005271WDI_SendBeaconParamsReq
5272(
5273 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5274 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5275 void* pUserData
5276)
5277{
5278 WDI_EventInfoType wdiEventData;
5279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5280
5281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 ------------------------------------------------------------------------*/
5284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5285 {
5286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5287 "WDI API call before module is initialized - Fail request");
5288
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 }
5291
5292 /*------------------------------------------------------------------------
5293 Fill in Event data and post to the Main FSM
5294 ------------------------------------------------------------------------*/
5295 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 wdiEventData.pEventData = pwdiSendBeaconParams;
5297 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5298 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 wdiEventData.pUserData = pUserData;
5300
5301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5302
5303}/*WDI_SendBeaconParamsReq*/
5304
5305/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 upper MAC wants to update the probe response template to
5308 be transmitted as Soft AP
5309 Upon the call of this API the WLAN DAL will
5310 pack and send the probe rsp template message to the
5311 lower RIVA sub-system if DAL is in state STARTED.
5312
5313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005315
5316
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005318 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005319
Jeff Johnson295189b2012-06-20 16:38:30 -07005320 wdiSendBeaconParamsRspCb: callback for passing back the
5321 response of the Send Beacon Params operation received
5322 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 callback
5326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 @see WDI_AddBAReq
5328 @return Result of the function call
5329*/
5330
Jeff Johnsone7245742012-09-05 17:12:55 -07005331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005332WDI_UpdateProbeRspTemplateReq
5333(
5334 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5335 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5336 void* pUserData
5337)
5338{
5339 WDI_EventInfoType wdiEventData;
5340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5341
5342 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 ------------------------------------------------------------------------*/
5345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5346 {
5347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5348 "WDI API call before module is initialized - Fail request");
5349
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005351 }
5352
5353 /*------------------------------------------------------------------------
5354 Fill in Event data and post to the Main FSM
5355 ------------------------------------------------------------------------*/
5356 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5358 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5359 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 wdiEventData.pUserData = pUserData;
5361
5362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5363
5364}/*WDI_UpdateProbeRspTemplateReq*/
5365
5366/**
5367 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5368 to the NV memory.
5369
5370
5371 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5372 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005373
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 wdiNvDownloadRspCb: callback for passing back the response of
5375 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005376
Jeff Johnson295189b2012-06-20 16:38:30 -07005377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005378 callback
5379
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 @see WDI_PostAssocReq
5381 @return Result of the function call
5382*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005384WDI_NvDownloadReq
5385(
5386 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5387 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5388 void* pUserData
5389)
5390{
5391 WDI_EventInfoType wdiEventData;
5392
5393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 ------------------------------------------------------------------------*/
5396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5397 {
5398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5399 "WDI API call before module is initialized - Fail request");
5400
Jeff Johnsone7245742012-09-05 17:12:55 -07005401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 }
5403
5404 /*------------------------------------------------------------------------
5405 Fill in Event data and post to the Main FSM
5406 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005407 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5408 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5409 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5410 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 wdiEventData.pUserData = pUserData;
5412
5413 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5414
5415}/*WDI_NVDownloadReq*/
5416
Jeff Johnson295189b2012-06-20 16:38:30 -07005417/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 upper MAC wants to send Notice of Absence
5420 Upon the call of this API the WLAN DAL will
5421 pack and send the probe rsp template message to the
5422 lower RIVA sub-system if DAL is in state STARTED.
5423
5424 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005425 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005426
5427
Jeff Johnsone7245742012-09-05 17:12:55 -07005428 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005430
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 wdiSendBeaconParamsRspCb: callback for passing back the
5432 response of the Send Beacon Params operation received
5433 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005434
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005436 callback
5437
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 @see WDI_AddBAReq
5439 @return Result of the function call
5440*/
5441WDI_Status
5442WDI_SetP2PGONOAReq
5443(
5444 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5445 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5446 void* pUserData
5447)
5448{
5449 WDI_EventInfoType wdiEventData;
5450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5451
5452 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005453 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 ------------------------------------------------------------------------*/
5455 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5456 {
5457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5458 "WDI API call before module is initialized - Fail request");
5459
Jeff Johnsone7245742012-09-05 17:12:55 -07005460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 }
5462
5463 /*------------------------------------------------------------------------
5464 Fill in Event data and post to the Main FSM
5465 ------------------------------------------------------------------------*/
5466 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5468 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5469 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 wdiEventData.pUserData = pUserData;
5471
5472 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5473
5474}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005475
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305476#ifdef FEATURE_WLAN_TDLS
5477/**
5478 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5479 upper MAC wants to send TDLS Link Establish Request Parameters
5480 Upon the call of this API the WLAN DAL will
5481 pack and send the TDLS Link Establish Request message to the
5482 lower RIVA sub-system if DAL is in state STARTED.
5483
5484 In state BUSY this request will be queued. Request won't
5485 be allowed in any other state.
5486
5487
5488 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5489 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5490
5491 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5492 response of the TDLS Link Establish request received
5493 from the device
5494
5495 pUserData: user data will be passed back with the
5496 callback
5497
5498 @see
5499 @return Result of the function call
5500*/
5501WDI_Status
5502WDI_SetTDLSLinkEstablishReq
5503(
5504 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5505 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5506 void* pUserData
5507)
5508{
5509 WDI_EventInfoType wdiEventData;
5510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5511
5512 /*------------------------------------------------------------------------
5513 Sanity Check
5514 ------------------------------------------------------------------------*/
5515 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5516 {
5517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5518 "WDI API call before module is initialized - Fail request");
5519
5520 return WDI_STATUS_E_NOT_ALLOWED;
5521 }
5522
5523 /*------------------------------------------------------------------------
5524 Fill in Event data and post to the Main FSM
5525 ------------------------------------------------------------------------*/
5526 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5527 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5528 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5529 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5530 wdiEventData.pUserData = pUserData;
5531
5532 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5533
5534}/*WDI_SetTDLSLinkEstablishReq*/
5535#endif
5536
Jeff Johnson295189b2012-06-20 16:38:30 -07005537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 UMAC wanted to add STA self while opening any new session
5540 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005541 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005542
5543
Jeff Johnsone7245742012-09-05 17:12:55 -07005544 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005546
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 callback
5549
5550 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005551 @return Result of the function call
5552*/
5553WDI_Status
5554WDI_AddSTASelfReq
5555(
5556 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5557 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5558 void* pUserData
5559)
5560{
5561 WDI_EventInfoType wdiEventData;
5562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5563
5564 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 ------------------------------------------------------------------------*/
5567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5568 {
5569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5570 "WDI API call before module is initialized - Fail request");
5571
Jeff Johnsone7245742012-09-05 17:12:55 -07005572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 }
5574
5575 /*------------------------------------------------------------------------
5576 Fill in Event data and post to the Main FSM
5577 ------------------------------------------------------------------------*/
5578 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005579 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5580 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5581 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 wdiEventData.pUserData = pUserData;
5583
5584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5585
5586}/*WDI_AddSTASelfReq*/
5587
5588
Jeff Johnsone7245742012-09-05 17:12:55 -07005589#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005590/**
5591 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5592 the device of a successful add TSpec negotiation. HW
5593 needs to receive the TSpec Info from the UMAC in order
5594 to configure properly the QoS data traffic. Upon the
5595 call of this API the WLAN DAL will pack and send a HAL
5596 Add TS request message to the lower RIVA sub-system if
5597 DAL is in state STARTED.
5598
5599 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005600 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005601
5602 WDI_PostAssocReq must have been called.
5603
5604 @param wdiAddTsReqParams: the add TS parameters as specified by
5605 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005606
Jeff Johnson295189b2012-06-20 16:38:30 -07005607 wdiAddTsRspCb: callback for passing back the response of
5608 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005609
Jeff Johnson295189b2012-06-20 16:38:30 -07005610 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005611 callback
5612
Jeff Johnson295189b2012-06-20 16:38:30 -07005613 @see WDI_PostAssocReq
5614 @return Result of the function call
5615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005617WDI_AggrAddTSReq
5618(
5619 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5620 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5621 void* pUserData
5622)
5623{
5624 WDI_EventInfoType wdiEventData;
5625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5626
5627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 ------------------------------------------------------------------------*/
5630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5631 {
5632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5633 "WDI API call before module is initialized - Fail request");
5634
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 }
5637
5638 /*------------------------------------------------------------------------
5639 Fill in Event data and post to the Main FSM
5640 ------------------------------------------------------------------------*/
5641 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5643 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5644 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 wdiEventData.pUserData = pUserData;
5646
5647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5648
5649}/*WDI_AggrAddTSReq*/
5650
5651#endif /* WLAN_FEATURE_VOWIFI_11R */
5652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653/**
5654 @brief WDI_FTMCommandReq
5655 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005656
5657 @param ftmCommandReq: FTM Command Body
5658 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005660
Jeff Johnson295189b2012-06-20 16:38:30 -07005661 @see
5662 @return Result of the function call
5663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005665WDI_FTMCommandReq
5666(
5667 WDI_FTMCommandReqType *ftmCommandReq,
5668 WDI_FTMCommandRspCb ftmCommandRspCb,
5669 void *pUserData
5670)
5671{
5672 WDI_EventInfoType wdiEventData;
5673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5674
5675 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005676 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005677 ------------------------------------------------------------------------*/
5678 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5679 {
5680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5681 "WDI API call before module is initialized - Fail request");
5682
Jeff Johnsone7245742012-09-05 17:12:55 -07005683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005684 }
5685
5686 /*------------------------------------------------------------------------
5687 Fill in Event data and post to the Main FSM
5688 ------------------------------------------------------------------------*/
5689 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5690 wdiEventData.pEventData = (void *)ftmCommandReq;
5691 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5692 wdiEventData.pCBfnc = ftmCommandRspCb;
5693 wdiEventData.pUserData = pUserData;
5694
5695 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5696}
Jeff Johnson295189b2012-06-20 16:38:30 -07005697/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005698 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005699
5700 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005701 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005702
5703
5704 @param pwdiResumeReqParams: as specified by
5705 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005706
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 wdiResumeReqRspCb: callback for passing back the response of
5708 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005709
Jeff Johnson295189b2012-06-20 16:38:30 -07005710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 callback
5712
5713 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 @return Result of the function call
5715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005717WDI_HostResumeReq
5718(
5719 WDI_ResumeParamsType* pwdiResumeReqParams,
5720 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5721 void* pUserData
5722)
5723{
5724 WDI_EventInfoType wdiEventData;
5725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5726
5727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 ------------------------------------------------------------------------*/
5730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5731 {
5732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5733 "WDI API call before module is initialized - Fail request");
5734
Jeff Johnsone7245742012-09-05 17:12:55 -07005735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 }
5737
5738 /*------------------------------------------------------------------------
5739 Fill in Event data and post to the Main FSM
5740 ------------------------------------------------------------------------*/
5741 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005742 wdiEventData.pEventData = pwdiResumeReqParams;
5743 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5744 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 wdiEventData.pUserData = pUserData;
5746
5747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5748
5749}/*WDI_HostResumeReq*/
5750
5751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005752 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005753
5754 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005756
5757
5758 @param pwdiDelStaSelfReqParams: as specified by
5759 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005760
Jeff Johnson295189b2012-06-20 16:38:30 -07005761 wdiDelStaSelfRspCb: callback for passing back the response of
5762 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005763
Jeff Johnson295189b2012-06-20 16:38:30 -07005764 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 callback
5766
Jeff Johnson295189b2012-06-20 16:38:30 -07005767 @see WDI_PostAssocReq
5768 @return Result of the function call
5769*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005771WDI_DelSTASelfReq
5772(
5773 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5774 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5775 void* pUserData
5776)
5777{
5778 WDI_EventInfoType wdiEventData;
5779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5780
5781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005783 ------------------------------------------------------------------------*/
5784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5785 {
5786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5787 "WDI API call before module is initialized - Fail request");
5788
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 }
5791
5792 /*------------------------------------------------------------------------
5793 Fill in Event data and post to the Main FSM
5794 ------------------------------------------------------------------------*/
5795 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5797 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5798 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 wdiEventData.pUserData = pUserData;
5800
5801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5802
5803}/*WDI_AggrAddTSReq*/
5804
5805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5807 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 Upon the call of this API the WLAN DAL will pack
5809 and send a HAL Set Tx Per Tracking request message to the
5810 lower RIVA sub-system if DAL is in state STARTED.
5811
5812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005814
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005816 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005817
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 pwdiSetTxPerTrackingRspCb: callback for passing back the
5819 response of the set Tx PER Tracking configurations operation received
5820 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005821
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005823 callback
5824
Jeff Johnson295189b2012-06-20 16:38:30 -07005825 @return Result of the function call
5826*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005827WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005828WDI_SetTxPerTrackingReq
5829(
5830 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5831 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5832 void* pUserData
5833)
5834{
5835 WDI_EventInfoType wdiEventData;
5836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5837
5838 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005840 ------------------------------------------------------------------------*/
5841 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5842 {
5843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5844 "WDI API call before module is initialized - Fail request");
5845
Jeff Johnsone7245742012-09-05 17:12:55 -07005846 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005847 }
5848
5849 /*------------------------------------------------------------------------
5850 Fill in Event data and post to the Main FSM
5851 ------------------------------------------------------------------------*/
5852 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005853 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005854 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005855 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005856 wdiEventData.pUserData = pUserData;
5857
5858 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5859
5860}/*WDI_SetTxPerTrackingReq*/
5861
5862/**
5863 @brief WDI_SetTmLevelReq
5864 If HW Thermal condition changed, driver should react based on new
5865 HW thermal condition.
5866
5867 @param pwdiSetTmLevelReq: New thermal condition information
5868
5869 pwdiSetTmLevelRspCb: callback
5870
5871 usrData: user data will be passed back with the
5872 callback
5873
5874 @return Result of the function call
5875*/
5876WDI_Status
5877WDI_SetTmLevelReq
5878(
5879 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5880 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5881 void *usrData
5882)
5883{
5884 WDI_EventInfoType wdiEventData;
5885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5886
5887 /*------------------------------------------------------------------------
5888 Sanity Check
5889 ------------------------------------------------------------------------*/
5890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5891 {
5892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5893 "WDI API call before module is initialized - Fail request");
5894
5895 return WDI_STATUS_E_NOT_ALLOWED;
5896 }
5897
5898 /*------------------------------------------------------------------------
5899 Fill in Event data and post to the Main FSM
5900 ------------------------------------------------------------------------*/
5901 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5902 wdiEventData.pEventData = pwdiSetTmLevelReq;
5903 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5904 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5905 wdiEventData.pUserData = usrData;
5906
5907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5908}
5909
5910/**
5911 @brief WDI_HostSuspendInd
5912
5913 Suspend Indication from the upper layer will be sent
5914 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005915
Jeff Johnson295189b2012-06-20 16:38:30 -07005916 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005917
5918 @see
5919
Jeff Johnson295189b2012-06-20 16:38:30 -07005920 @return Status of the request
5921*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005922WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005923WDI_HostSuspendInd
5924(
5925 WDI_SuspendParamsType* pwdiSuspendIndParams
5926)
5927{
5928
5929 WDI_EventInfoType wdiEventData;
5930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5931
5932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 ------------------------------------------------------------------------*/
5935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5936 {
5937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5938 "WDI API call before module is initialized - Fail request");
5939
Jeff Johnsone7245742012-09-05 17:12:55 -07005940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005941 }
5942
5943 /*------------------------------------------------------------------------
5944 Fill in Event data and post to the Main FSM
5945 ------------------------------------------------------------------------*/
5946 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005947 wdiEventData.pEventData = pwdiSuspendIndParams;
5948 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5949 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005950 wdiEventData.pUserData = NULL;
5951
5952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5953
5954}/*WDI_HostSuspendInd*/
5955
5956/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005957 @brief WDI_TrafficStatsInd
5958 Traffic Stats from the upper layer will be sent
5959 down to HAL
5960
5961 @param WDI_TrafficStatsIndType
5962
5963 @see
5964
5965 @return Status of the request
5966*/
5967WDI_Status
5968WDI_TrafficStatsInd
5969(
5970 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5971)
5972{
5973
5974 WDI_EventInfoType wdiEventData;
5975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5976
5977 /*------------------------------------------------------------------------
5978 Sanity Check
5979 ------------------------------------------------------------------------*/
5980 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5981 {
5982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5983 "WDI API call before module is initialized - Fail request");
5984
5985 return WDI_STATUS_E_NOT_ALLOWED;
5986 }
5987
5988 /*------------------------------------------------------------------------
5989 Fill in Event data and post to the Main FSM
5990 ------------------------------------------------------------------------*/
5991 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5992 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5993 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5994 wdiEventData.pCBfnc = NULL;
5995 wdiEventData.pUserData = NULL;
5996
5997 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5998
5999}/*WDI_TrafficStatsInd*/
6000
Chet Lanctota96bb432013-03-18 10:26:30 -07006001#ifdef WLAN_FEATURE_11W
6002/**
6003 @brief WDI_ExcludeUnencryptedInd
6004 Register with HAL to receive/drop unencrypted frames
6005
6006 @param WDI_ExcludeUnencryptIndType
6007
6008 @see
6009
6010 @return Status of the request
6011*/
6012WDI_Status
6013WDI_ExcludeUnencryptedInd
6014(
6015 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6016)
6017{
6018
6019 WDI_EventInfoType wdiEventData;
6020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6021
6022 /*------------------------------------------------------------------------
6023 Sanity Check
6024 ------------------------------------------------------------------------*/
6025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6026 {
6027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6028 "WDI API call before module is initialized - Fail request");
6029
6030 return WDI_STATUS_E_NOT_ALLOWED;
6031 }
6032
6033 /*------------------------------------------------------------------------
6034 Fill in Event data and post to the Main FSM
6035 ------------------------------------------------------------------------*/
6036 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6037 wdiEventData.pEventData = pWdiExcUnencParams;
6038 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6039 wdiEventData.pCBfnc = NULL;
6040 wdiEventData.pUserData = NULL;
6041
6042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6043
6044}/*WDI_TrafficStatsInd*/
6045#endif
6046
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006047/**
Yue Ma365933a2013-08-14 15:59:08 -07006048 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6049
6050 @param addPeriodicTxPtrnParams: Add Pattern parameters
6051
6052 @see
6053
6054 @return Status of the request
6055*/
6056WDI_Status
6057WDI_AddPeriodicTxPtrnInd
6058(
6059 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6060)
6061{
6062 WDI_EventInfoType wdiEventData;
6063
6064 /*-------------------------------------------------------------------------
6065 Sanity Check
6066 ------------------------------------------------------------------------*/
6067 if (eWLAN_PAL_FALSE == gWDIInitialized)
6068 {
6069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6070 "WDI API call before module is initialized - Fail request!");
6071
6072 return WDI_STATUS_E_NOT_ALLOWED;
6073 }
6074
6075 /*-------------------------------------------------------------------------
6076 Fill in Event data and post to the Main FSM
6077 ------------------------------------------------------------------------*/
6078 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6079 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6080 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6081 wdiEventData.pCBfnc = NULL;
6082 wdiEventData.pUserData = NULL;
6083
6084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6085}
6086
6087/**
6088 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6089
6090 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6091
6092 @see
6093
6094 @return Status of the request
6095*/
6096WDI_Status
6097WDI_DelPeriodicTxPtrnInd
6098(
6099 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6100)
6101{
6102 WDI_EventInfoType wdiEventData;
6103
6104 /*-------------------------------------------------------------------------
6105 Sanity Check
6106 ------------------------------------------------------------------------*/
6107 if (eWLAN_PAL_FALSE == gWDIInitialized)
6108 {
6109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6110 "WDI API call before module is initialized - Fail request!");
6111
6112 return WDI_STATUS_E_NOT_ALLOWED;
6113 }
6114
6115 /*-------------------------------------------------------------------------
6116 Fill in Event data and post to the Main FSM
6117 ------------------------------------------------------------------------*/
6118 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6119 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6120 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6121 wdiEventData.pCBfnc = NULL;
6122 wdiEventData.pUserData = NULL;
6123
6124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6125}
6126
6127/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 @brief WDI_HALDumpCmdReq
6129 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
6131 @param halDumpCmdReqParams: Hal Dump Command Body
6132 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006134
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 @see
6136 @return Result of the function call
6137*/
6138WDI_Status WDI_HALDumpCmdReq
6139(
6140 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6141 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6142 void *pUserData
6143)
6144{
6145 WDI_EventInfoType wdiEventData;
6146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6147
6148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006149 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006150 ------------------------------------------------------------------------*/
6151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6152 {
6153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6154 "WDI API call before module is initialized - Fail request");
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 }
6158
6159 /*------------------------------------------------------------------------
6160 Fill in Event data and post to the Main FSM
6161 ------------------------------------------------------------------------*/
6162 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6163 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6164 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6165 wdiEventData.pCBfnc = halDumpCmdRspCb;
6166 wdiEventData.pUserData = pUserData;
6167
6168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6169}
6170
Jeff Johnsone7245742012-09-05 17:12:55 -07006171/*============================================================================
6172
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006174
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 ============================================================================*/
6176
6177/**
6178 @brief Main FSM Start function for all states except BUSY
6179
Jeff Johnsone7245742012-09-05 17:12:55 -07006180
6181 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 wdiEV: event posted to the main DAL FSM
6183 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 structure
6185
Jeff Johnson295189b2012-06-20 16:38:30 -07006186 @see
6187 @return Result of the function call
6188*/
6189WDI_Status
6190WDI_PostMainEvent
6191(
Jeff Johnsone7245742012-09-05 17:12:55 -07006192 WDI_ControlBlockType* pWDICtx,
6193 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006195
Jeff Johnson295189b2012-06-20 16:38:30 -07006196)
6197{
Jeff Johnsone7245742012-09-05 17:12:55 -07006198 WDI_Status wdiStatus;
6199 WDI_MainFuncType pfnWDIMainEvHdlr;
6200 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6202
6203 /*-------------------------------------------------------------------------
6204 Sanity check
6205 -------------------------------------------------------------------------*/
6206 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6207 ( wdiEV >= WDI_MAX_EVENT ))
6208 {
6209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6210 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6211 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 }
6214
6215 /*Access to the global state must be locked */
6216 wpalMutexAcquire(&pWDICtx->wptMutex);
6217
6218 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006219 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006220
6221 wdiOldState = pWDICtx->uGlobalState;
6222
6223 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006224 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6225 response comes from CCPU for the request sent by host:
6226 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 -07006227 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 -07006228 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 CCPU:
6230 don't change the state */
6231 if ( WDI_RESPONSE_EVENT != wdiEV)
6232 {
6233 /*Transition to BUSY State - the request is now being processed by the FSM,
6234 if the request fails we shall transition back to the old state, if not
6235 the request will manage its own state transition*/
6236 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6237 }
6238 /* If the state function associated with the EV is NULL it means that this
6239 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006240 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006241 {
6242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006243 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 }
6247 else
6248 {
6249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 }
6254
6255 /* If a request handles itself well it will end up in a success or in a
6256 pending
6257 Success - means that the request was processed and the proper state
6258 transition already occurred or will occur when the resp is received
6259 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006260
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 Pending - means the request could not be processed at this moment in time
6262 because the FSM was already busy so no state transition or dequeueing
6263 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006264
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 Success for synchronous case means that the transition may occur and
6266 processing of pending requests may continue - so it should go through
6267 and restores the state and continue processing queued requests*/
6268 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6269 ( WDI_STATUS_PENDING != wdiStatus ))
6270 {
6271 if ( WDI_RESPONSE_EVENT != wdiEV)
6272 {
6273 /*The request has failed or could not be processed - transition back to
6274 the old state - check to see if anything was queued and try to execute
6275 The dequeue logic should post a message to a thread and return - no
6276 actual processing can occur */
6277 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6278 }
6279 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006280
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 }
6282
6283 /* we have completed processing the event */
6284 wpalMutexRelease(&pWDICtx->wptMutex);
6285
Jeff Johnsone7245742012-09-05 17:12:55 -07006286 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006287
6288}/*WDI_PostMainEvent*/
6289
6290
6291/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006292 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006293--------------------------------------------------------------------------*/
6294/**
6295 @brief Main FSM Start function for all states except BUSY
6296
Jeff Johnsone7245742012-09-05 17:12:55 -07006297
6298 @param pWDICtx: pointer to the WLAN DAL context
6299 pEventData: pointer to the event information structure
6300
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 @see
6302 @return Result of the function call
6303*/
6304WDI_Status
6305WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006306(
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 WDI_ControlBlockType* pWDICtx,
6308 WDI_EventInfoType* pEventData
6309)
6310{
6311
6312 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006313 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 ----------------------------------------------------------------------*/
6315 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6316 {
6317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006318 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006319 pWDICtx, pEventData);
6320 return WDI_STATUS_E_FAILURE;
6321 }
6322
6323 wpalMutexAcquire(&pWDICtx->wptMutex);
6324
6325 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006326 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 ----------------------------------------------------------------------*/
6328 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6329 {
6330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6331 "Control Transport not yet Open - queueing the request");
6332
6333 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006335
6336 wpalMutexRelease(&pWDICtx->wptMutex);
6337 return WDI_STATUS_PENDING;
6338 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006339
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 wpalMutexRelease(&pWDICtx->wptMutex);
6341
6342 /*Return Success*/
6343 return WDI_ProcessRequest( pWDICtx, pEventData );
6344
6345}/*WDI_MainStart*/
6346
6347/**
6348 @brief Main FSM Response function for state INIT
6349
Jeff Johnsone7245742012-09-05 17:12:55 -07006350
6351 @param pWDICtx: pointer to the WLAN DAL context
6352 pEventData: pointer to the event information structure
6353
Jeff Johnson295189b2012-06-20 16:38:30 -07006354 @see
6355 @return Result of the function call
6356*/
6357WDI_Status
6358WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006359(
Jeff Johnson295189b2012-06-20 16:38:30 -07006360 WDI_ControlBlockType* pWDICtx,
6361 WDI_EventInfoType* pEventData
6362)
6363{
6364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006365 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006366 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006367 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006368
6369 /*Return Success*/
6370 return WDI_STATUS_E_NOT_ALLOWED;
6371}/* WDI_MainRspInit */
6372
6373/**
6374 @brief Main FSM Close function for all states except BUSY
6375
Jeff Johnsone7245742012-09-05 17:12:55 -07006376
6377 @param pWDICtx: pointer to the WLAN DAL context
6378 pEventData: pointer to the event information structure
6379
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 @see
6381 @return Result of the function call
6382*/
6383WDI_Status
6384WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006385(
Jeff Johnson295189b2012-06-20 16:38:30 -07006386 WDI_ControlBlockType* pWDICtx,
6387 WDI_EventInfoType* pEventData
6388)
6389{
6390
6391 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 ----------------------------------------------------------------------*/
6394 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6395 {
6396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 pWDICtx, pEventData);
6399 return WDI_STATUS_E_FAILURE;
6400 }
6401
6402 /*Return Success*/
6403 return WDI_ProcessRequest( pWDICtx, pEventData );
6404
6405}/*WDI_MainClose*/
6406/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006407 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006408--------------------------------------------------------------------------*/
6409/**
6410 @brief Main FSM Start function for state STARTED
6411
Jeff Johnsone7245742012-09-05 17:12:55 -07006412
6413 @param pWDICtx: pointer to the WLAN DAL context
6414 pEventData: pointer to the event information structure
6415
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 @see
6417 @return Result of the function call
6418*/
6419WDI_Status
6420WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006421(
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 WDI_ControlBlockType* pWDICtx,
6423 WDI_EventInfoType* pEventData
6424)
6425{
6426 WDI_StartRspCb wdiStartRspCb = NULL;
6427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6428
6429 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006431 ----------------------------------------------------------------------*/
6432 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6433 {
6434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006435 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 pWDICtx, pEventData);
6437 return WDI_STATUS_E_FAILURE;
6438 }
6439
6440 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006441 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 ----------------------------------------------------------------------*/
6443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006445
6446 wpalMutexAcquire(&pWDICtx->wptMutex);
6447
6448 /*Transition back to started because the post function transitioned us to
6449 busy*/
6450 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6451
6452 /*Check to see if any request is pending*/
6453 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006454
Jeff Johnson295189b2012-06-20 16:38:30 -07006455 wpalMutexRelease(&pWDICtx->wptMutex);
6456
6457 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006458 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6459
Jeff Johnson295189b2012-06-20 16:38:30 -07006460 /*Notify UMAC*/
6461 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6462
6463 /*Return Success*/
6464 return WDI_STATUS_SUCCESS;
6465
6466}/*WDI_MainStartStarted*/
6467
6468/**
6469 @brief Main FSM Stop function for state STARTED
6470
Jeff Johnsone7245742012-09-05 17:12:55 -07006471
6472 @param pWDICtx: pointer to the WLAN DAL context
6473 pEventData: pointer to the event information structure
6474
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 @see
6476 @return Result of the function call
6477*/
6478WDI_Status
6479WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006480(
Jeff Johnson295189b2012-06-20 16:38:30 -07006481 WDI_ControlBlockType* pWDICtx,
6482 WDI_EventInfoType* pEventData
6483)
6484{
6485 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006487 ----------------------------------------------------------------------*/
6488 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6489 {
6490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006491 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006492 pWDICtx, pEventData);
6493 return WDI_STATUS_E_FAILURE;
6494 }
6495
6496 /*State at this point is BUSY - because we enter this state before posting
6497 an event to the FSM in order to prevent potential race conditions*/
6498
6499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6500 "Processing stop request in FSM");
6501
6502 /*Return Success*/
6503 return WDI_ProcessRequest( pWDICtx, pEventData );
6504
6505}/*WDI_MainStopStarted*/
6506/**
6507 @brief Main FSM Request function for state started
6508
Jeff Johnsone7245742012-09-05 17:12:55 -07006509
6510 @param pWDICtx: pointer to the WLAN DAL context
6511 pEventData: pointer to the event information structure
6512
Jeff Johnson295189b2012-06-20 16:38:30 -07006513 @see
6514 @return Result of the function call
6515*/
6516WDI_Status
6517WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006518(
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 WDI_ControlBlockType* pWDICtx,
6520 WDI_EventInfoType* pEventData
6521)
6522{
6523
6524 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006526 ----------------------------------------------------------------------*/
6527 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6528 {
6529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006530 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006531 pWDICtx, pEventData);
6532 return WDI_STATUS_E_FAILURE;
6533 }
6534
6535 /*State at this point is BUSY - because we enter this state before posting
6536 an event to the FSM in order to prevent potential race conditions*/
6537
6538 /*Return Success*/
6539 return WDI_ProcessRequest( pWDICtx, pEventData );
6540
6541}/*WDI_MainReqStarted*/
6542
6543/**
6544 @brief Main FSM Response function for all states except INIT
6545
Jeff Johnsone7245742012-09-05 17:12:55 -07006546
6547 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006548 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006549
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 @see
6551 @return Result of the function call
6552*/
6553WDI_Status
6554WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006555(
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 WDI_ControlBlockType* pWDICtx,
6557 WDI_EventInfoType* pEventData
6558)
6559{
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 wpt_boolean expectedResponse;
6562
6563 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 ----------------------------------------------------------------------*/
6566 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6567 {
6568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 pWDICtx, pEventData);
6571 return WDI_STATUS_E_FAILURE;
6572 }
6573
6574 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6575 {
6576 /* we received an expected response */
6577 expectedResponse = eWLAN_PAL_TRUE;
6578
6579 /*We expect that we will transition to started after this processing*/
6580 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6581
6582 /* we are no longer expecting a response */
6583 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6584 }
6585 else
6586 {
6587 /* we received an indication or unexpected response */
6588 expectedResponse = eWLAN_PAL_FALSE;
6589 /* for indications no need to update state from what it is right
6590 now, unless it explicitly does it in the indication handler (say
6591 for device failure ind) */
6592 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6593 }
6594
6595 /*Process the response and indication */
6596 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6597
6598 /*Lock the CB as we are about to do a state transition*/
6599 wpalMutexAcquire(&pWDICtx->wptMutex);
6600
6601 /*Transition to the expected state after the response processing
6602 - this should always be started state with the following exceptions:
6603 1. processing of a failed start response
6604 2. device failure detected while processing response
6605 3. stop response received*/
6606 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006607
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 /*Dequeue request that may have been queued while we were waiting for the
6609 response */
6610 if ( expectedResponse )
6611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006612 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 }
6614
6615 wpalMutexRelease(&pWDICtx->wptMutex);
6616
6617 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006619
6620}/*WDI_MainRsp*/
6621
6622/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006624--------------------------------------------------------------------------*/
6625/**
6626 @brief Main FSM Stop function for state STOPPED
6627
Jeff Johnsone7245742012-09-05 17:12:55 -07006628
6629 @param pWDICtx: pointer to the WLAN DAL context
6630 pEventData: pointer to the event information structure
6631
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 @see
6633 @return Result of the function call
6634*/
6635WDI_Status
6636WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006637(
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 WDI_ControlBlockType* pWDICtx,
6639 WDI_EventInfoType* pEventData
6640)
6641{
6642 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 ----------------------------------------------------------------------*/
6645 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6646 {
6647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 pWDICtx, pEventData);
6650 return WDI_STATUS_E_FAILURE;
6651 }
6652
6653 /*We should normally not get a STOP request if we are already stopped
6654 since we should normally be stopped by the UMAC. However in some
6655 error situations we put ourselves in the stopped state without the
6656 UMAC knowing, so when we get a STOP request in this state we still
6657 process it since we need to clean up the underlying state */
6658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6659 "Processing stop request while stopped in FSM");
6660
6661 /*Return Success*/
6662 return WDI_ProcessRequest( pWDICtx, pEventData );
6663
6664}/*WDI_MainStopStopped*/
6665
6666/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006667 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006668--------------------------------------------------------------------------*/
6669/**
6670 @brief Main FSM Start 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_MainStartBusy
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 Start 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 start request");
6702
6703 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006705
6706 /*Return Success*/
6707 return WDI_STATUS_PENDING;
6708}/*WDI_MainStartBusy*/
6709
6710/**
6711 @brief Main FSM Stop function for state BUSY
6712
Jeff Johnsone7245742012-09-05 17:12:55 -07006713
6714 @param pWDICtx: pointer to the WLAN DAL context
6715 pEventData: pointer to the event information structure
6716
Jeff Johnson295189b2012-06-20 16:38:30 -07006717 @see
6718 @return Result of the function call
6719*/
6720WDI_Status
6721WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006722(
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 WDI_ControlBlockType* pWDICtx,
6724 WDI_EventInfoType* pEventData
6725)
6726{
6727 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 ----------------------------------------------------------------------*/
6730 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6731 {
6732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006733 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 pWDICtx, pEventData);
6735 return WDI_STATUS_E_FAILURE;
6736 }
6737
6738 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006739 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 ----------------------------------------------------------------------*/
6741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6742 "WDI Busy state - queue stop request");
6743
Jeff Johnsone7245742012-09-05 17:12:55 -07006744 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006746
Jeff Johnson295189b2012-06-20 16:38:30 -07006747}/*WDI_MainStopBusy*/
6748
6749/**
6750 @brief Main FSM Request function for state BUSY
6751
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
6753 @param pWDICtx: pointer to the WLAN DAL context
6754 pEventData: pointer to the event information structure
6755
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 @see
6757 @return Result of the function call
6758*/
6759WDI_Status
6760WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006761(
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 WDI_ControlBlockType* pWDICtx,
6763 WDI_EventInfoType* pEventData
6764)
6765{
6766 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 ----------------------------------------------------------------------*/
6769 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6770 {
6771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006772 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 pWDICtx, pEventData);
6774 return WDI_STATUS_E_FAILURE;
6775 }
6776
6777 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006778 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 ----------------------------------------------------------------------*/
6780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6781 "WDI Busy state - queue request %d because waiting for response %d",
6782 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6783
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006785 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006786
Jeff Johnson295189b2012-06-20 16:38:30 -07006787}/*WDI_MainReqBusy*/
6788/**
6789 @brief Main FSM Close function for state BUSY
6790
Jeff Johnsone7245742012-09-05 17:12:55 -07006791
6792 @param pWDICtx: pointer to the WLAN DAL context
6793 pEventData: pointer to the event information structure
6794
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 @see
6796 @return Result of the function call
6797*/
6798WDI_Status
6799WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006800(
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 WDI_ControlBlockType* pWDICtx,
6802 WDI_EventInfoType* pEventData
6803)
6804{
6805 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 ----------------------------------------------------------------------*/
6808 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6809 {
6810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 pWDICtx, pEventData);
6813 return WDI_STATUS_E_FAILURE;
6814 }
6815
6816 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006818 ----------------------------------------------------------------------*/
6819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6820 "WDI Busy state - queue close request");
6821
Jeff Johnsone7245742012-09-05 17:12:55 -07006822 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006824
Jeff Johnson295189b2012-06-20 16:38:30 -07006825}/*WDI_MainCloseBusy*/
6826
6827/**
6828 @brief Main FSM Shutdown function for INIT & STARTED states
6829
6830
6831 @param pWDICtx: pointer to the WLAN DAL context
6832 pEventData: pointer to the event information structure
6833
6834 @see
6835 @return Result of the function call
6836*/
6837WDI_Status
6838WDI_MainShutdown
6839(
6840 WDI_ControlBlockType* pWDICtx,
6841 WDI_EventInfoType* pEventData
6842)
6843{
6844 /*--------------------------------------------------------------------
6845 Sanity Check
6846 ----------------------------------------------------------------------*/
6847 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6848 {
6849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6850 "Invalid parameters on Main Start %x %x",
6851 pWDICtx, pEventData);
6852 return WDI_STATUS_E_FAILURE;
6853 }
6854
6855 /*State at this point is BUSY - because we enter this state before posting
6856 an event to the FSM in order to prevent potential race conditions*/
6857
6858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6859 "Processing shutdown request in FSM");
6860
6861 /*Return Success*/
6862 return WDI_ProcessRequest( pWDICtx, pEventData );
6863
6864}/*WDI_MainShutdown*/
6865
6866/**
6867 @brief Main FSM Shutdown function for BUSY state
6868
6869
6870 @param pWDICtx: pointer to the WLAN DAL context
6871 pEventData: pointer to the event information structure
6872
6873 @see
6874 @return Result of the function call
6875*/
6876WDI_Status
6877WDI_MainShutdownBusy
6878(
6879 WDI_ControlBlockType* pWDICtx,
6880 WDI_EventInfoType* pEventData
6881)
6882{
6883 /*--------------------------------------------------------------------
6884 Sanity Check
6885 ----------------------------------------------------------------------*/
6886 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6887 {
6888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6889 "Invalid parameters on Main Start %x %x",
6890 pWDICtx, pEventData);
6891 return WDI_STATUS_E_FAILURE;
6892 }
6893
6894 /* If you are waiting for a HAL response at this stage, you are not
6895 * going to get it. Riva is already shutdown/crashed.
6896 */
6897 wpalTimerStop(&gWDICb.wptResponseTimer);
6898
6899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6900 "Processing shutdown request in FSM: Busy state ");
6901
6902 return WDI_ProcessRequest( pWDICtx, pEventData );
6903
6904}/*WDI_MainShutdownBusy*/
6905
6906
Jeff Johnsone7245742012-09-05 17:12:55 -07006907/*=======================================================================
6908
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006910
Jeff Johnson295189b2012-06-20 16:38:30 -07006911*=======================================================================*/
6912
6913/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006914 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006915========================================================================*/
6916/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006919
6920 @param pWDICtx: pointer to the WLAN DAL context
6921 pEventData: pointer to the event information structure
6922
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 @see
6924 @return Result of the function call
6925*/
6926WDI_Status
6927WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006928(
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 WDI_ControlBlockType* pWDICtx,
6930 WDI_EventInfoType* pEventData
6931)
6932{
6933 WDI_StartReqParamsType* pwdiStartParams = NULL;
6934 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 wpt_uint16 usDataOffset = 0;
6937 wpt_uint16 usSendSize = 0;
6938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 tHalMacStartReqMsg halStartReq;
6940 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6942
6943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 -------------------------------------------------------------------------*/
6946 if (( NULL == pEventData ) ||
6947 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6948 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6949 {
6950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006954 }
6955
6956 /*-----------------------------------------------------------------------
6957 Get message buffer
6958 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006959 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 pwdiStartParams->usConfigBufferLen;
6961
Jeff Johnsone7245742012-09-05 17:12:55 -07006962 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 usLen,
6964 &pSendBuffer, &usDataOffset, &usSendSize))||
6965 ( usSendSize < (usDataOffset + usLen )))
6966 {
6967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6968 "Unable to get send buffer in start req %x %x %x",
6969 pEventData, pwdiStartParams, wdiStartRspCb);
6970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 }
6973
6974 /*-----------------------------------------------------------------------
6975 Fill in the message
6976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 halStartReq.startReqParams.driverType =
6978 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006979
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 halStartReq.startReqParams.uConfigBufferLen =
6981 pwdiStartParams->usConfigBufferLen;
6982 wpalMemoryCopy( pSendBuffer+usDataOffset,
6983 &halStartReq.startReqParams,
6984 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006985
Jeff Johnsone7245742012-09-05 17:12:55 -07006986 usDataOffset += sizeof(halStartReq.startReqParams);
6987 wpalMemoryCopy( pSendBuffer+usDataOffset,
6988 pwdiStartParams->pConfigBuffer,
6989 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006990
6991 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006992 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006993
6994 /*Save Low Level Ind CB and associated user data - it will be used further
6995 on when an indication is coming from the lower MAC*/
6996 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006997 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007001 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7005
Jeff Johnsone7245742012-09-05 17:12:55 -07007006
Jeff Johnson295189b2012-06-20 16:38:30 -07007007}/*WDI_ProcessStartReq*/
7008
7009/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007012
7013 @param pWDICtx: pointer to the WLAN DAL context
7014 pEventData: pointer to the event information structure
7015
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 @see
7017 @return Result of the function call
7018*/
7019WDI_Status
7020WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007021(
Jeff Johnson295189b2012-06-20 16:38:30 -07007022 WDI_ControlBlockType* pWDICtx,
7023 WDI_EventInfoType* pEventData
7024)
7025{
7026 WDI_StopReqParamsType* pwdiStopParams = NULL;
7027 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 wpt_uint16 usDataOffset = 0;
7030 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007031 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007032 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7034
7035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007037 -------------------------------------------------------------------------*/
7038 if (( NULL == pEventData ) ||
7039 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7040 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7041 {
7042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007044 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007045 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007046 }
7047
7048 /*-----------------------------------------------------------------------
7049 Get message buffer
7050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 sizeof(halStopReq.stopReqParams),
7053 &pSendBuffer, &usDataOffset, &usSendSize))||
7054 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7055 {
7056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7057 "Unable to get send buffer in stop req %x %x %x",
7058 pEventData, pwdiStopParams, wdiStopRspCb);
7059 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007060 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 }
7062
7063 /*-----------------------------------------------------------------------
7064 Fill in the message
7065 -----------------------------------------------------------------------*/
7066 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7067 pwdiStopParams->wdiStopReason);
7068
Jeff Johnsone7245742012-09-05 17:12:55 -07007069 wpalMemoryCopy( pSendBuffer+usDataOffset,
7070 &halStopReq.stopReqParams,
7071 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007072
7073 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007075
7076 /*! TO DO: stop the data services */
7077 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7078 {
7079 /*Stop the STA Table !UT- check this logic again
7080 It is safer to do it here than on the response - because a stop is imminent*/
7081 WDI_STATableStop(pWDICtx);
7082
7083 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007084 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7085 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 {
7087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7088 "WDI Init failed to reset power state event");
7089
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007091 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 }
7093 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007094 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7095 if( eWLAN_PAL_STATUS_SUCCESS != status )
7096 {
7097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7098 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7099 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007100 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007101 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007105 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7106 WDI_SET_POWER_STATE_TIMEOUT);
7107 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 {
7109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7110 "WDI Init failed to wait on an event");
7111
Jeff Johnsone7245742012-09-05 17:12:55 -07007112 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007113 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007114 }
7115 }
7116
7117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007118 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7122
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007123fail:
7124 // Release the message buffer so we don't leak
7125 wpalMemoryFree(pSendBuffer);
7126
7127failRequest:
7128 //WDA should have failure check to avoid the memory leak
7129 return WDI_STATUS_E_FAILURE;
7130
Jeff Johnson295189b2012-06-20 16:38:30 -07007131}/*WDI_ProcessStopReq*/
7132
7133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007134 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007136
7137 @param pWDICtx: pointer to the WLAN DAL context
7138 pEventData: pointer to the event information structure
7139
Jeff Johnson295189b2012-06-20 16:38:30 -07007140 @see
7141 @return Result of the function call
7142*/
7143WDI_Status
7144WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007145(
Jeff Johnson295189b2012-06-20 16:38:30 -07007146 WDI_ControlBlockType* pWDICtx,
7147 WDI_EventInfoType* pEventData
7148)
7149{
Jeff Johnsone7245742012-09-05 17:12:55 -07007150 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7152
7153 /*Lock control block for cleanup*/
7154 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007155
Jeff Johnson295189b2012-06-20 16:38:30 -07007156 /*Clear all pending request*/
7157 WDI_ClearPendingRequests(pWDICtx);
7158
7159 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007160 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007161
7162 /* Close Data transport*/
7163 /* FTM mode does not open Data Path */
7164 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7165 {
7166 WDTS_Close(pWDICtx);
7167 }
7168
7169 /*Close the STA Table !UT- check this logic again*/
7170 WDI_STATableClose(pWDICtx);
7171
7172 /*close the PAL */
7173 wptStatus = wpalClose(pWDICtx->pPALContext);
7174 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7175 {
7176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7177 "Failed to wpal Close %d", wptStatus);
7178 WDI_ASSERT(0);
7179 }
7180
7181 /*Transition back to init state*/
7182 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7183
7184 wpalMutexRelease(&pWDICtx->wptMutex);
7185
7186 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007188
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007190}/*WDI_ProcessCloseReq*/
7191
7192
7193/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007195===========================================================================*/
7196
7197/**
7198 @brief Process Init Scan Request function (called when Main FSM
7199 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007200
7201 @param pWDICtx: pointer to the WLAN DAL context
7202 pEventData: pointer to the event information structure
7203
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 @see
7205 @return Result of the function call
7206*/
7207WDI_Status
7208WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007209(
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 WDI_ControlBlockType* pWDICtx,
7211 WDI_EventInfoType* pEventData
7212)
7213{
7214 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7215 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 wpt_uint16 usDataOffset = 0;
7218 wpt_uint16 usSendSize = 0;
7219 wpt_uint8 i = 0;
7220
7221 tHalInitScanReqMsg halInitScanReqMsg;
7222
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 * It shold be removed once host and riva changes are in sync*/
7225 tHalInitScanConReqMsg halInitScanConReqMsg;
7226
7227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7228
7229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 -------------------------------------------------------------------------*/
7232 if (( NULL == pEventData ) ||
7233 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7234 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7235 {
7236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 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#if 0
7243 wpalMutexAcquire(&pWDICtx->wptMutex);
7244 /*-----------------------------------------------------------------------
7245 Check to see if SCAN is already in progress - if so reject the req
7246 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007247 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 -----------------------------------------------------------------------*/
7249 if ( pWDICtx->bScanInProgress )
7250 {
7251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7252 "Scan is already in progress - subsequent scan is not allowed"
7253 " until the first scan completes");
7254
7255 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007257 }
7258
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7260 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007261
7262 wpalMutexRelease(&pWDICtx->wptMutex);
7263#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007264 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007265 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 * It shold be removed once host and riva changes are in sync*/
7268 /*-----------------------------------------------------------------------
7269 Get message buffer
7270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 sizeof(halInitScanConReqMsg.initScanParams),
7273 &pSendBuffer, &usDataOffset, &usSendSize))||
7274 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7275 {
7276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7277 "Unable to get send buffer in init scan req %x %x %x",
7278 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007281 }
7282
7283
7284 /*-----------------------------------------------------------------------
7285 Fill in the message
7286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7289
7290 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7291 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7292
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7299
7300 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7301 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7302
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7304 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007305
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7308
7309 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7313 }
7314
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 wpalMemoryCopy( pSendBuffer+usDataOffset,
7316 &halInitScanConReqMsg.initScanParams,
7317 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 }
7319 else
7320 {
7321 /*-----------------------------------------------------------------------
7322 Get message buffer
7323 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007324 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007325 sizeof(halInitScanReqMsg.initScanParams),
7326 &pSendBuffer, &usDataOffset, &usSendSize))||
7327 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7328 {
7329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7330 "Unable to get send buffer in init scan req %x %x %x",
7331 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 }
7335
7336
7337 /*-----------------------------------------------------------------------
7338 Fill in the message
7339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7342
7343 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7344 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7345
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007348 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7352
7353 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7354 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7355
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7358
7359 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7360 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7363 }
7364
Jeff Johnsone7245742012-09-05 17:12:55 -07007365 wpalMemoryCopy( pSendBuffer+usDataOffset,
7366 &halInitScanReqMsg.initScanParams,
7367 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 }
7369
7370 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007372
7373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007374 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7378
7379}/*WDI_ProcessInitScanReq*/
7380
7381/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007384
7385 @param pWDICtx: pointer to the WLAN DAL context
7386 pEventData: pointer to the event information structure
7387
Jeff Johnson295189b2012-06-20 16:38:30 -07007388 @see
7389 @return Result of the function call
7390*/
7391WDI_Status
7392WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007393(
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 WDI_ControlBlockType* pWDICtx,
7395 WDI_EventInfoType* pEventData
7396)
7397{
7398 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7399 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 wpt_uint16 usDataOffset = 0;
7402 wpt_uint16 usSendSize = 0;
7403
Jeff Johnsone7245742012-09-05 17:12:55 -07007404 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7406
7407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 -------------------------------------------------------------------------*/
7410 if (( NULL == pEventData ) ||
7411 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7412 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7413 {
7414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 }
7419
7420#if 0
7421 wpalMutexAcquire(&pWDICtx->wptMutex);
7422 /*-----------------------------------------------------------------------
7423 Check to see if SCAN is already in progress - start scan is only
7424 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7429 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7430 {
7431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7432 "Scan start not allowed in this state %d %d",
7433 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007434
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 }
7438
Jeff Johnsone7245742012-09-05 17:12:55 -07007439 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007440
7441 wpalMutexRelease(&pWDICtx->wptMutex);
7442#endif
7443
7444 /*-----------------------------------------------------------------------
7445 Get message buffer
7446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 sizeof(halStartScanReqMsg.startScanParams),
7449 &pSendBuffer, &usDataOffset, &usSendSize))||
7450 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7451 {
7452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7453 "Unable to get send buffer in start scan req %x %x %x",
7454 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 }
7458
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 wpalMemoryCopy( pSendBuffer+usDataOffset,
7462 &halStartScanReqMsg.startScanParams,
7463 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007464
7465 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007467
7468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7473}/*WDI_ProcessStartScanReq*/
7474
7475
7476/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007479
7480 @param pWDICtx: pointer to the WLAN DAL context
7481 pEventData: pointer to the event information structure
7482
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 @see
7484 @return Result of the function call
7485*/
7486WDI_Status
7487WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007488(
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 WDI_ControlBlockType* pWDICtx,
7490 WDI_EventInfoType* pEventData
7491)
7492{
7493 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7494 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 wpt_uint16 usDataOffset = 0;
7497 wpt_uint16 usSendSize = 0;
7498
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7501
7502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 -------------------------------------------------------------------------*/
7505 if (( NULL == pEventData ) ||
7506 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7507 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7508 {
7509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 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
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7516 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 * forwarded to HAL and result in hang*/
7518#if 0
7519 wpalMutexAcquire(&pWDICtx->wptMutex);
7520 /*-----------------------------------------------------------------------
7521 Check to see if SCAN is already in progress - end scan is only
7522 allowed when a scan is ongoing and the state of the scan procedure
7523 is started
7524 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7527 {
7528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7529 "End start not allowed in this state %d %d",
7530 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007531
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 }
7535
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007537
7538 wpalMutexRelease(&pWDICtx->wptMutex);
7539#endif
7540
7541 /*-----------------------------------------------------------------------
7542 Get message buffer
7543 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 sizeof(halEndScanReqMsg.endScanParams),
7546 &pSendBuffer, &usDataOffset, &usSendSize))||
7547 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7548 {
7549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7550 "Unable to get send buffer in start scan req %x %x %x",
7551 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 }
7555
7556 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7557
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 wpalMemoryCopy( pSendBuffer+usDataOffset,
7559 &halEndScanReqMsg.endScanParams,
7560 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007561
7562 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007564
7565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007566 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7570}/*WDI_ProcessEndScanReq*/
7571
7572
7573/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007576
7577 @param pWDICtx: pointer to the WLAN DAL context
7578 pEventData: pointer to the event information structure
7579
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 @see
7581 @return Result of the function call
7582*/
7583WDI_Status
7584WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007585(
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 WDI_ControlBlockType* pWDICtx,
7587 WDI_EventInfoType* pEventData
7588)
7589{
7590 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7591 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007593 wpt_uint16 usDataOffset = 0;
7594 wpt_uint16 usSendSize = 0;
7595 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007596 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007597 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7599
7600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 -------------------------------------------------------------------------*/
7603 if (( NULL == pEventData ) ||
7604 ( NULL == pEventData->pEventData) ||
7605 ( NULL == pEventData->pCBfnc))
7606 {
7607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 }
7612
7613 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7614 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7616 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 * forwarded to HAL and result in hang*/
7618#if 0
7619 wpalMutexAcquire(&pWDICtx->wptMutex);
7620 /*-----------------------------------------------------------------------
7621 Check to see if SCAN is already in progress
7622 Finish scan gets invoked any scan states. ie. abort scan
7623 It should be allowed in any states.
7624 -----------------------------------------------------------------------*/
7625 if ( !pWDICtx->bScanInProgress )
7626 {
7627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7628 "Finish start not allowed in this state %d",
7629 pWDICtx->bScanInProgress );
7630
7631 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007633 }
7634
7635 /*-----------------------------------------------------------------------
7636 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7640 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 wpalMutexRelease(&pWDICtx->wptMutex);
7642#endif
7643
7644 if ( pWDICtx->bInBmps )
7645 {
7646 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007647 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7648 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7649 {
7650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7651 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7652 WDI_ASSERT(0);
7653 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 }
7655
7656 /*-----------------------------------------------------------------------
7657 Get message buffer
7658 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 sizeof(halFinishScanReqMsg.finishScanParams),
7661 &pSendBuffer, &usDataOffset, &usSendSize))||
7662 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7663 {
7664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7665 "Unable to get send buffer in start scan req %x %x %x",
7666 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 }
7670
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7673
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7676
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7679
7680 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7681 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7682
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007687 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7689
Jeff Johnsone7245742012-09-05 17:12:55 -07007690 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7692
7693 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7694 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007695 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7697 }
7698
7699 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7700 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7701
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 wpalMemoryCopy( pSendBuffer+usDataOffset,
7703 &halFinishScanReqMsg.finishScanParams,
7704 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007705
7706 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007708
7709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7714}/*WDI_ProcessFinishScanReq*/
7715
7716
7717/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007719==========================================================================*/
7720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007721 @brief Process BSS Join for a given Session
7722
7723 @param pWDICtx: pointer to the WLAN DAL context
7724 pEventData: pointer to the event information structure
7725
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 @see
7727 @return Result of the function call
7728*/
7729WDI_Status
7730WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007731(
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 WDI_ControlBlockType* pWDICtx,
7733 WDI_JoinReqParamsType* pwdiJoinParams,
7734 WDI_JoinRspCb wdiJoinRspCb,
7735 void* pUserData
7736)
7737{
7738 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 wpt_uint16 usDataOffset = 0;
7741 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007743
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7746
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007747 wpalMutexAcquire(&pWDICtx->wptMutex);
7748
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 /*------------------------------------------------------------------------
7750 Check to see if we have any session with this BSSID already stored, we
7751 should not
7752 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007753 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7754 pwdiJoinParams->wdiReqInfo.macBSSID,
7755 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007756
7757 if ( NULL != pBSSSes )
7758 {
7759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007760 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7761 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007762
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007763 /*reset the bAssociationInProgress otherwise the next
7764 *join request will be queued*/
7765 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7766 wpalMutexRelease(&pWDICtx->wptMutex);
7767 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 }
7769
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 if ( NULL == pBSSSes )
7775 {
7776
7777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7778 "DAL has no free sessions - cannot run another join");
7779
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007780 /*reset the bAssociationInProgress otherwise the next
7781 *join request will be queued*/
7782 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 }
7786
7787 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7789 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 WDI_MAC_ADDR_LEN);
7791
7792 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007795
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 wpalMutexRelease(&pWDICtx->wptMutex);
7797
7798 /*-----------------------------------------------------------------------
7799 Get message buffer
7800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 sizeof(halJoinReqMsg.joinReqParams),
7803 &pSendBuffer, &usDataOffset, &usSendSize))||
7804 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7805 {
7806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7807 "Unable to get send buffer in join req %x %x %x",
7808 pUserData, pwdiJoinParams, wdiJoinRspCb);
7809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 }
7812
7813 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007815
7816 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 pwdiJoinParams->wdiReqInfo.macSTASelf,
7818 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007819
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7822
7823 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7824
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007825#ifdef WLAN_FEATURE_VOWIFI
7826 halJoinReqMsg.joinReqParams.maxTxPower =
7827 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7828#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7831#endif
7832
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7835 wdiSecondaryChannelOffset);
7836
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 wpalMemoryCopy( pSendBuffer+usDataOffset,
7838 &halJoinReqMsg.joinReqParams,
7839 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007840
7841 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007843
7844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007845 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7848 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007849
7850}/*WDI_ProcessBSSSessionJoinReq*/
7851
7852/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007855
7856 @param pWDICtx: pointer to the WLAN DAL context
7857 pEventData: pointer to the event information structure
7858
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 @see
7860 @return Result of the function call
7861*/
7862WDI_Status
7863WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007864(
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 WDI_ControlBlockType* pWDICtx,
7866 WDI_EventInfoType* pEventData
7867)
7868{
7869 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7870 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7871 WDI_JoinRspCb wdiJoinRspCb = NULL;
7872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7873
7874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 -------------------------------------------------------------------------*/
7877 if (( NULL == pEventData ) ||
7878 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7879 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7880 {
7881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007886
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 /*-------------------------------------------------------------------------
7888 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 -------------------------------------------------------------------------*/
7891 wpalMutexAcquire(&pWDICtx->wptMutex);
7892
7893 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7894 {
7895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7896 "Association is currently in progress, queueing new join req");
7897
7898 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 pwdiJoinParams->wdiReqInfo.macBSSID);
7901
7902 wpalMutexRelease(&pWDICtx->wptMutex);
7903
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 }
7906
7907 /*Starting a new association */
7908 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7909 wpalMutexRelease(&pWDICtx->wptMutex);
7910
7911 /*Process the Join Request*/
7912 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7913 wdiJoinRspCb,pEventData->pUserData);
7914
7915}/*WDI_ProcessJoinReq*/
7916
7917
7918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007919 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007921
7922 @param pWDICtx: pointer to the WLAN DAL context
7923 pEventData: pointer to the event information structure
7924
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 @see
7926 @return Result of the function call
7927*/
7928WDI_Status
7929WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007930(
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 WDI_ControlBlockType* pWDICtx,
7932 WDI_EventInfoType* pEventData
7933)
7934{
7935 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7936 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 wpt_uint16 uMsgSize = 0;
7940 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 wpt_uint16 usDataOffset = 0;
7942 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007944
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7947
7948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 -------------------------------------------------------------------------*/
7951 if (( NULL == pEventData ) ||
7952 ( NULL == pEventData->pEventData ) ||
7953 ( NULL == pEventData->pCBfnc ))
7954 {
7955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 }
7960
7961 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7962 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7963 /*-------------------------------------------------------------------------
7964 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 -------------------------------------------------------------------------*/
7967 wpalMutexAcquire(&pWDICtx->wptMutex);
7968
7969 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7973 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7974 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007975
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 {
7978#ifdef WLAN_FEATURE_VOWIFI_11R
7979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 if ( NULL == pBSSSes )
7984 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007985
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7987 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007988
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007992
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7995 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007997
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8001#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008002 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 * Request in case of IBSS*/
8004 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8005 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8006 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8007 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8008 {
8009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 if ( NULL == pBSSSes )
8014 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008015
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8017 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008018
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008022
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8025 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008027
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8031 }
8032 else
8033 {
8034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8036 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8037 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8038
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 /* for IBSS testing */
8040 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 }
8043#endif
8044 }
8045
8046 /*------------------------------------------------------------------------
8047 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 ------------------------------------------------------------------------*/
8050 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8051 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8053 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8054 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8055 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008056
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008058
8059 wpalMutexRelease(&pWDICtx->wptMutex);
8060
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 }
8063
8064 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8066 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 sizeof(pWDICtx->wdiCachedConfigBssReq));
8068
8069 wpalMutexRelease(&pWDICtx->wptMutex);
8070
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8072#ifdef WLAN_FEATURE_11AC
8073 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008074 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 else
8076#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008077 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008078
8079 /*-----------------------------------------------------------------------
8080 Get message buffer
8081 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8084 ( usSendSize < (usDataOffset + uMsgSize )))
8085 {
8086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8087 "Unable to get send buffer in config bss req %x %x %x",
8088 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 }
8092
8093 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008094#ifdef WLAN_FEATURE_11AC
8095 if (WDI_getFwWlanFeatCaps(DOT11AC))
8096 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8097 &pwdiConfigBSSParams->wdiReqInfo);
8098 else
8099#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 &pwdiConfigBSSParams->wdiReqInfo);
8102
8103 /* Need to fill in the STA Index to invalid, since at this point we have not
8104 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008106
8107 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8109
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008110#ifdef WLAN_FEATURE_11AC
8111 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8112 wpalMemoryCopy( pSendBuffer+usDataOffset,
8113 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8114 uMsgSize);
8115 }else
8116#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008117 {
8118 if ( uMsgSize <= sizeof(tConfigBssParams) )
8119 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008120 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008121 &halConfigBssReqMsg.uBssParams.configBssParams,
8122 uMsgSize);
8123 }
8124 else
8125 {
8126 return WDI_STATUS_E_FAILURE;
8127 }
8128 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008129
8130 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008132
8133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8137 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 WDI_CONFIG_BSS_RESP);
8139
8140}/*WDI_ProcessConfigBSSReq*/
8141
8142
8143/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008146
8147 @param pWDICtx: pointer to the WLAN DAL context
8148 pEventData: pointer to the event information structure
8149
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 @see
8151 @return Result of the function call
8152*/
8153WDI_Status
8154WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008155(
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 WDI_ControlBlockType* pWDICtx,
8157 WDI_EventInfoType* pEventData
8158)
8159{
8160 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8161 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008162 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008164 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 wpt_uint16 usDataOffset = 0;
8166 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8171
8172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 -------------------------------------------------------------------------*/
8175 if (( NULL == pEventData ) ||
8176 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8177 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8178 {
8179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 }
8184
8185 /*-------------------------------------------------------------------------
8186 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 -------------------------------------------------------------------------*/
8189 wpalMutexAcquire(&pWDICtx->wptMutex);
8190
8191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008193 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8195 pwdiDelBSSParams->ucBssIdx,
8196 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008197
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 {
8200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 "%s: BSS does not yet exist. ucBssIdx %d",
8202 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008203
8204 wpalMutexRelease(&pWDICtx->wptMutex);
8205
8206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008208
8209 /*------------------------------------------------------------------------
8210 Check if this BSS is being currently processed or queued,
8211 if queued - queue the new request as well
8212 ------------------------------------------------------------------------*/
8213 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8216 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8217 __func__, pwdiDelBSSParams->ucBssIdx);
8218
8219 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8220
8221 wpalMutexRelease(&pWDICtx->wptMutex);
8222
8223 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008224 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008225
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 /*-----------------------------------------------------------------------
8227 If we receive a Del BSS request for an association that is already in
8228 progress, it indicates that the assoc has failed => we no longer have
8229 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 -----------------------------------------------------------------------*/
8232 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8233 {
8234 /*We can switch to false here because even if a subsequent Join comes in
8235 it will only be processed when DAL transitions out of BUSY state which
8236 happens when the Del BSS request comes */
8237 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8238
8239 /*Former association is complete - prepare next pending assoc for
8240 processing */
8241 WDI_DequeueAssocRequest(pWDICtx);
8242 }
8243
8244 wpalMutexRelease(&pWDICtx->wptMutex);
8245 /*-----------------------------------------------------------------------
8246 Get message buffer
8247 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 sizeof(halBssReqMsg.deleteBssParams),
8250 &pSendBuffer, &usDataOffset, &usSendSize))||
8251 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8252 {
8253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8254 "Unable to get send buffer in start req %x %x %x",
8255 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 }
8259
8260 /*Fill in the message request structure*/
8261
8262 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008263 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008264
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 wpalMemoryCopy( pSendBuffer+usDataOffset,
8266 &halBssReqMsg.deleteBssParams,
8267 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008268
8269 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008271
Jeff Johnsone7245742012-09-05 17:12:55 -07008272
Jeff Johnson295189b2012-06-20 16:38:30 -07008273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008274 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8278
Jeff Johnsone7245742012-09-05 17:12:55 -07008279
Jeff Johnson295189b2012-06-20 16:38:30 -07008280}/*WDI_ProcessDelBSSReq*/
8281
8282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008285
8286 @param pWDICtx: pointer to the WLAN DAL context
8287 pEventData: pointer to the event information structure
8288
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 @see
8290 @return Result of the function call
8291*/
8292WDI_Status
8293WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008294(
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 WDI_ControlBlockType* pWDICtx,
8296 WDI_EventInfoType* pEventData
8297)
8298{
8299 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8300 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 wpt_uint16 usDataOffset = 0;
8305 wpt_uint16 usSendSize = 0;
8306 wpt_uint16 uMsgSize = 0;
8307 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008309
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8312
8313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 -------------------------------------------------------------------------*/
8316 if (( NULL == pEventData ) ||
8317 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8318 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8319 {
8320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 }
8325
8326 /*-------------------------------------------------------------------------
8327 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 -------------------------------------------------------------------------*/
8330 wpalMutexAcquire(&pWDICtx->wptMutex);
8331
8332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008334 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8336 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8337 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008338
8339 if ( NULL == pBSSSes )
8340 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8342 "%s: Association sequence for this BSS does not yet exist - "
8343 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8344 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008345
8346 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 }
8349
8350 /*------------------------------------------------------------------------
8351 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 ------------------------------------------------------------------------*/
8354 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8355 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8357 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8358 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008359
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008361
8362 wpalMutexRelease(&pWDICtx->wptMutex);
8363
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 }
8366
8367 /*-----------------------------------------------------------------------
8368 If Post Assoc was not yet received - the current association must
8369 be in progress
8370 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8373 {
8374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8375 "Association sequence for this BSS association no longer in "
8376 "progress - not allowed");
8377
8378 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 }
8381
8382 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 -----------------------------------------------------------------------*/
8385 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8386 {
8387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8388 "Post Assoc not allowed before JOIN - failing request");
8389
8390 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 }
8393
8394 wpalMutexRelease(&pWDICtx->wptMutex);
8395
8396 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8397 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8398 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8403 ( usSendSize < (usDataOffset + uMsgSize )))
8404 {
8405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8406 "Unable to get send buffer in start req %x %x %x",
8407 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 }
8411
8412 /*Copy the STA parameters */
8413 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8414 &pwdiPostAssocParams->wdiSTAParams );
8415
8416 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 WDI_STATableFindStaidByAddr(pWDICtx,
8419 pwdiPostAssocParams->wdiSTAParams.macSTA,
8420 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8421 {
8422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8423 "This station does not exist in the WDI Station Table %d");
8424 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008425 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 }
8428
8429 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 pBSSSes->ucBSSIdx;
8432
8433 /*Copy the BSS parameters */
8434 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8435 &pwdiPostAssocParams->wdiBSSParams);
8436
8437 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 WDI_STATableFindStaidByAddr(pWDICtx,
8440 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 {
8443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8444 "This station does not exist in the WDI Station Table %d");
8445 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008446 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 }
8449
8450 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 pBSSSes->ucBSSIdx;
8453
Jeff Johnsone7245742012-09-05 17:12:55 -07008454
8455 wpalMemoryCopy( pSendBuffer+usDataOffset,
8456 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8457 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008458
8459 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8460
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8462 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8463 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008464
Jeff Johnsone7245742012-09-05 17:12:55 -07008465
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008468
Jeff Johnsone7245742012-09-05 17:12:55 -07008469
8470 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008473
8474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8479
Jeff Johnsone7245742012-09-05 17:12:55 -07008480
Jeff Johnson295189b2012-06-20 16:38:30 -07008481}/*WDI_ProcessPostAssocReq*/
8482
8483/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008486
8487 @param pWDICtx: pointer to the WLAN DAL context
8488 pEventData: pointer to the event information structure
8489
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 @see
8491 @return Result of the function call
8492*/
8493WDI_Status
8494WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008495(
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 WDI_ControlBlockType* pWDICtx,
8497 WDI_EventInfoType* pEventData
8498)
8499{
8500 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8501 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 wpt_uint16 usDataOffset = 0;
8506 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8509
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8512
8513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008515 -------------------------------------------------------------------------*/
8516 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8517 ( NULL == pEventData->pCBfnc ))
8518 {
8519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 }
8524
8525 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8526 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8527 /*-------------------------------------------------------------------------
8528 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 -------------------------------------------------------------------------*/
8531 wpalMutexAcquire(&pWDICtx->wptMutex);
8532
8533 /*------------------------------------------------------------------------
8534 Find the BSS for which the request is made and identify WDI session
8535 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8537 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 &macBSSID))
8539 {
8540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8541 "This station does not exist in the WDI Station Table %d");
8542 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 }
8545
Jeff Johnsone7245742012-09-05 17:12:55 -07008546 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8547 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8550 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8551 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008552
8553 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 }
8556
8557 /*------------------------------------------------------------------------
8558 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 ------------------------------------------------------------------------*/
8561 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8562 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8564 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8565 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008566
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 }
8571
8572 wpalMutexRelease(&pWDICtx->wptMutex);
8573 /*-----------------------------------------------------------------------
8574 Get message buffer
8575 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 sizeof(halDelStaReqMsg.delStaParams),
8578 &pSendBuffer, &usDataOffset, &usSendSize))||
8579 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8580 {
8581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8582 "Unable to get send buffer in start req %x %x %x",
8583 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008586 }
8587
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8589 wpalMemoryCopy( pSendBuffer+usDataOffset,
8590 &halDelStaReqMsg.delStaParams,
8591 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008592
8593 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008595
8596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8601
8602}/*WDI_ProcessDelSTAReq*/
8603
8604
8605/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008607==========================================================================*/
8608/**
8609 @brief Process Set BSS Key Request function (called when Main FSM
8610 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008611
8612 @param pWDICtx: pointer to the WLAN DAL context
8613 pEventData: pointer to the event information structure
8614
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 @see
8616 @return Result of the function call
8617*/
8618WDI_Status
8619WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008620(
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 WDI_ControlBlockType* pWDICtx,
8622 WDI_EventInfoType* pEventData
8623)
8624{
8625 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8626 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 wpt_uint16 usDataOffset = 0;
8631 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8634 wpt_uint8 keyIndex = 0;
8635
8636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8637
8638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 -------------------------------------------------------------------------*/
8641 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8642 ( NULL == pEventData->pCBfnc ))
8643 {
8644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 }
8649
8650 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8651 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8652 /*-------------------------------------------------------------------------
8653 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 -------------------------------------------------------------------------*/
8656 wpalMutexAcquire(&pWDICtx->wptMutex);
8657
8658 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8662 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8663 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008664
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 {
8667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8669 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008670
8671 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 }
8674
8675 /*------------------------------------------------------------------------
8676 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 ------------------------------------------------------------------------*/
8679 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8680 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8682 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8683 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008684
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 }
8689
8690
8691 wpalMutexRelease(&pWDICtx->wptMutex);
8692 /*-----------------------------------------------------------------------
8693 Get message buffer
8694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8697 &pSendBuffer, &usDataOffset, &usSendSize))||
8698 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8699 {
8700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8701 "Unable to get send buffer in set bss key req %x %x %x",
8702 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707 /*-----------------------------------------------------------------------
8708 Copy the Key parameters into the HAL message
8709 -----------------------------------------------------------------------*/
8710
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008712
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8715
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8718
8719 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8720 keyIndex++)
8721 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8724 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8725 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8726 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8727 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8728 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008732 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8735 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 WDI_MAX_KEY_LENGTH);
8738 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008739
8740 wpalMemoryCopy( pSendBuffer+usDataOffset,
8741 &halSetBssKeyReqMsg.setBssKeyParams,
8742 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008743
8744 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008746
8747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8751 wdiSetBSSKeyRspCb, pEventData->pUserData,
8752 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
8754}/*WDI_ProcessSetBssKeyReq*/
8755
8756/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008759
8760 @param pWDICtx: pointer to the WLAN DAL context
8761 pEventData: pointer to the event information structure
8762
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 @see
8764 @return Result of the function call
8765*/
8766WDI_Status
8767WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008768(
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 WDI_ControlBlockType* pWDICtx,
8770 WDI_EventInfoType* pEventData
8771)
8772{
8773 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8774 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 wpt_uint16 usDataOffset = 0;
8779 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8783
8784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 -------------------------------------------------------------------------*/
8787 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8788 ( NULL == pEventData->pCBfnc ))
8789 {
8790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 }
8795
8796 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8797 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8798 /*-------------------------------------------------------------------------
8799 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 -------------------------------------------------------------------------*/
8802 wpalMutexAcquire(&pWDICtx->wptMutex);
8803
8804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8808 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8809 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008810
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 {
8813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8815 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008816
8817 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 }
8820
8821 /*------------------------------------------------------------------------
8822 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 ------------------------------------------------------------------------*/
8825 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8826 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8828 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8829 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008830
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 }
8835
8836
8837 wpalMutexRelease(&pWDICtx->wptMutex);
8838
8839 /*-----------------------------------------------------------------------
8840 Get message buffer
8841 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8844 &pSendBuffer, &usDataOffset, &usSendSize))||
8845 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8846 {
8847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8848 "Unable to get send buffer in set bss key req %x %x %x",
8849 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 }
8853 /*-----------------------------------------------------------------------
8854 Copy the Key parameters into the HAL message
8855 -----------------------------------------------------------------------*/
8856 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8857
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8860
8861 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8862
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8865
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 wpalMemoryCopy( pSendBuffer+usDataOffset,
8867 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8868 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008869
8870 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008872
8873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008879}/*WDI_ProcessRemoveBssKeyReq*/
8880
8881/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008884
8885 @param pWDICtx: pointer to the WLAN DAL context
8886 pEventData: pointer to the event information structure
8887
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 @see
8889 @return Result of the function call
8890*/
8891WDI_Status
8892WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008893(
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 WDI_ControlBlockType* pWDICtx,
8895 WDI_EventInfoType* pEventData
8896)
8897{
8898 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8899 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8900 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 wpt_uint16 usDataOffset = 0;
8903 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008904 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8908 wpt_uint8 keyIndex = 0;
8909
8910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8911
8912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 -------------------------------------------------------------------------*/
8915 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8916 ( NULL == pEventData->pCBfnc ))
8917 {
8918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 }
8923
8924 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8925 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8926 /*-------------------------------------------------------------------------
8927 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 -------------------------------------------------------------------------*/
8930 wpalMutexAcquire(&pWDICtx->wptMutex);
8931
8932 /*------------------------------------------------------------------------
8933 Find the BSS for which the request is made and identify WDI session
8934 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8936 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 &macBSSID))
8938 {
8939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8940 "This station does not exist in the WDI Station Table %d");
8941 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 }
8944
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8946 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8949 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8950 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008951
8952 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008955
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 /*------------------------------------------------------------------------
8957 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 ------------------------------------------------------------------------*/
8960 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8961 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8963 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8964 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008965
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 }
8970
8971
8972 wpalMutexRelease(&pWDICtx->wptMutex);
8973 /*-----------------------------------------------------------------------
8974 Get message buffer
8975 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8978 &pSendBuffer, &usDataOffset, &usSendSize))||
8979 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8980 {
8981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8982 "Unable to get send buffer in set bss key req %x %x %x",
8983 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 }
8987 /*-----------------------------------------------------------------------
8988 Copy the STA Key parameters into the HAL message
8989 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8992
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8995
8996 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8997
8998 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8999
9000 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9001
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9003 keyIndex++)
9004 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9007 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9008 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9009 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9010 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9011 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9018 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 WDI_MAX_KEY_LENGTH);
9021 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009022
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 wpalMemoryCopy( pSendBuffer+usDataOffset,
9024 &halSetStaKeyReqMsg.setStaKeyParams,
9025 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009026
9027 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009029
9030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9034 wdiSetSTAKeyRspCb, pEventData->pUserData,
9035 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009036
9037}/*WDI_ProcessSetSTAKeyReq*/
9038
9039/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009042
9043 @param pWDICtx: pointer to the WLAN DAL context
9044 pEventData: pointer to the event information structure
9045
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 @see
9047 @return Result of the function call
9048*/
9049WDI_Status
9050WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009051(
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 WDI_ControlBlockType* pWDICtx,
9053 WDI_EventInfoType* pEventData
9054)
9055{
9056 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9057 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9058 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 wpt_uint16 usDataOffset = 0;
9061 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 wpt_macAddr macBSSID;
9064 wpt_uint8 ucCurrentBSSSesIdx;
9065 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9067
9068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 -------------------------------------------------------------------------*/
9071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9072 ( NULL == pEventData->pCBfnc ))
9073 {
9074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 }
9079
9080 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9081 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9082 /*-------------------------------------------------------------------------
9083 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 -------------------------------------------------------------------------*/
9086 wpalMutexAcquire(&pWDICtx->wptMutex);
9087
9088 /*------------------------------------------------------------------------
9089 Find the BSS for which the request is made and identify WDI session
9090 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9092 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 &macBSSID))
9094 {
9095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9096 "This station does not exist in the WDI Station Table %d");
9097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 }
9100
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9102 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9105 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9106 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009107
9108 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009111
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 /*------------------------------------------------------------------------
9113 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 ------------------------------------------------------------------------*/
9116 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9117 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9119 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9120 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009121
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 }
9126
9127
9128
9129 wpalMutexRelease(&pWDICtx->wptMutex);
9130 /*-----------------------------------------------------------------------
9131 Get message buffer
9132 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9135 &pSendBuffer, &usDataOffset, &usSendSize))||
9136 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9137 {
9138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9139 "Unable to get send buffer in set bss key req %x %x %x",
9140 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 }
9144
9145 /*-----------------------------------------------------------------------
9146 Copy the Key parameters into the HAL message
9147 -----------------------------------------------------------------------*/
9148
Jeff Johnsone7245742012-09-05 17:12:55 -07009149 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9151
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9154
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9160
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 wpalMemoryCopy( pSendBuffer+usDataOffset,
9162 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9163 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009164
9165 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009167
9168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009174
9175}/*WDI_ProcessRemoveSTAKeyReq*/
9176
9177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009180
9181 @param pWDICtx: pointer to the WLAN DAL context
9182 pEventData: pointer to the event information structure
9183
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 @see
9185 @return Result of the function call
9186*/
9187WDI_Status
9188WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009189(
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 WDI_ControlBlockType* pWDICtx,
9191 WDI_EventInfoType* pEventData
9192)
9193{
9194 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9195 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9196 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 wpt_uint16 usDataOffset = 0;
9199 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9204 wpt_uint8 keyIndex = 0;
9205
9206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9207
9208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 -------------------------------------------------------------------------*/
9211 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9212 ( NULL == pEventData->pCBfnc ))
9213 {
9214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 }
9219
9220 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9221 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9222 /*-------------------------------------------------------------------------
9223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 -------------------------------------------------------------------------*/
9226 wpalMutexAcquire(&pWDICtx->wptMutex);
9227
9228 /*------------------------------------------------------------------------
9229 Find the BSS for which the request is made and identify WDI session
9230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9232 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 &macBSSID))
9234 {
9235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9236 "This station does not exist in the WDI Station Table %d");
9237 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 }
9240
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9242 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 {
9244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9246 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009247
9248 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009251
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 /*------------------------------------------------------------------------
9253 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 ------------------------------------------------------------------------*/
9256 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9257 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9259 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9260 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009261
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 }
9266
9267
9268 wpalMutexRelease(&pWDICtx->wptMutex);
9269 /*-----------------------------------------------------------------------
9270 Get message buffer
9271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9274 &pSendBuffer, &usDataOffset, &usSendSize))||
9275 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9276 {
9277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9278 "Unable to get send buffer in set bss key req %x %x %x",
9279 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 }
9283 /*-----------------------------------------------------------------------
9284 Copy the STA Key parameters into the HAL message
9285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9288
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9291
9292 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9293
9294 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9295
9296 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9297
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9299 keyIndex++)
9300 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9303 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9304 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9305 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9306 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9307 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9314 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 WDI_MAX_KEY_LENGTH);
9317 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009318
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 wpalMemoryCopy( pSendBuffer+usDataOffset,
9320 &halSetStaKeyReqMsg.setStaKeyParams,
9321 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009322
9323 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325
9326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9330 wdiSetSTAKeyRspCb, pEventData->pUserData,
9331 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009332
9333}/*WDI_ProcessSetSTABcastKeyReq*/
9334
9335/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009338
9339 @param pWDICtx: pointer to the WLAN DAL context
9340 pEventData: pointer to the event information structure
9341
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 @see
9343 @return Result of the function call
9344*/
9345WDI_Status
9346WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009347(
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 WDI_ControlBlockType* pWDICtx,
9349 WDI_EventInfoType* pEventData
9350)
9351{
9352 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9353 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9354 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 wpt_uint16 usDataOffset = 0;
9357 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 wpt_macAddr macBSSID;
9360 wpt_uint8 ucCurrentBSSSesIdx;
9361 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9363
9364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 -------------------------------------------------------------------------*/
9367 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9368 ( NULL == pEventData->pCBfnc ))
9369 {
9370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 }
9375
9376 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9377 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9378 /*-------------------------------------------------------------------------
9379 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 -------------------------------------------------------------------------*/
9382 wpalMutexAcquire(&pWDICtx->wptMutex);
9383
9384 /*------------------------------------------------------------------------
9385 Find the BSS for which the request is made and identify WDI session
9386 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9388 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009389 &macBSSID))
9390 {
9391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9392 "This station does not exist in the WDI Station Table %d");
9393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 }
9396
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9398 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9401 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9402 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009403
9404 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009407
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 /*------------------------------------------------------------------------
9409 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 ------------------------------------------------------------------------*/
9412 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9413 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9415 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9416 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 }
9422
9423
9424
9425 wpalMutexRelease(&pWDICtx->wptMutex);
9426 /*-----------------------------------------------------------------------
9427 Get message buffer
9428 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9431 &pSendBuffer, &usDataOffset, &usSendSize))||
9432 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9433 {
9434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9435 "Unable to get send buffer in set bss key req %x %x %x",
9436 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 }
9440
9441 /*-----------------------------------------------------------------------
9442 Copy the Key parameters into the HAL message
9443 -----------------------------------------------------------------------*/
9444
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9447
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9450
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9453
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9456
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 wpalMemoryCopy( pSendBuffer+usDataOffset,
9458 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9459 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009460
9461 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463
9464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009470
9471}/*WDI_ProcessRemoveSTABcastKeyReq*/
9472
9473/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009475==========================================================================*/
9476/**
9477 @brief Process Add TSpec Request function (called when Main FSM
9478 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009479
9480 @param pWDICtx: pointer to the WLAN DAL context
9481 pEventData: pointer to the event information structure
9482
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 @see
9484 @return Result of the function call
9485*/
9486WDI_Status
9487WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009488(
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 WDI_ControlBlockType* pWDICtx,
9490 WDI_EventInfoType* pEventData
9491)
9492{
9493 WDI_AddTSReqParamsType* pwdiAddTSParams;
9494 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 wpt_uint16 usDataOffset = 0;
9499 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 wpt_macAddr macBSSID;
9502 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009503
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9505
9506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 -------------------------------------------------------------------------*/
9509 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9510 ( NULL == pEventData->pCBfnc ))
9511 {
9512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 }
9517
9518 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9519 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9520 /*-------------------------------------------------------------------------
9521 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 -------------------------------------------------------------------------*/
9524 wpalMutexAcquire(&pWDICtx->wptMutex);
9525
9526 /*------------------------------------------------------------------------
9527 Find the BSS for which the request is made and identify WDI session
9528 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9530 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009531 &macBSSID))
9532 {
9533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9534 "This station does not exist in the WDI Station Table %d");
9535 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 }
9538
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9540 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9543 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9544 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009545
9546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009549
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 /*------------------------------------------------------------------------
9551 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 ------------------------------------------------------------------------*/
9554 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9555 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9557 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9558 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009559
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 }
9564
9565 wpalMutexRelease(&pWDICtx->wptMutex);
9566 /*-----------------------------------------------------------------------
9567 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9571 sizeof(halAddTsParams),
9572 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 &usSendSize))||
9574 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9575 {
9576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9577 "Unable to get send buffer in set bss key req %x %x %x",
9578 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 }
9582
9583 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9584 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9585
9586 //TSPEC IE
9587 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9588 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9619
9620 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9635
9636 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9641
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 wpalMemoryCopy( pSendBuffer+usDataOffset,
9643 &halAddTsParams,
9644 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009645
9646 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009648
9649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009655}/*WDI_ProcessAddTSpecReq*/
9656
9657
9658/**
9659 @brief Process Del TSpec Request function (called when Main FSM
9660 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009661
9662 @param pWDICtx: pointer to the WLAN DAL context
9663 pEventData: pointer to the event information structure
9664
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 @see
9666 @return Result of the function call
9667*/
9668WDI_Status
9669WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009670(
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 WDI_ControlBlockType* pWDICtx,
9672 WDI_EventInfoType* pEventData
9673)
9674{
9675 WDI_DelTSReqParamsType* pwdiDelTSParams;
9676 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 wpt_uint16 usDataOffset = 0;
9681 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9684
9685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 -------------------------------------------------------------------------*/
9688 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9689 ( NULL == pEventData->pCBfnc ))
9690 {
9691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 }
9696
9697 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9698 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9699
9700 /*-------------------------------------------------------------------------
9701 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 -------------------------------------------------------------------------*/
9704 wpalMutexAcquire(&pWDICtx->wptMutex);
9705
9706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9710 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9711 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009712
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9716 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9717 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9718
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 }
9722
9723 /*------------------------------------------------------------------------
9724 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 ------------------------------------------------------------------------*/
9727 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9728 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9730 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9731 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009732
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 }
9737
9738
9739 wpalMutexRelease(&pWDICtx->wptMutex);
9740 /*-----------------------------------------------------------------------
9741 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009745 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9746 &pSendBuffer, &usDataOffset, &usSendSize))||
9747 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9748 {
9749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9750 "Unable to get send buffer in set bss key req %x %x %x",
9751 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 }
9755
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 wpalMemoryCopy( pSendBuffer+usDataOffset,
9757 &pwdiDelTSParams->wdiDelTSInfo,
9758 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009759
9760 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009762
9763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9767 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009768}/*WDI_ProcessDelTSpecReq*/
9769
9770/**
9771 @brief Process Update EDCA Params Request function (called when
9772 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009773
9774 @param pWDICtx: pointer to the WLAN DAL context
9775 pEventData: pointer to the event information structure
9776
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 @see
9778 @return Result of the function call
9779*/
9780WDI_Status
9781WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009782(
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 WDI_ControlBlockType* pWDICtx,
9784 WDI_EventInfoType* pEventData
9785)
9786{
9787 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9788 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 wpt_uint16 usDataOffset = 0;
9793 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9796
9797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 -------------------------------------------------------------------------*/
9800 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9801 ( NULL == pEventData->pCBfnc ))
9802 {
9803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 }
9808
9809 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9810 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9811 /*-------------------------------------------------------------------------
9812 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 -------------------------------------------------------------------------*/
9815 wpalMutexAcquire(&pWDICtx->wptMutex);
9816
9817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9821 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9822 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009823
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 {
9826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9828 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 }
9833
9834 /*------------------------------------------------------------------------
9835 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 ------------------------------------------------------------------------*/
9838 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9839 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9841 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9842 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009843
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 }
9848
9849
9850 wpalMutexRelease(&pWDICtx->wptMutex);
9851 /*-----------------------------------------------------------------------
9852 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9857 &pSendBuffer, &usDataOffset, &usSendSize))||
9858 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9859 {
9860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9861 "Unable to get send buffer in set bss key req %x %x %x",
9862 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 }
9866
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 wpalMemoryCopy( pSendBuffer+usDataOffset,
9868 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9869 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009870
9871 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009873
9874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9878 wdiUpdateEDCARspCb, pEventData->pUserData,
9879 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009880}/*WDI_ProcessUpdateEDCAParamsReq*/
9881
9882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009885
9886 @param pWDICtx: pointer to the WLAN DAL context
9887 pEventData: pointer to the event information structure
9888
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 @see
9890 @return Result of the function call
9891*/
9892WDI_Status
9893WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009894(
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 WDI_ControlBlockType* pWDICtx,
9896 WDI_EventInfoType* pEventData
9897)
9898{
9899 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9900 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 wpt_uint16 usDataOffset = 0;
9905 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 wpt_macAddr macBSSID;
9908
9909 tAddBASessionReqMsg halAddBASessionReq;
9910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9911
9912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 -------------------------------------------------------------------------*/
9915 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9916 ( NULL == pEventData->pCBfnc ))
9917 {
9918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 }
9923
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9928 /*-------------------------------------------------------------------------
9929 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 -------------------------------------------------------------------------*/
9932 wpalMutexAcquire(&pWDICtx->wptMutex);
9933
9934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9938 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 &macBSSID))
9940 {
9941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9942 "This station does not exist in the WDI Station Table %d");
9943 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 }
9946
9947
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009949
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9953 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9954 __func__, MAC_ADDR_ARRAY(macBSSID));
9955
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 }
9959
9960 /*------------------------------------------------------------------------
9961 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 ------------------------------------------------------------------------*/
9964 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9965 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9967 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9968 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009969
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 }
9974
9975
9976 wpalMutexRelease(&pWDICtx->wptMutex);
9977 /*-----------------------------------------------------------------------
9978 Get message buffer
9979 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9981 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 sizeof(halAddBASessionReq.addBASessionParams),
9983 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9986 {
9987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9988 "Unable to get send buffer in Add BA session req %x %x %x",
9989 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 }
9993
9994 halAddBASessionReq.addBASessionParams.staIdx =
9995 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9996 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9997 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9998 WDI_MAC_ADDR_LEN);
9999 halAddBASessionReq.addBASessionParams.baTID =
10000 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10001 halAddBASessionReq.addBASessionParams.baPolicy =
10002 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10003 halAddBASessionReq.addBASessionParams.baBufferSize =
10004 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10005 halAddBASessionReq.addBASessionParams.baTimeout =
10006 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10007 halAddBASessionReq.addBASessionParams.baSSN =
10008 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10009 halAddBASessionReq.addBASessionParams.baDirection =
10010 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10011
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 wpalMemoryCopy( pSendBuffer+usDataOffset,
10013 &halAddBASessionReq.addBASessionParams,
10014 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010015
10016 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010018
10019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10023 wdiAddBASessionRspCb, pEventData->pUserData,
10024 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010025}/*WDI_ProcessAddBASessionReq*/
10026
10027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010030
10031 @param pWDICtx: pointer to the WLAN DAL context
10032 pEventData: pointer to the event information structure
10033
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 @see
10035 @return Result of the function call
10036*/
10037WDI_Status
10038WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010039(
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 WDI_ControlBlockType* pWDICtx,
10041 WDI_EventInfoType* pEventData
10042)
10043{
10044 WDI_DelBAReqParamsType* pwdiDelBAParams;
10045 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 wpt_uint16 usDataOffset = 0;
10050 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 wpt_macAddr macBSSID;
10053 tDelBAParams halDelBAparam;
10054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10055
10056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 -------------------------------------------------------------------------*/
10059 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10060 ( NULL == pEventData->pCBfnc ))
10061 {
10062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 }
10067
10068 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10069 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10070 /*-------------------------------------------------------------------------
10071 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 -------------------------------------------------------------------------*/
10074 wpalMutexAcquire(&pWDICtx->wptMutex);
10075
10076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10080 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 &macBSSID))
10082 {
10083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10084 "This station does not exist in the WDI Station Table %d");
10085 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 }
10088
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010090
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10094 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10095 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010096
10097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 }
10100
10101 /*------------------------------------------------------------------------
10102 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 ------------------------------------------------------------------------*/
10105 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10106 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10108 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10109 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010110
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 }
10115
10116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 sizeof(halDelBAparam),
10119 &pSendBuffer, &usDataOffset, &usSendSize))||
10120 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10121 {
10122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10123 "Unable to get send buffer for DEL BA req %x %x %x",
10124 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 }
10128
10129 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10130 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10131 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10132
Jeff Johnsone7245742012-09-05 17:12:55 -070010133 wpalMemoryCopy( pSendBuffer+usDataOffset,
10134 &halDelBAparam,
10135 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010136
10137 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010139
10140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010141 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10144 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010145}/*WDI_ProcessDelBAReq*/
10146
10147#ifdef FEATURE_WLAN_CCX
10148
10149WDI_Status
10150WDI_ProcessTSMStatsReq
10151(
10152 WDI_ControlBlockType* pWDICtx,
10153 WDI_EventInfoType* pEventData
10154)
10155{
10156 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10157 WDI_TsmRspCb wdiTSMRspCb;
10158 wpt_uint8 ucCurrentBSSSesIdx = 0;
10159 WDI_BSSSessionType* pBSSSes = NULL;
10160 wpt_uint8* pSendBuffer = NULL;
10161 wpt_uint16 usDataOffset = 0;
10162 wpt_uint16 usSendSize = 0;
10163 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10164 tTsmStatsParams halTsmStatsReqParams = {0};
10165
10166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10167
10168 /*-------------------------------------------------------------------------
10169 Sanity check
10170 -------------------------------------------------------------------------*/
10171 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10172 ( NULL == pEventData->pCBfnc ))
10173 {
10174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 WDI_ASSERT(0);
10177 return WDI_STATUS_E_FAILURE;
10178 }
10179
10180 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10181 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10182 /*-------------------------------------------------------------------------
10183 Check to see if we are in the middle of an association, if so queue, if
10184 not it means it is free to process request
10185 -------------------------------------------------------------------------*/
10186 wpalMutexAcquire(&pWDICtx->wptMutex);
10187
10188 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10189 if ( NULL == pBSSSes )
10190 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10192 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10193 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010194
10195 wpalMutexRelease(&pWDICtx->wptMutex);
10196 return WDI_STATUS_E_NOT_ALLOWED;
10197 }
10198
10199 /*------------------------------------------------------------------------
10200 Check if this BSS is being currently processed or queued,
10201 if queued - queue the new request as well
10202 ------------------------------------------------------------------------*/
10203 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10204 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10206 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10207 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010208
10209 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10210 wpalMutexRelease(&pWDICtx->wptMutex);
10211 return wdiStatus;
10212 }
10213
10214 wpalMutexRelease(&pWDICtx->wptMutex);
10215 /*-----------------------------------------------------------------------
10216 Get message buffer
10217 ! TO DO : proper conversion into the HAL Message Request Format
10218 -----------------------------------------------------------------------*/
10219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10220 sizeof(halTsmStatsReqParams),
10221 &pSendBuffer, &usDataOffset, &usSendSize))||
10222 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10223 {
10224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10225 "Unable to get send buffer in set bss key req %x %x %x",
10226 pEventData, pwdiTSMParams, wdiTSMRspCb);
10227 WDI_ASSERT(0);
10228 return WDI_STATUS_E_FAILURE;
10229 }
10230
10231 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10232 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10233 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10234 WDI_MAC_ADDR_LEN);
10235 wpalMemoryCopy( pSendBuffer+usDataOffset,
10236 &halTsmStatsReqParams,
10237 sizeof(halTsmStatsReqParams));
10238
10239 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10240 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10241
10242 /*-------------------------------------------------------------------------
10243 Send TSM Stats Request to HAL
10244 -------------------------------------------------------------------------*/
10245 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10246 wdiTSMRspCb, pEventData->pUserData,
10247 WDI_TSM_STATS_RESP);
10248}/*WDI_ProcessTSMStatsReq*/
10249
10250#endif
10251
10252
10253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010256
10257 @param pWDICtx: pointer to the WLAN DAL context
10258 pEventData: pointer to the event information structure
10259
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 @see
10261 @return Result of the function call
10262*/
10263WDI_Status
10264WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010265(
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 WDI_ControlBlockType* pWDICtx,
10267 WDI_EventInfoType* pEventData
10268)
10269{
10270 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10271 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 wpt_uint16 usDataOffset = 0;
10274 wpt_uint16 usSendSize = 0;
10275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10276
10277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 -------------------------------------------------------------------------*/
10280 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10281 ( NULL == pEventData->pCBfnc ))
10282 {
10283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 }
10288
10289 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10290 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10291 /*-----------------------------------------------------------------------
10292 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10297 &pSendBuffer, &usDataOffset, &usSendSize))||
10298 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10299 {
10300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10301 "Unable to get send buffer in set bss key req %x %x %x",
10302 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 }
10306
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 wpalMemoryCopy( pSendBuffer+usDataOffset,
10308 &pwdiFlushAcParams->wdiFlushAcInfo,
10309 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010310
10311 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010313
10314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10318 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010319}/*WDI_ProcessFlushAcReq*/
10320
10321/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010324
10325 @param pWDICtx: pointer to the WLAN DAL context
10326 pEventData: pointer to the event information structure
10327
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 @see
10329 @return Result of the function call
10330*/
10331WDI_Status
10332WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010333(
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 WDI_ControlBlockType* pWDICtx,
10335 WDI_EventInfoType* pEventData
10336)
10337{
10338 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10339 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 wpt_uint16 usDataOffset = 0;
10342 wpt_uint16 usSendSize = 0;
10343
10344 tBtAmpEventMsg haltBtAmpEventMsg;
10345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10346
10347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 -------------------------------------------------------------------------*/
10350 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10351 ( NULL == pEventData->pCBfnc ))
10352 {
10353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 }
10358
10359 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10360 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10361 /*-----------------------------------------------------------------------
10362 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10367 &pSendBuffer, &usDataOffset, &usSendSize))||
10368 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10369 {
10370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10371 "Unable to get send buffer in BT AMP event req %x %x %x",
10372 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 }
10376
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 wpalMemoryCopy( pSendBuffer+usDataOffset,
10380 &haltBtAmpEventMsg.btAmpEventParams,
10381 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010382
10383 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010385
10386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10390 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391}/*WDI_ProcessBtAmpEventReq*/
10392
10393/**
10394 @brief Process Add STA self Request function (called when Main FSM
10395 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010396
10397 @param pWDICtx: pointer to the WLAN DAL context
10398 pEventData: pointer to the event information structure
10399
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 @see
10401 @return Result of the function call
10402*/
10403WDI_Status
10404WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010405(
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 WDI_ControlBlockType* pWDICtx,
10407 WDI_EventInfoType* pEventData
10408)
10409{
10410 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10411 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 wpt_uint16 usDataOffset = 0;
10414 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010415 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10417
10418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 -------------------------------------------------------------------------*/
10421 if (( NULL == pEventData ) ||
10422 ( NULL == pEventData->pEventData) ||
10423 ( NULL == pEventData->pCBfnc))
10424 {
10425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 }
10430
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10435 /*-----------------------------------------------------------------------
10436 Get message buffer
10437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10439 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010440 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010442 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 {
10444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10445 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10446 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 }
10450
10451 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10454
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010456 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10457 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10458 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10459 {
10460 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10461 }
10462 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10463 VOS_P2P_CLIENT_MODE) ||
10464 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10465 VOS_P2P_DEVICE))
10466 {
10467 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10468 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010470 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010471
10472 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010474
10475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10479 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10480 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010481}/*WDI_ProcessAddSTASelfReq*/
10482
10483
10484
10485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010488
10489 @param pWDICtx: pointer to the WLAN DAL context
10490 pEventData: pointer to the event information structure
10491
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 @see
10493 @return Result of the function call
10494*/
10495WDI_Status
10496WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010497(
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 WDI_ControlBlockType* pWDICtx,
10499 WDI_EventInfoType* pEventData
10500)
10501{
10502 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10503 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 wpt_uint16 usDataOffset = 0;
10506 wpt_uint16 usSendSize = 0;
10507 tDelStaSelfParams halSetDelSelfSTAParams;
10508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10509
10510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 -------------------------------------------------------------------------*/
10513 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10514 ( NULL == pEventData->pCBfnc ))
10515 {
10516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 }
10521
Jeff Johnsone7245742012-09-05 17:12:55 -070010522 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10524 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10525
10526 /*-----------------------------------------------------------------------
10527 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10532 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10535 {
10536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10537 "Unable to get send buffer in Del Sta Self req %x %x %x",
10538 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 }
10542
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10545
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10547 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010548
10549 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010551
10552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10556 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 WDI_DEL_STA_SELF_RESP);
10558
10559}
10560
Jeff Johnsone7245742012-09-05 17:12:55 -070010561#ifdef FEATURE_OEM_DATA_SUPPORT
10562/**
10563 @brief Process Start Oem Data Request function (called when Main
10564 FSM allows it)
10565
10566 @param pWDICtx: pointer to the WLAN DAL context
10567 pEventData: pointer to the event information structure
10568
10569 @see
10570 @return Result of the function call
10571*/
10572WDI_Status
10573WDI_ProcessStartOemDataReq
10574(
10575 WDI_ControlBlockType* pWDICtx,
10576 WDI_EventInfoType* pEventData
10577)
10578{
10579 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10580 WDI_oemDataRspCb wdiOemDataRspCb;
10581 wpt_uint8* pSendBuffer = NULL;
10582 wpt_uint16 usDataOffset = 0;
10583 wpt_uint16 usSendSize = 0;
10584 wpt_uint16 reqLen;
10585 tStartOemDataReqParams* halStartOemDataReqParams;
10586
10587 /*-------------------------------------------------------------------------
10588 Sanity check
10589 -------------------------------------------------------------------------*/
10590 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10591 ( NULL == pEventData->pCBfnc ))
10592 {
10593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010594 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 WDI_ASSERT(0);
10596 return WDI_STATUS_E_FAILURE;
10597 }
10598
10599 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10600 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10601
10602 /*-----------------------------------------------------------------------
10603 Get message buffer
10604 -----------------------------------------------------------------------*/
10605
10606 reqLen = sizeof(tStartOemDataReqParams);
10607
10608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10609 WDI_START_OEM_DATA_REQ, reqLen,
10610 &pSendBuffer, &usDataOffset, &usSendSize))||
10611 (usSendSize < (usDataOffset + reqLen)))
10612 {
10613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10614 "Unable to get send buffer in Start Oem Data req %x %x %x",
10615 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10616 WDI_ASSERT(0);
10617 return WDI_STATUS_E_FAILURE;
10618 }
10619
10620 //copying WDI OEM DATA REQ PARAMS to shared memory
10621 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10622
10623 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10624 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10625
10626 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10627 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10628
10629 /*-------------------------------------------------------------------------
10630 Send Start Request to HAL
10631 -------------------------------------------------------------------------*/
10632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10633 wdiOemDataRspCb, pEventData->pUserData,
10634 WDI_START_OEM_DATA_RESP);
10635}/*WDI_ProcessStartOemDataReq*/
10636#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010637
10638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010641
10642 @param pWDICtx: pointer to the WLAN DAL context
10643 pEventData: pointer to the event information structure
10644
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 @see
10646 @return Result of the function call
10647*/
10648WDI_Status
10649WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010650(
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 WDI_ControlBlockType* pWDICtx,
10652 WDI_EventInfoType* pEventData
10653)
10654{
10655 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10656 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 wpt_uint16 usDataOffset = 0;
10659 wpt_uint16 usSendSize = 0;
10660 tHalWlanHostResumeReqParam halResumeReqParams;
10661
10662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10663
10664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 -------------------------------------------------------------------------*/
10667 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10668 ( NULL == pEventData->pCBfnc ))
10669 {
10670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010671 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 }
10675
10676 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10677 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10678
10679 /*-----------------------------------------------------------------------
10680 Get message buffer
10681 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10684 &pSendBuffer, &usDataOffset, &usSendSize))||
10685 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10686 {
10687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 }
10693
Jeff Johnsone7245742012-09-05 17:12:55 -070010694 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010695 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010696
10697 wpalMemoryCopy( pSendBuffer+usDataOffset,
10698 &halResumeReqParams,
10699 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010700
10701 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010703
10704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10708 wdiHostResumeRspCb, pEventData->pUserData,
10709 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010710}/*WDI_ProcessHostResumeReq*/
10711
10712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010715
10716 @param pWDICtx: pointer to the WLAN DAL context
10717 pEventData: pointer to the event information structure
10718
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 @see
10720 @return Result of the function call
10721*/
10722WDI_Status
10723WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010724(
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 WDI_ControlBlockType* pWDICtx,
10726 WDI_EventInfoType* pEventData
10727)
10728{
10729 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10730 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 wpt_uint16 usDataOffset = 0;
10733 wpt_uint16 usSendSize = 0;
10734 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10736
10737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 -------------------------------------------------------------------------*/
10740 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10741 ( NULL == pEventData->pCBfnc ))
10742 {
10743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010744 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 }
10748
10749 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10750 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010751
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 /*-----------------------------------------------------------------------
10753 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 sizeof(halTxPerTrackingReqParam),
10758 &pSendBuffer, &usDataOffset, &usSendSize))||
10759 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10760 {
10761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10762 "Unable to get send buffer in set tx per tracking req %x %x %x",
10763 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010767
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10769 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10770 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10771 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772
10773 wpalMemoryCopy( pSendBuffer+usDataOffset,
10774 &halTxPerTrackingReqParam,
10775 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
10777 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779
10780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10784 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010785}/*WDI_ProcessSetTxPerTrackingReq*/
10786
10787/*=========================================================================
10788 Indications
10789=========================================================================*/
10790
10791/**
10792 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010793
10794 @param pWDICtx: pointer to the WLAN DAL context
10795 pEventData: pointer to the event information structure
10796
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 @see
10798 @return Result of the function call
10799*/
10800WDI_Status
10801WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010802(
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 WDI_ControlBlockType* pWDICtx,
10804 WDI_EventInfoType* pEventData
10805)
10806{
10807 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 wpt_uint16 usDataOffset = 0;
10810 wpt_uint16 usSendSize = 0;
10811 WDI_Status wdiStatus;
10812 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10814
10815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 -------------------------------------------------------------------------*/
10818 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10819 {
10820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010821 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 }
10825
10826 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10827
10828 /*-----------------------------------------------------------------------
10829 Get message buffer
10830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10832 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 sizeof(halWlanSuspendIndparams),
10834 &pSendBuffer, &usDataOffset, &usSendSize))||
10835 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10836 {
10837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10838 "Unable to get send buffer in Suspend Ind ");
10839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 }
10842
10843 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10844 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10845
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010847 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010848
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10850 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
10852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 -------------------------------------------------------------------------*/
10855 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010857
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010859 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10860}/*WDI_ProcessHostSuspendInd*/
10861
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010862
10863
10864/**
10865 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10866
10867 @param pWDICtx: pointer to the WLAN DAL context
10868 pEventData: pointer to the event information structure
10869
10870 @see
10871 @return Result of the function call
10872*/
10873WDI_Status
10874WDI_ProcessTrafficStatsInd
10875(
10876 WDI_ControlBlockType* pWDICtx,
10877 WDI_EventInfoType* pEventData
10878)
10879{
10880 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10881 wpt_uint8* pSendBuffer = NULL;
10882 wpt_uint16 usDataOffset = 0;
10883 wpt_uint16 usSendSize = 0;
10884 WDI_Status wdiStatus;
10885 tStatsClassBIndParams* pStatsClassBIndParams;
10886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10887
10888 /*-------------------------------------------------------------------------
10889 Sanity check
10890 -------------------------------------------------------------------------*/
10891 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10892 {
10893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10894 "%s: Invalid parameters in Traffic Stats ind",__func__);
10895 WDI_ASSERT(0);
10896 return WDI_STATUS_E_FAILURE;
10897 }
10898
10899 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10900
10901 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10902 {
10903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10904 "%s: Invalid parameters in Traffic Stats ind",__func__);
10905 WDI_ASSERT(0);
10906 return WDI_STATUS_E_FAILURE;
10907 }
10908
10909 /*-----------------------------------------------------------------------
10910 Get message buffer
10911 -----------------------------------------------------------------------*/
10912 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10913 WDI_TRAFFIC_STATS_IND,
10914 sizeof(tStatsClassBIndParams),
10915 &pSendBuffer, &usDataOffset, &usSendSize))||
10916 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10917 {
10918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10919 "Unable to get send buffer in Traffic Stats Ind ");
10920 WDI_ASSERT(0);
10921 return WDI_STATUS_E_FAILURE;
10922 }
10923
10924 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10925
10926 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10927
10928 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10929 pTrafficStatsIndParams->pTrafficStats,
10930 pTrafficStatsIndParams->length);
10931
10932 /*-------------------------------------------------------------------------
10933 Send Suspend Request to HAL
10934 -------------------------------------------------------------------------*/
10935 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10936 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10937
10938 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10939 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10940}/*WDI_ProcessTrafficStatsInd*/
10941
Chet Lanctota96bb432013-03-18 10:26:30 -070010942#ifdef WLAN_FEATURE_11W
10943/**
10944 @brief Process Exclude Unencrypted Indications function (called
10945 when Main FSM allows it)
10946
10947 @param pWDICtx: pointer to the WLAN DAL context
10948 pEventData: pointer to the event information structure
10949
10950 @see
10951 @return Result of the function call
10952*/
10953WDI_Status
10954WDI_ProcessExcludeUnencryptInd
10955(
10956 WDI_ControlBlockType* pWDICtx,
10957 WDI_EventInfoType* pEventData
10958)
10959{
10960 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10961 wpt_uint8* pSendBuffer = NULL;
10962 wpt_uint16 usDataOffset = 0;
10963 wpt_uint16 usSendSize = 0;
10964 WDI_Status wdiStatus;
10965 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10967
10968 /*-------------------------------------------------------------------------
10969 Sanity check
10970 -------------------------------------------------------------------------*/
10971 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10972 {
10973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10974 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10975 WDI_ASSERT(0);
10976 return WDI_STATUS_E_FAILURE;
10977 }
10978
10979 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10980
10981 /*-----------------------------------------------------------------------
10982 Get message buffer
10983 -----------------------------------------------------------------------*/
10984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10985 WDI_EXCLUDE_UNENCRYPTED_IND,
10986 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10987 &pSendBuffer, &usDataOffset, &usSendSize))||
10988 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10989 {
10990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10991 "Unable to get send buffer in Exclude Unencrypted Ind ");
10992 WDI_ASSERT(0);
10993 return WDI_STATUS_E_FAILURE;
10994 }
10995
10996 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10997
10998 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10999
11000 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11001 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11002
11003 /*-------------------------------------------------------------------------
11004 Send Suspend Request to HAL
11005 -------------------------------------------------------------------------*/
11006 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11007 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11008
11009 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11010 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11011}/*WDI_ProcessExcludeUnencryptInd*/
11012#endif
11013
Yue Ma365933a2013-08-14 15:59:08 -070011014/**
11015 @brief Process Add Periodic Tx Pattern Indication function (called when
11016 Main FSM allows it)
11017
11018 @param pWDICtx: pointer to the WLAN DAL context
11019 pEventData: pointer to the event information structure
11020
11021 @see
11022 @return Result of the function call
11023*/
11024WDI_Status
11025WDI_ProcessAddPeriodicTxPtrnInd
11026(
11027 WDI_ControlBlockType* pWDICtx,
11028 WDI_EventInfoType* pEventData
11029)
11030{
11031 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11032 wpt_uint8* pSendBuffer = NULL;
11033 wpt_uint16 usDataOffset = 0;
11034 wpt_uint16 usSendSize = 0;
11035 WDI_Status wdiStatus;
11036 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11037 wpt_uint8 selfStaIdx = 0;
11038
11039 /*-------------------------------------------------------------------------
11040 Sanity check
11041 -------------------------------------------------------------------------*/
11042 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11043 {
11044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11045 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11046 WDI_ASSERT(0);
11047 return WDI_STATUS_E_FAILURE;
11048 }
11049
11050 pAddPeriodicTxPtrnParams =
11051 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11052
11053 /*------------------------------------------------------------------------
11054 Get message buffer
11055 ------------------------------------------------------------------------*/
11056 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11057 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11058 &pSendBuffer, &usDataOffset, &usSendSize))||
11059 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11060 {
11061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11062 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11063 __func__);
11064 WDI_ASSERT(0);
11065 return WDI_STATUS_E_FAILURE;
11066 }
11067
11068 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11069
11070 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11071 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11072 &selfStaIdx))
11073 {
11074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11075 "%s: Failed to get selfStaIdx!", __func__);
11076
11077 return WDI_STATUS_E_FAILURE;
11078 }
11079
11080 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11081 halAddPeriodicTxPtrn->ucPtrnId =
11082 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11083 halAddPeriodicTxPtrn->usPtrnSize =
11084 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11085 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11086 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11087
11088 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11089 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11090 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11091
11092 /*-------------------------------------------------------------------------
11093 Send Indication to HAL
11094 -------------------------------------------------------------------------*/
11095 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11096 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11097
11098 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11099
11100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11101 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11102
11103 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11104} /* WDI_ProcessAddPeriodicTxPtrnInd */
11105
11106/**
11107 @brief Process Delete Periodic Tx Pattern Indication function (called when
11108 Main FSM allows it)
11109
11110 @param pWDICtx: pointer to the WLAN DAL context
11111 pEventData: pointer to the event information structure
11112
11113 @see
11114 @return Result of the function call
11115*/
11116WDI_Status
11117WDI_ProcessDelPeriodicTxPtrnInd
11118(
11119 WDI_ControlBlockType* pWDICtx,
11120 WDI_EventInfoType* pEventData
11121)
11122{
11123 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11124 wpt_uint8* pSendBuffer = NULL;
11125 wpt_uint16 usDataOffset = 0;
11126 wpt_uint16 usSendSize = 0;
11127 WDI_Status wdiStatus;
11128 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11129 wpt_uint8 selfStaIdx = 0;
11130
11131 /*-------------------------------------------------------------------------
11132 Sanity check
11133 -------------------------------------------------------------------------*/
11134 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11135 {
11136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11137 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11138 WDI_ASSERT(0);
11139 return WDI_STATUS_E_FAILURE;
11140 }
11141
11142 pDelPeriodicTxPtrnParams =
11143 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11144
11145 /*------------------------------------------------------------------------
11146 Get message buffer
11147 ------------------------------------------------------------------------*/
11148 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11149 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11150 &pSendBuffer, &usDataOffset, &usSendSize))||
11151 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11152 {
11153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11154 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11155 __func__);
11156 WDI_ASSERT(0);
11157 return WDI_STATUS_E_FAILURE;
11158 }
11159
11160 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11161
11162 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11163 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11164 &selfStaIdx))
11165 {
11166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11167 "%s: Failed to get selfStaIdx!", __func__);
11168
11169 return WDI_STATUS_E_FAILURE;
11170 }
11171
11172 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11173 halDelPeriodicTxPtrn->uPatternIdBitmap =
11174 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11175
11176 /*-------------------------------------------------------------------------
11177 Send Indication to HAL
11178 -------------------------------------------------------------------------*/
11179 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11180 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11181
11182 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11183
11184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11185 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11186
11187 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11188} /* WDI_ProcessDelPeriodicTxPtrnInd */
11189
Jeff Johnson295189b2012-06-20 16:38:30 -070011190/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011192==========================================================================*/
11193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011196
11197 @param pWDICtx: pointer to the WLAN DAL context
11198 pEventData: pointer to the event information structure
11199
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 @see
11201 @return Result of the function call
11202*/
11203WDI_Status
11204WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011205(
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 WDI_ControlBlockType* pWDICtx,
11207 WDI_EventInfoType* pEventData
11208)
11209{
11210 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11211 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 wpt_uint16 usDataOffset = 0;
11214 wpt_uint16 usSendSize = 0;
11215 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11217
11218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 -------------------------------------------------------------------------*/
11221 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11222 ( NULL == pEventData->pCBfnc ))
11223 {
11224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 }
11229
11230 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11231 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11232 /*-----------------------------------------------------------------------
11233 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 sizeof(halSwitchChannelReq.switchChannelParams),
11238 &pSendBuffer, &usDataOffset, &usSendSize))||
11239 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11240 {
11241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11242 "Unable to get send buffer in channel switch req %x %x %x",
11243 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011246 }
11247
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011250#ifndef WLAN_FEATURE_VOWIFI
11251 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11253#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11256
11257#ifdef WLAN_FEATURE_VOWIFI
11258 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11261 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11262 WDI_MAC_ADDR_LEN);
11263 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11264 pwdiSwitchChParams->wdiChInfo.macBSSId,
11265 WDI_MAC_ADDR_LEN);
11266#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 wpalMemoryCopy( pSendBuffer+usDataOffset,
11268 &halSwitchChannelReq.switchChannelParams,
11269 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011270
11271 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011273
11274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11278 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011279}/*WDI_ProcessChannelSwitchReq*/
11280
11281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011284
11285 @param pWDICtx: pointer to the WLAN DAL context
11286 pEventData: pointer to the event information structure
11287
Jeff Johnson295189b2012-06-20 16:38:30 -070011288 @see
11289 @return Result of the function call
11290*/
11291WDI_Status
11292WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011293(
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 WDI_ControlBlockType* pWDICtx,
11295 WDI_EventInfoType* pEventData
11296)
11297{
11298 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11299 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 wpt_uint16 usDataOffset = 0;
11304 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011306
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 tConfigStaReqMsg halConfigStaReqMsg;
11308 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11310
11311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 -------------------------------------------------------------------------*/
11314 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11315 ( NULL == pEventData->pCBfnc ))
11316 {
11317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 }
11322
11323 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11324 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11325 /*-------------------------------------------------------------------------
11326 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 -------------------------------------------------------------------------*/
11329 wpalMutexAcquire(&pWDICtx->wptMutex);
11330
11331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11335 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11336 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011337
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011339 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11341 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11342 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011343
11344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 }
11347
11348 /*------------------------------------------------------------------------
11349 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011351 ------------------------------------------------------------------------*/
11352 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11353 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11355 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11356 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011357
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 }
11362
11363 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011364
11365 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11366#ifdef WLAN_FEATURE_11AC
11367 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011368 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 else
11370#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011371 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011372
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 /*-----------------------------------------------------------------------
11374 Get message buffer
11375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11377 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 {
11381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11382 "Unable to get send buffer in config sta req %x %x %x",
11383 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 }
11387
11388 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 &pwdiConfigSTAParams->wdiReqInfo);
11391
11392 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11393 {
11394 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_STATableFindStaidByAddr(pWDICtx,
11397 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 {
11400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11401 "This station does not exist in the WDI Station Table %d");
11402 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011403 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 }
11406 }
11407 else
11408 {
11409 /* Need to fill in the STA Index to invalid, since at this point we have not
11410 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011411 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 }
11413
11414 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011416
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 wpalMemoryCopy( pSendBuffer+usDataOffset,
11418 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011419 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011420
11421 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011423
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11425 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 sizeof(pWDICtx->wdiCachedConfigStaReq));
11427
11428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11432 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433}/*WDI_ProcessConfigStaReq*/
11434
11435
11436/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011439
11440 @param pWDICtx: pointer to the WLAN DAL context
11441 pEventData: pointer to the event information structure
11442
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 @see
11444 @return Result of the function call
11445*/
11446WDI_Status
11447WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011448(
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 WDI_ControlBlockType* pWDICtx,
11450 WDI_EventInfoType* pEventData
11451)
11452{
11453 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11454 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 wpt_uint16 usDataOffset = 0;
11459 wpt_uint16 usSendSize = 0;
11460 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11463
11464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 -------------------------------------------------------------------------*/
11467 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11468 ( NULL == pEventData->pCBfnc ))
11469 {
11470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 }
11475
11476 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11477 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11478 /*-------------------------------------------------------------------------
11479 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011480 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 -------------------------------------------------------------------------*/
11482 wpalMutexAcquire(&pWDICtx->wptMutex);
11483
11484 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011486 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11488 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11489 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011490
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11495 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 }
11497 else
11498 {
11499 /*------------------------------------------------------------------------
11500 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011501 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 ------------------------------------------------------------------------*/
11503 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11504 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11506 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11507 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11508
11509 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 }
11513 }
11514 /* If the link is set to enter IDLE - the Session allocated for this BSS
11515 will be deleted on the Set Link State response coming from HAL
11516 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11519
11520 wpalMutexRelease(&pWDICtx->wptMutex);
11521 /*-----------------------------------------------------------------------
11522 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011525
11526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 sizeof(halLinkStateReqMsg),
11528 &pSendBuffer, &usDataOffset, &usSendSize))||
11529 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11530 {
11531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11532 "Unable to get send buffer in set bss key req %x %x %x",
11533 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 }
11537
11538 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11539 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11540
11541 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11542 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11543
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11546
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 wpalMemoryCopy( pSendBuffer+usDataOffset,
11548 &halLinkStateReqMsg,
11549 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011550
11551 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011553
11554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11558 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011559}/*WDI_ProcessSetLinkStateReq*/
11560
11561
11562/**
11563 @brief Process Get Stats Request function (called when Main FSM
11564 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011565
11566 @param pWDICtx: pointer to the WLAN DAL context
11567 pEventData: pointer to the event information structure
11568
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 @see
11570 @return Result of the function call
11571*/
11572WDI_Status
11573WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011574(
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 WDI_ControlBlockType* pWDICtx,
11576 WDI_EventInfoType* pEventData
11577)
11578{
11579 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11580 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 wpt_uint16 usDataOffset = 0;
11583 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011585 WDI_BSSSessionType* pBSSSes = NULL;
11586 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 tHalStatsReqMsg halStatsReqMsg;
11589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11590
11591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 -------------------------------------------------------------------------*/
11594 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11595 ( NULL == pEventData->pCBfnc ) )
11596 {
11597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 }
11602
11603 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11604 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11605
11606 /*-------------------------------------------------------------------------
11607 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 -------------------------------------------------------------------------*/
11610 wpalMutexAcquire(&pWDICtx->wptMutex);
11611
11612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11616 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 &macBSSID))
11618 {
11619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11620 "This station does not exist in the WDI Station Table %d");
11621 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 }
11624
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11626 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11629 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11630 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011631
11632 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011634 }
11635
11636 /*------------------------------------------------------------------------
11637 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 ------------------------------------------------------------------------*/
11640 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11641 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11643 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11644 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011645
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 }
11650
11651
11652 wpalMutexRelease(&pWDICtx->wptMutex);
11653
11654 /*-----------------------------------------------------------------------
11655 Get message buffer
11656 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 sizeof(halStatsReqMsg.statsReqParams),
11659 &pSendBuffer, &usDataOffset, &usSendSize))||
11660 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11661 {
11662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11663 "Unable to get send buffer in set bss key req %x %x %x",
11664 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 }
11668
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 wpalMemoryCopy( pSendBuffer+usDataOffset,
11674 &halStatsReqMsg.statsReqParams,
11675 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011676
11677 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011679
11680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11684 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011685}/*WDI_ProcessGetStatsReq*/
11686
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011687#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11688/**
11689 @brief Process Get Roam Rssi Request function (called when Main FSM
11690 allows it)
11691
11692 @param pWDICtx: pointer to the WLAN DAL context
11693 pEventData: pointer to the event information structure
11694
11695 @see
11696 @return Result of the function call
11697*/
11698WDI_Status
11699WDI_ProcessGetRoamRssiReq
11700(
11701 WDI_ControlBlockType* pWDICtx,
11702 WDI_EventInfoType* pEventData
11703)
11704{
11705 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11706 WDI_GetStatsRspCb wdiGetStatsRspCb;
11707 wpt_uint8* pSendBuffer = NULL;
11708 wpt_uint16 usDataOffset = 0;
11709 wpt_uint16 usSendSize = 0;
11710 wpt_uint8 ucCurrentBSSSesIdx = 0;
11711 WDI_BSSSessionType* pBSSSes = NULL;
11712 wpt_macAddr macBSSID;
11713 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11714 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11716 /*-------------------------------------------------------------------------
11717 Sanity check
11718 -------------------------------------------------------------------------*/
11719 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11720 ( NULL == pEventData->pCBfnc ) )
11721 {
11722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11723 "%s: Invalid parameters", __func__);
11724 WDI_ASSERT(0);
11725 return WDI_STATUS_E_FAILURE;
11726 }
11727
11728 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11729 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11730
11731 /*-------------------------------------------------------------------------
11732 Check to see if we are in the middle of an association, if so queue, if
11733 not it means it is free to process request
11734 -------------------------------------------------------------------------*/
11735 wpalMutexAcquire(&pWDICtx->wptMutex);
11736
11737 /*------------------------------------------------------------------------
11738 Find the BSS for which the request is made
11739 ------------------------------------------------------------------------*/
11740 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11741 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11742 &macBSSID))
11743 {
11744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11745 "This station does not exist in the WDI Station Table %d");
11746 wpalMutexRelease(&pWDICtx->wptMutex);
11747 return WDI_STATUS_E_FAILURE;
11748 }
11749
11750 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11751 if ( NULL == pBSSSes )
11752 {
11753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11754 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11755 __func__, MAC_ADDR_ARRAY(macBSSID));
11756
11757 wpalMutexRelease(&pWDICtx->wptMutex);
11758 return WDI_STATUS_E_NOT_ALLOWED;
11759 }
11760
11761 /*------------------------------------------------------------------------
11762 Check if this BSS is being currently processed or queued,
11763 if queued - queue the new request as well
11764 ------------------------------------------------------------------------*/
11765 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11766 {
11767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11768 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11769 __func__, MAC_ADDR_ARRAY(macBSSID));
11770
11771 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11772 wpalMutexRelease(&pWDICtx->wptMutex);
11773 return wdiStatus;
11774 }
11775
11776 wpalMutexRelease(&pWDICtx->wptMutex);
11777
11778 /*-----------------------------------------------------------------------
11779 Get message buffer
11780 -----------------------------------------------------------------------*/
11781 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11782 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11783 &pSendBuffer, &usDataOffset, &usSendSize))||
11784 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11785 {
11786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11787 "Unable to get send buffer in set bss key req %x %x %x",
11788 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11789 WDI_ASSERT(0);
11790 return WDI_STATUS_E_FAILURE;
11791 }
11792
11793 halRssiRoamReqMsg.roamRssiReqParams.staId =
11794 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11795 wpalMemoryCopy( pSendBuffer+usDataOffset,
11796 &halRssiRoamReqMsg.roamRssiReqParams,
11797 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11798
11799 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11800 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11801
11802 /*-------------------------------------------------------------------------
11803 Send Get STA Request to HAL
11804 -------------------------------------------------------------------------*/
11805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11806 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11807}/*WDI_ProcessGetRoamRssiReq*/
11808#endif
11809
Jeff Johnson295189b2012-06-20 16:38:30 -070011810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011811 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011813
11814 @param pWDICtx: pointer to the WLAN DAL context
11815 pEventData: pointer to the event information structure
11816
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 @see
11818 @return Result of the function call
11819*/
11820WDI_Status
11821WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011822(
Jeff Johnson295189b2012-06-20 16:38:30 -070011823 WDI_ControlBlockType* pWDICtx,
11824 WDI_EventInfoType* pEventData
11825)
11826{
11827 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11828 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11829
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 wpt_uint16 usDataOffset = 0;
11832 wpt_uint16 usSendSize = 0;
11833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11834
11835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 -------------------------------------------------------------------------*/
11838 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11839 ( NULL == pEventData->pCBfnc))
11840 {
11841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 }
11846
11847 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11848 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11849
11850 /*-----------------------------------------------------------------------
11851 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011852 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011853 -----------------------------------------------------------------------*/
11854
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11857 &pSendBuffer, &usDataOffset, &usSendSize))||
11858 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11859 {
11860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11861 "Unable to get send buffer in set bss key req %x %x %x",
11862 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 }
11866
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 wpalMemoryCopy( pSendBuffer+usDataOffset,
11868 &pwdiUpdateCfgParams->uConfigBufferLen,
11869 sizeof(wpt_uint32));
11870 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11871 pwdiUpdateCfgParams->pConfigBuffer,
11872 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011873
11874 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011876
11877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 -------------------------------------------------------------------------*/
11880
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11882 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011883
11884}/*WDI_ProcessUpdateCfgReq*/
11885
11886
11887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011890
11891 @param pWDICtx: pointer to the WLAN DAL context
11892 pEventData: pointer to the event information structure
11893
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 @see
11895 @return Result of the function call
11896*/
11897WDI_Status
11898WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011899(
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 WDI_ControlBlockType* pWDICtx,
11901 WDI_EventInfoType* pEventData
11902)
11903{
11904 WDI_AddBAReqParamsType* pwdiAddBAParams;
11905 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011906 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011907 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 wpt_uint16 usDataOffset = 0;
11910 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 wpt_macAddr macBSSID;
11913
11914 tAddBAReqMsg halAddBAReq;
11915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11916
11917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011919 -------------------------------------------------------------------------*/
11920 if (( NULL == pEventData ) ||
11921 ( NULL == pEventData->pEventData) ||
11922 ( NULL == pEventData->pCBfnc ))
11923 {
11924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 }
11929
11930 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11931 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11932
11933 /*-------------------------------------------------------------------------
11934 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 -------------------------------------------------------------------------*/
11937 wpalMutexAcquire(&pWDICtx->wptMutex);
11938
11939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11943 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 &macBSSID))
11945 {
11946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11947 "This station does not exist in the WDI Station Table %d");
11948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 }
11951
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11953 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11956 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011958
11959 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 }
11962
11963 /*------------------------------------------------------------------------
11964 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 ------------------------------------------------------------------------*/
11967 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11968 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11970 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11971 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011972
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 }
11977
11978
11979 wpalMutexRelease(&pWDICtx->wptMutex);
11980 /*-----------------------------------------------------------------------
11981 Get message buffer
11982 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 sizeof(halAddBAReq.addBAParams),
11985 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11988 {
11989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11990 "Unable to get send buffer in Add BA req %x %x %x",
11991 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 }
11995
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11998 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11999#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12002#endif
12003
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 wpalMemoryCopy( pSendBuffer+usDataOffset,
12005 &halAddBAReq.addBAParams,
12006 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012007
12008 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012009 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012010
12011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12015 wdiAddBARspCb, pEventData->pUserData,
12016 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012017}/*WDI_ProcessAddBAReq*/
12018
12019
12020
12021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012024
12025 @param pWDICtx: pointer to the WLAN DAL context
12026 pEventData: pointer to the event information structure
12027
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 @see
12029 @return Result of the function call
12030*/
12031WDI_Status
12032WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012033(
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 WDI_ControlBlockType* pWDICtx,
12035 WDI_EventInfoType* pEventData
12036)
12037{
12038 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12039 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 wpt_uint16 usDataOffset = 0;
12044 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 wpt_uint16 index;
12047 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012048
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 tTriggerBAReqMsg halTriggerBAReq;
12050 tTriggerBaReqCandidate* halTriggerBACandidate;
12051 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12053
12054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 -------------------------------------------------------------------------*/
12057 if (( NULL == pEventData ) ||
12058 ( NULL == pEventData->pEventData ) ||
12059 ( NULL == pEventData->pCBfnc ))
12060 {
12061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 }
12066
12067 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12068 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12069 /*-------------------------------------------------------------------------
12070 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 -------------------------------------------------------------------------*/
12073 wpalMutexAcquire(&pWDICtx->wptMutex);
12074
12075 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012076 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12079 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 &macBSSID))
12081 {
12082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12083 "This station does not exist in the WDI Station Table %d");
12084 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 }
12087
Jeff Johnsone7245742012-09-05 17:12:55 -070012088 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12089 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12092 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12093 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012094
12095 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 }
12098
12099 /*------------------------------------------------------------------------
12100 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 ------------------------------------------------------------------------*/
12103 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12104 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12106 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12107 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012108
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012112 }
12113
12114
12115 wpalMutexRelease(&pWDICtx->wptMutex);
12116 /*-----------------------------------------------------------------------
12117 Get message buffer
12118 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12120 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12124 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12129 {
12130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12131 "Unable to get send buffer in Trigger BA req %x %x %x",
12132 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012135 }
12136
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12141
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 wpalMemoryCopy( pSendBuffer+usDataOffset,
12143 &halTriggerBAReq.triggerBAParams,
12144 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012145
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12148 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12149 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012150
12151 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 index++)
12153 {
12154 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12155 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12156 halTriggerBACandidate++;
12157 wdiTriggerBACandidate++;
12158 }
12159
12160 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012162
12163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12167 wdiTriggerBARspCb, pEventData->pUserData,
12168 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012169}/*WDI_ProcessTriggerBAReq*/
12170
12171
12172
12173/**
12174 @brief Process Update Beacon Params Request function (called when Main FSM
12175 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012176
12177 @param pWDICtx: pointer to the WLAN DAL context
12178 pEventData: pointer to the event information structure
12179
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 @see
12181 @return Result of the function call
12182*/
12183WDI_Status
12184WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012185(
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 WDI_ControlBlockType* pWDICtx,
12187 WDI_EventInfoType* pEventData
12188)
12189{
12190 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12191 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 wpt_uint16 usDataOffset = 0;
12194 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12197
12198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 -------------------------------------------------------------------------*/
12201 if (( NULL == pEventData ) ||
12202 ( NULL == pEventData->pEventData) ||
12203 ( NULL == pEventData->pCBfnc))
12204 {
12205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 }
12210
12211 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12212 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12213 /*-----------------------------------------------------------------------
12214 Get message buffer
12215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012217 sizeof(halUpdateBeaconParams),
12218 &pSendBuffer, &usDataOffset, &usSendSize))||
12219 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12220 {
12221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12222 "Unable to get send buffer in set bss key req %x %x %x",
12223 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 }
12227
12228 /*BSS Index of the BSS*/
12229 halUpdateBeaconParams.bssIdx =
12230 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12231 /*shortPreamble mode. HAL should update all the STA rates when it
12232 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12235 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12238 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12241
12242 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12255 halUpdateBeaconParams.fRIFSMode =
12256 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012257 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12259
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12261 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012262
12263 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265
12266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12270 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012271}/*WDI_ProcessUpdateBeaconParamsReq*/
12272
12273
12274
12275/**
12276 @brief Process Send Beacon template Request function (called when Main FSM
12277 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012278
12279 @param pWDICtx: pointer to the WLAN DAL context
12280 pEventData: pointer to the event information structure
12281
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 @see
12283 @return Result of the function call
12284*/
12285WDI_Status
12286WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012287(
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 WDI_ControlBlockType* pWDICtx,
12289 WDI_EventInfoType* pEventData
12290)
12291{
12292 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12293 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 wpt_uint16 usDataOffset = 0;
12296 wpt_uint16 usSendSize = 0;
12297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12298
12299 tSendBeaconReqMsg halSendBeaconReq;
12300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 -------------------------------------------------------------------------*/
12303 if (( NULL == pEventData ) ||
12304 ( NULL == pEventData->pEventData ) ||
12305 ( NULL == pEventData->pCBfnc ))
12306 {
12307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 }
12312
12313 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12314 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12315 /*-----------------------------------------------------------------------
12316 Get message buffer
12317 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 sizeof(halSendBeaconReq.sendBeaconParam),
12320 &pSendBuffer, &usDataOffset, &usSendSize))||
12321 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12322 {
12323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12324 "Unable to get send buffer in send beacon req %x %x %x",
12325 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 }
12329
12330 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12331 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12332 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12335 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12336 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12337 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012340 /* usP2PIeOffset should be atleast greater than timIeOffset */
12341 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12342 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12343 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12344 {
12345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12346 "Invalid usP2PIeOffset %hu",
12347 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12348 WDI_ASSERT(0);
12349 return WDI_STATUS_E_FAILURE;
12350 }
12351
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012354
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 wpalMemoryCopy( pSendBuffer+usDataOffset,
12356 &halSendBeaconReq.sendBeaconParam,
12357 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012358
12359 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361
12362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12366 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012367}/*WDI_ProcessSendBeaconParamsReq*/
12368
12369/**
12370 @brief Process Update Beacon Params Request function (called when Main FSM
12371 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012372
12373 @param pWDICtx: pointer to the WLAN DAL context
12374 pEventData: pointer to the event information structure
12375
Jeff Johnson295189b2012-06-20 16:38:30 -070012376 @see
12377 @return Result of the function call
12378*/
12379WDI_Status
12380WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012381(
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 WDI_ControlBlockType* pWDICtx,
12383 WDI_EventInfoType* pEventData
12384)
12385{
12386 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12387 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012388 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 wpt_uint16 usDataOffset = 0;
12390 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12393
12394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 -------------------------------------------------------------------------*/
12397 if (( NULL == pEventData ) ||
12398 ( NULL == pEventData->pEventData) ||
12399 ( NULL == pEventData->pCBfnc))
12400 {
12401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 }
12406
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12411 /*-----------------------------------------------------------------------
12412 Get message buffer
12413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 sizeof(halUpdateProbeRspTmplParams),
12416 &pSendBuffer, &usDataOffset, &usSendSize))||
12417 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12418 {
12419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12420 "Unable to get send buffer in set bss key req %x %x %x",
12421 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 }
12425
12426 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 WDI_MAC_ADDR_LEN);
12429
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12432
12433 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12434 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012436
12437
12438 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12439 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12440 WDI_PROBE_REQ_BITMAP_IE_LEN);
12441
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 wpalMemoryCopy( pSendBuffer+usDataOffset,
12443 &halUpdateProbeRspTmplParams,
12444 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012445
12446 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012448
12449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12453 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12454 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012455}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12456
12457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012460
12461 @param pWDICtx: pointer to the WLAN DAL context
12462 pEventData: pointer to the event information structure
12463
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 @see
12465 @return Result of the function call
12466*/
12467WDI_Status
12468WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012469(
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 WDI_ControlBlockType* pWDICtx,
12471 WDI_EventInfoType* pEventData
12472)
12473{
12474
12475 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12476 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12477
12478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 -------------------------------------------------------------------------*/
12481 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12486 {
12487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
12493 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12496
12497 /*cache the wdi nv request message here if the the first fragment
12498 * To issue the request to HAL for the next fragment */
12499 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12500 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12502 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12504
12505 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12506 pWDICtx->pRspCBUserData = pEventData->pUserData;
12507 }
12508
12509 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12510}
12511
12512/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012515
12516 @param pWDICtx: pointer to the WLAN DAL context
12517 pEventData: pointer to the event information structure
12518
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 @see
12520 @return Result of the function call
12521*/
12522WDI_Status WDI_ProcessSetMaxTxPowerReq
12523(
12524 WDI_ControlBlockType* pWDICtx,
12525 WDI_EventInfoType* pEventData
12526)
12527{
12528 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12529 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 wpt_uint16 usDataOffset = 0;
12532 wpt_uint16 usSendSize = 0;
12533 tSetMaxTxPwrReq halSetMaxTxPower;
12534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12535
12536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 -------------------------------------------------------------------------*/
12539 if (( NULL == pEventData ) ||
12540 ( NULL == pEventData->pEventData ) ||
12541 ( NULL == pEventData->pCBfnc ))
12542 {
12543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12552
12553 /*-----------------------------------------------------------------------
12554 Get message buffer
12555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012556if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12558 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012560)))
12561 {
12562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12563 "Unable to get Set Max Tx Power req %x %x %x",
12564 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 }
12568
12569 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12570 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12571 WDI_MAC_ADDR_LEN);
12572
12573 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12574 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12575 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012578
12579 wpalMemoryCopy( pSendBuffer+usDataOffset,
12580 &halSetMaxTxPower.setMaxTxPwrParams,
12581 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012582
12583 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012585
12586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12590 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12591 WDI_SET_MAX_TX_POWER_RESP);
12592
Jeff Johnson295189b2012-06-20 16:38:30 -070012593}
12594
schangd82195a2013-03-13 18:41:24 -070012595/**
12596 @brief Process Set Tx Power Request function (called when Main
12597 FSM allows it)
12598
12599 @param pWDICtx: pointer to the WLAN DAL context
12600 pEventData: pointer to the event information structure
12601
12602 @see
12603 @return Result of the function call
12604*/
12605WDI_Status WDI_ProcessSetTxPowerReq
12606(
12607 WDI_ControlBlockType* pWDICtx,
12608 WDI_EventInfoType* pEventData
12609)
12610{
12611 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12612 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12613 wpt_uint8* pSendBuffer = NULL;
12614 wpt_uint16 usDataOffset = 0;
12615 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012616 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12618
12619 /*-------------------------------------------------------------------------
12620 Sanity check
12621 -------------------------------------------------------------------------*/
12622 if (( NULL == pEventData ) ||
12623 ( NULL == pEventData->pEventData ) ||
12624 ( NULL == pEventData->pCBfnc ))
12625 {
12626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12627 "%s: Invalid parameters", __func__);
12628 WDI_ASSERT(0);
12629 return WDI_STATUS_E_FAILURE;
12630 }
12631
12632 pwdiSetTxPowerParams =
12633 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12634 wdiSetTxPowerRspCb =
12635 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12636
12637 /*-----------------------------------------------------------------------
12638 Get message buffer
12639 -----------------------------------------------------------------------*/
12640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12641 sizeof(tSetTxPwrReqParams),
12642 &pSendBuffer, &usDataOffset, &usSendSize))||
12643 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12644 )))
12645 {
12646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12647 "Unable to get Set Max Tx Power req %x %x %x",
12648 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12649 WDI_ASSERT(0);
12650 return WDI_STATUS_E_FAILURE;
12651 }
12652
Leo Changa37e2a92013-03-25 17:39:58 -070012653 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12654 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12655 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012656
12657 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12658 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12659
12660 /*-------------------------------------------------------------------------
12661 Send Set Tx Power Request to HAL
12662 -------------------------------------------------------------------------*/
12663 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12664 wdiSetTxPowerRspCb, pEventData->pUserData,
12665 WDI_SET_TX_POWER_RESP);
12666}
Jeff Johnson295189b2012-06-20 16:38:30 -070012667
12668/**
12669 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12670 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012671
12672 @param pWDICtx: pointer to the WLAN DAL context
12673 pEventData: pointer to the event information structure
12674
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 @see
12676 @return Result of the function call
12677*/
12678WDI_Status
12679WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012680(
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 WDI_ControlBlockType* pWDICtx,
12682 WDI_EventInfoType* pEventData
12683)
12684{
12685 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12686 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 wpt_uint16 usDataOffset = 0;
12689 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12692
12693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 -------------------------------------------------------------------------*/
12696 if (( NULL == pEventData ) ||
12697 ( NULL == pEventData->pEventData) ||
12698 ( NULL == pEventData->pCBfnc))
12699 {
12700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 }
12705
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12710 /*-----------------------------------------------------------------------
12711 Get message buffer
12712 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12714 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 sizeof(halSetP2PGONOAParams),
12716 &pSendBuffer, &usDataOffset, &usSendSize))||
12717 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12718 {
12719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12720 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12721 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 }
12725
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12730 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12739
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 wpalMemoryCopy( pSendBuffer+usDataOffset,
12741 &halSetP2PGONOAParams,
12742 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012743
12744 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012746
12747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12751 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12752 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012753}/*WDI_ProcessP2PGONOAReq*/
12754
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012755#ifdef FEATURE_WLAN_TDLS
12756
12757/**
12758 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12759 allows it)
12760
12761 @param pWDICtx: pointer to the WLAN DAL context
12762 pEventData: pointer to the event information structure
12763
12764 @see
12765 @return Result of the function call
12766*/
12767WDI_Status
12768WDI_ProcessTdlsLinkEstablishReq
12769(
12770 WDI_ControlBlockType* pWDICtx,
12771 WDI_EventInfoType* pEventData
12772)
12773{
12774 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12775 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12776 wpt_uint8* pSendBuffer = NULL;
12777 wpt_uint16 usDataOffset = 0;
12778 wpt_uint16 usSendSize = 0;
12779
12780 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12782
12783 /*-------------------------------------------------------------------------
12784 Sanity check
12785 -------------------------------------------------------------------------*/
12786 if (( NULL == pEventData ) ||
12787 ( NULL == pEventData->pEventData) ||
12788 ( NULL == pEventData->pCBfnc))
12789 {
12790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12791 "%s: Invalid parameters", __func__);
12792 WDI_ASSERT(0);
12793 return WDI_STATUS_E_FAILURE;
12794 }
12795 pwdiTDLSLinkEstablishReqParams =
12796 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12797 wdiTDLSLinkEstablishReqRspCb =
12798 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12799
12800
12801 /*-----------------------------------------------------------------------
12802 Get message buffer
12803 -----------------------------------------------------------------------*/
12804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12805 WDI_TDLS_LINK_ESTABLISH_REQ,
12806 sizeof(halSetTDLSLinkEstablishParams),
12807 &pSendBuffer, &usDataOffset, &usSendSize))||
12808 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12809 {
12810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12811 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12812 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12813 WDI_ASSERT(0);
12814 return WDI_STATUS_E_FAILURE;
12815 }
12816
12817 halSetTDLSLinkEstablishParams.staIdx =
12818 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12819 halSetTDLSLinkEstablishParams.bIsResponder =
12820 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12821 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12822 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12823 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12824 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12825 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12826 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12827 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12828 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12829 halSetTDLSLinkEstablishParams.aAck = 0;
12830 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12831 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12832 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12833
12834 wpalMemoryCopy( pSendBuffer+usDataOffset,
12835 &halSetTDLSLinkEstablishParams,
12836 sizeof(halSetTDLSLinkEstablishParams));
12837
12838 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12839 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12840
12841 /*-------------------------------------------------------------------------
12842 Send Update Probe Resp Template Request to HAL
12843 -------------------------------------------------------------------------*/
12844 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12845 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12846 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12847 return 0;
12848}/*WDI_ProcessTdlsLinkEstablishReq*/
12849
12850
12851#endif
12852
Jeff Johnson295189b2012-06-20 16:38:30 -070012853
12854
12855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 @param None
12859
12860 @see
12861 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012862*/
12863void
12864WDI_SetPowerStateCb
12865(
12866 wpt_status status,
12867 unsigned int dxePhyAddr,
12868 void *pContext
12869)
12870{
12871 wpt_status wptStatus;
12872 WDI_ControlBlockType *pCB = NULL;
12873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12874 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12875 {
12876 //it shouldn't happen, put an error msg
12877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 /*
12879 * Trigger the event to bring the Enter BMPS req function to come
12880 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012881*/
12882 if( NULL != pContext )
12883 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 }
12886 else
12887 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 pCB = &gWDICb;
12890 }
12891 pCB->dxePhyAddr = dxePhyAddr;
12892 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12893 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12894 {
12895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12896 "Failed to set an event");
12897
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 }
12900 return;
12901}
12902
12903
12904/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012907
12908 @param pWDICtx: pointer to the WLAN DAL context
12909 pEventData: pointer to the event information structure
12910
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 @see
12912 @return Result of the function call
12913*/
12914WDI_Status
12915WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012916(
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 WDI_ControlBlockType* pWDICtx,
12918 WDI_EventInfoType* pEventData
12919)
12920{
Jeff Johnson43971f52012-07-17 12:26:56 -070012921 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 wpt_uint16 usDataOffset = 0;
12925 wpt_uint16 usSendSize = 0;
12926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12927
12928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012930 -------------------------------------------------------------------------*/
12931 if (( NULL == pEventData ) ||
12932 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12933 {
12934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012937 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 }
12939
12940 /*-----------------------------------------------------------------------
12941 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 0,
12946 &pSendBuffer, &usDataOffset, &usSendSize))||
12947 ( usSendSize < (usDataOffset )))
12948 {
12949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12950 "Unable to get send buffer in Enter IMPS req %x %x",
12951 pEventData, wdiEnterImpsRspCb);
12952 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012953 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 }
12955
12956 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012957 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12958 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 {
12960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12961 "WDI Init failed to reset an event");
12962
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012964 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 }
12966
12967 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012968 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12969 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12971 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12972 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012973 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012975
12976 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012979 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12980 WDI_SET_POWER_STATE_TIMEOUT);
12981 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012982 {
12983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12984 "WDI Init failed to wait on an event");
12985
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012987 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 }
12989
12990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012991 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12994 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012995
12996fail:
12997 // Release the message buffer so we don't leak
12998 wpalMemoryFree(pSendBuffer);
12999
13000failRequest:
13001 //WDA should have failure check to avoid the memory leak
13002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013003}/*WDI_ProcessEnterImpsReq*/
13004
13005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013008
13009 @param pWDICtx: pointer to the WLAN DAL context
13010 pEventData: pointer to the event information structure
13011
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 @see
13013 @return Result of the function call
13014*/
13015WDI_Status
13016WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013017(
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 WDI_ControlBlockType* pWDICtx,
13019 WDI_EventInfoType* pEventData
13020)
13021{
13022 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 wpt_uint16 usDataOffset = 0;
13025 wpt_uint16 usSendSize = 0;
13026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13027
13028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 -------------------------------------------------------------------------*/
13031 if (( NULL == pEventData ) ||
13032 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13033 {
13034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 }
13039
13040 /*-----------------------------------------------------------------------
13041 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013042 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 0,
13046 &pSendBuffer, &usDataOffset, &usSendSize))||
13047 ( usSendSize < (usDataOffset )))
13048 {
13049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13050 "Unable to get send buffer in Exit IMPS req %x %x",
13051 pEventData, wdiExitImpsRspCb);
13052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 }
13055
13056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13060 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013061}/*WDI_ProcessExitImpsReq*/
13062
13063/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013066
13067 @param pWDICtx: pointer to the WLAN DAL context
13068 pEventData: pointer to the event information structure
13069
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 @see
13071 @return Result of the function call
13072*/
13073WDI_Status
13074WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013075(
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 WDI_ControlBlockType* pWDICtx,
13077 WDI_EventInfoType* pEventData
13078)
13079{
13080 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13081 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 wpt_uint16 usDataOffset = 0;
13084 wpt_uint16 usSendSize = 0;
13085 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013086 wpt_status wptStatus;
13087
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13089
13090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 -------------------------------------------------------------------------*/
13093 if (( NULL == pEventData ) ||
13094 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13095 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13096 {
13097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013099 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013100 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 }
13102
13103 /*-----------------------------------------------------------------------
13104 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 sizeof(enterBmpsReq),
13109 &pSendBuffer, &usDataOffset, &usSendSize))||
13110 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13111 {
13112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13113 "Unable to get send buffer in Enter BMPS req %x %x %x",
13114 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13115 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013116 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 }
13118
13119 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013120 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 {
13123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13124 "WDI Init failed to reset an event");
13125
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013127 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013128 }
13129
13130 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013131 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13132 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13133 {
13134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13135 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13136 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013137 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013138 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013139
13140/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013143 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13144 WDI_SET_POWER_STATE_TIMEOUT);
13145 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 {
13147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13148 "WDI Init failed to wait on an event");
13149
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013151 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 }
13153
13154 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13155
13156 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13157 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13158 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13159 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13160
13161 // For CCX and 11R Roaming
13162 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13163 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13164 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13165
13166 wpalMemoryCopy( pSendBuffer+usDataOffset,
13167 &enterBmpsReq,
13168 sizeof(enterBmpsReq));
13169
13170 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013172
13173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013174 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13177 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013178
13179fail:
13180 // Release the message buffer so we don't leak
13181 wpalMemoryFree(pSendBuffer);
13182
13183failRequest:
13184 //WDA should have failure check to avoid the memory leak
13185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186}/*WDI_ProcessEnterBmpsReq*/
13187
13188/**
13189 @brief Process Exit BMPS Request function (called when Main FSM
13190 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013191
13192 @param pWDICtx: pointer to the WLAN DAL context
13193 pEventData: pointer to the event information structure
13194
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 @see
13196 @return Result of the function call
13197*/
13198WDI_Status
13199WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013200(
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 WDI_ControlBlockType* pWDICtx,
13202 WDI_EventInfoType* pEventData
13203)
13204{
13205 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13206 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 wpt_uint16 usDataOffset = 0;
13209 wpt_uint16 usSendSize = 0;
13210 tHalExitBmpsReqParams exitBmpsReq;
13211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13212
13213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 -------------------------------------------------------------------------*/
13216 if (( NULL == pEventData ) ||
13217 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13218 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13219 {
13220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013221 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 }
13225
13226 /*-----------------------------------------------------------------------
13227 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 sizeof(exitBmpsReq),
13232 &pSendBuffer, &usDataOffset, &usSendSize))||
13233 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13234 {
13235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13236 "Unable to get send buffer in Exit BMPS req %x %x %x",
13237 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 }
13241 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13242
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13244
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpalMemoryCopy( pSendBuffer+usDataOffset,
13246 &exitBmpsReq,
13247 sizeof(exitBmpsReq));
13248
13249 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251
13252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13256 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013257}/*WDI_ProcessExitBmpsReq*/
13258
13259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013262
13263 @param pWDICtx: pointer to the WLAN DAL context
13264 pEventData: pointer to the event information structure
13265
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 @see
13267 @return Result of the function call
13268*/
13269WDI_Status
13270WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013271(
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 WDI_ControlBlockType* pWDICtx,
13273 WDI_EventInfoType* pEventData
13274)
13275{
13276 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13277 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 wpt_uint16 usDataOffset = 0;
13280 wpt_uint16 usSendSize = 0;
13281 tUapsdReqParams enterUapsdReq;
13282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13283
13284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 -------------------------------------------------------------------------*/
13287 if (( NULL == pEventData ) ||
13288 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13289 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13290 {
13291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 }
13296
13297 /*-----------------------------------------------------------------------
13298 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013300 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 sizeof(enterUapsdReq),
13303 &pSendBuffer, &usDataOffset, &usSendSize))||
13304 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13305 {
13306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13307 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13308 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 }
13312
13313 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13314 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13315 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13316 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13317 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13318 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13319 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13320 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013322
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 wpalMemoryCopy( pSendBuffer+usDataOffset,
13324 &enterUapsdReq,
13325 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013326
13327 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013329
13330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013331 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13334 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013335}/*WDI_ProcessEnterUapsdReq*/
13336
13337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013340
13341 @param pWDICtx: pointer to the WLAN DAL context
13342 pEventData: pointer to the event information structure
13343
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 @see
13345 @return Result of the function call
13346*/
13347WDI_Status
13348WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013349(
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 WDI_ControlBlockType* pWDICtx,
13351 WDI_EventInfoType* pEventData
13352)
13353{
13354 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 wpt_uint16 usDataOffset = 0;
13357 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013358 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13359 wpt_uint8 bssIdx = 0;
13360
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13362
13363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 -------------------------------------------------------------------------*/
13366 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013367 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13369 {
13370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 }
13375
13376 /*-----------------------------------------------------------------------
13377 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013381 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013383 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 {
13385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13386 "Unable to get send buffer in Exit UAPSD req %x %x",
13387 pEventData, wdiExitUapsdRspCb);
13388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 }
13391
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013392 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13393
13394 wpalMemoryCopy( pSendBuffer+usDataOffset,
13395 &bssIdx,
13396 sizeof(wpt_uint8));
13397
13398 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13399 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13400
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13405 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013406}/*WDI_ProcessExitUapsdReq*/
13407
13408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013411
13412 @param pWDICtx: pointer to the WLAN DAL context
13413 pEventData: pointer to the event information structure
13414
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 @see
13416 @return Result of the function call
13417*/
13418WDI_Status
13419WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013420(
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 WDI_ControlBlockType* pWDICtx,
13422 WDI_EventInfoType* pEventData
13423)
13424{
13425 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13426 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 wpt_uint16 usDataOffset = 0;
13429 wpt_uint16 usSendSize = 0;
13430 tUapsdInfo uapsdAcParamsReq;
13431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13432
13433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 -------------------------------------------------------------------------*/
13436 if (( NULL == pEventData ) ||
13437 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13438 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13439 {
13440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 }
13445
13446 /*-----------------------------------------------------------------------
13447 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 sizeof(uapsdAcParamsReq),
13452 &pSendBuffer, &usDataOffset, &usSendSize))||
13453 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13454 {
13455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13456 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13457 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 }
13461
13462 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13463 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13464 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13465 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13466 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13467 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13468
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 wpalMemoryCopy( pSendBuffer+usDataOffset,
13470 &uapsdAcParamsReq,
13471 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013472
13473 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013475
13476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13480 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013481}/*WDI_ProcessSetUapsdAcParamsReq*/
13482
13483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013486
13487 @param pWDICtx: pointer to the WLAN DAL context
13488 pEventData: pointer to the event information structure
13489
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 @see
13491 @return Result of the function call
13492*/
13493WDI_Status
13494WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013495(
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 WDI_ControlBlockType* pWDICtx,
13497 WDI_EventInfoType* pEventData
13498)
13499{
13500 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13501 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 wpt_uint16 usDataOffset = 0;
13504 wpt_uint16 usSendSize = 0;
13505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13506
13507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 -------------------------------------------------------------------------*/
13510 if (( NULL == pEventData ) ||
13511 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13512 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13513 {
13514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 }
13519
13520 /*-----------------------------------------------------------------------
13521 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13526 &pSendBuffer, &usDataOffset, &usSendSize))||
13527 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13528 {
13529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13530 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13531 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 }
13535
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 wpalMemoryCopy( pSendBuffer+usDataOffset,
13537 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13538 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013539
13540 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013542
13543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13547 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013548}/*WDI_ProcessUpdateUapsdParamsReq*/
13549
13550/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013553
13554 @param pWDICtx: pointer to the WLAN DAL context
13555 pEventData: pointer to the event information structure
13556
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 @see
13558 @return Result of the function call
13559*/
13560WDI_Status
13561WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013562(
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 WDI_ControlBlockType* pWDICtx,
13564 WDI_EventInfoType* pEventData
13565)
13566{
13567 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13568 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013569 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 wpt_uint16 usDataOffset = 0;
13571 wpt_uint16 usSendSize = 0;
13572 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13573
13574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13575
13576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 -------------------------------------------------------------------------*/
13579 if (( NULL == pEventData ) ||
13580 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13581 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13582 {
13583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 }
13588
13589 /*-----------------------------------------------------------------------
13590 Get message buffer
13591 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 sizeof(halRxpFilterParams),
13594 &pSendBuffer, &usDataOffset, &usSendSize))||
13595 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13596 {
13597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13598 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13599 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 }
13603
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13608
Jeff Johnsone7245742012-09-05 17:12:55 -070013609 wpalMemoryCopy( pSendBuffer+usDataOffset,
13610 &halRxpFilterParams,
13611 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013612
13613 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013615
13616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13620 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013621}/*WDI_ProcessConfigureRxpFilterReq*/
13622
13623/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013626
13627 @param pWDICtx: pointer to the WLAN DAL context
13628 pEventData: pointer to the event information structure
13629
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 @see
13631 @return Result of the function call
13632*/
13633WDI_Status
13634WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013635(
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 WDI_ControlBlockType* pWDICtx,
13637 WDI_EventInfoType* pEventData
13638)
13639{
13640 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13641 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 wpt_uint16 usDataOffset = 0;
13644 wpt_uint16 usSendSize = 0;
13645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13646
13647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 -------------------------------------------------------------------------*/
13650 if (( NULL == pEventData ) ||
13651 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13652 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13653 {
13654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 }
13659
13660 /*-----------------------------------------------------------------------
13661 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13666 &pSendBuffer, &usDataOffset, &usSendSize))||
13667 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13668 {
13669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13670 "Unable to get send buffer in Set beacon filter req %x %x %x",
13671 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 }
13675
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 wpalMemoryCopy( pSendBuffer+usDataOffset,
13677 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13678 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13679 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13680 &pwdiBeaconFilterParams->aFilters[0],
13681 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013682
13683 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013685
13686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13690 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013691}/*WDI_ProcessSetBeaconFilterReq*/
13692
13693/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013696
13697 @param pWDICtx: pointer to the WLAN DAL context
13698 pEventData: pointer to the event information structure
13699
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 @see
13701 @return Result of the function call
13702*/
13703WDI_Status
13704WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013705(
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 WDI_ControlBlockType* pWDICtx,
13707 WDI_EventInfoType* pEventData
13708)
13709{
13710 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13711 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 wpt_uint16 usDataOffset = 0;
13714 wpt_uint16 usSendSize = 0;
13715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13716
13717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 -------------------------------------------------------------------------*/
13720 if (( NULL == pEventData ) ||
13721 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13722 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13723 {
13724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 }
13729
13730 /*-----------------------------------------------------------------------
13731 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13736 &pSendBuffer, &usDataOffset, &usSendSize))||
13737 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13738 {
13739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13740 "Unable to get send buffer in remove beacon filter req %x %x %x",
13741 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 }
13745
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 wpalMemoryCopy( pSendBuffer+usDataOffset,
13747 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13748 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013749
13750 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013751 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013752
13753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13757 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013758}
13759
13760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013763
13764 @param pWDICtx: pointer to the WLAN DAL context
13765 pEventData: pointer to the event information structure
13766
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 @see
13768 @return Result of the function call
13769*/
13770WDI_Status
13771WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013772(
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 WDI_ControlBlockType* pWDICtx,
13774 WDI_EventInfoType* pEventData
13775)
13776{
13777 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13778 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 wpt_uint16 usDataOffset = 0;
13781 wpt_uint16 usSendSize = 0;
13782 tHalRSSIThresholds rssiThresholdsReq;
13783 WDI_Status ret_status = 0;
13784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13785
13786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 -------------------------------------------------------------------------*/
13789 if (( NULL == pEventData ) ||
13790 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13791 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13792 {
13793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 }
13798
13799 /*-----------------------------------------------------------------------
13800 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 sizeof(rssiThresholdsReq),
13805 &pSendBuffer, &usDataOffset, &usSendSize))||
13806 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13807 {
13808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13809 "Unable to get send buffer in remove beacon filter req %x %x %x",
13810 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 }
13814
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013822 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13835
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 wpalMemoryCopy( pSendBuffer+usDataOffset,
13837 &rssiThresholdsReq,
13838 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013839
13840 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013842
13843 /*-------------------------------------------------------------------------
13844 Send Set threshold req to HAL
13845 -------------------------------------------------------------------------*/
13846 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13847 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13848 {
13849 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13850 // req. Then as a result of processing the threshold cross ind, we trigger
13851 // a Set threshold req, then we need to indicate to WDI that it needs to
13852 // go to busy state as a result of the indication as we sent a req in the
13853 // same WDI context.
13854 // Hence expected state transition is to busy.
13855 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13856 }
13857
13858 return ret_status;
13859}
13860
13861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013864
13865 @param pWDICtx: pointer to the WLAN DAL context
13866 pEventData: pointer to the event information structure
13867
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 @see
13869 @return Result of the function call
13870*/
13871WDI_Status
13872WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013873(
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 WDI_ControlBlockType* pWDICtx,
13875 WDI_EventInfoType* pEventData
13876)
13877{
13878 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13879 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 wpt_uint16 usDataOffset = 0;
13882 wpt_uint16 usSendSize = 0;
13883 tHalHostOffloadReq hostOffloadParams;
13884 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013885 wpt_uint8 ucCurrentBSSSesIdx = 0;
13886 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013887
13888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13889
13890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 -------------------------------------------------------------------------*/
13893 if (( NULL == pEventData ) ||
13894 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13895 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13896 {
13897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013900 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 }
13902
13903 /*-----------------------------------------------------------------------
13904 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13909 &pSendBuffer, &usDataOffset, &usSendSize))||
13910 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13911 {
13912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13913 "Unable to get send buffer in host offload req %x %x %x",
13914 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13915 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013916 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 }
13918
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013919 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13920 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13921 &pBSSSes);
13922 if ( NULL == pBSSSes )
13923 {
13924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013925 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13926 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013927 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013928 }
13929
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13931 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13934 {
13935 // ARP Offload
13936 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13937 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13938 4);
13939 }
13940 else
13941 {
13942 // NS Offload
13943 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13944 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13945 16);
13946
13947#ifdef WLAN_NS_OFFLOAD
13948 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13949 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13950 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13951 16);
13952 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13953 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13954 16);
13955 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13956 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13957 16);
13958 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13959 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13960 16);
13961 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13962 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13963 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013964 nsOffloadParams.srcIPv6AddrValid =
13965 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13966
13967 nsOffloadParams.targetIPv6Addr1Valid =
13968 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13969
13970 nsOffloadParams.targetIPv6Addr2Valid =
13971 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13972
13973 nsOffloadParams.slotIndex =
13974 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013975
Jeff Johnson295189b2012-06-20 16:38:30 -070013976#endif // WLAN_NS_OFFLOAD
13977 }
13978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013979 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13980
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 // copy hostOffloadParams into pSendBuffer
13982 wpalMemoryCopy( pSendBuffer+usDataOffset,
13983 &hostOffloadParams,
13984 sizeof(hostOffloadParams));
13985
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013986 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013988 // copy nsOffloadParams into pSendBuffer
13989 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 &nsOffloadParams,
13991 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013992 }
13993 else
13994 {
13995#ifdef WLAN_NS_OFFLOAD
13996 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13997 {
13998 // copy nsOffloadParams into pSendBuffer
13999 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14000 &nsOffloadParams,
14001 sizeof(nsOffloadParams));
14002 }
14003#endif
14004 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014005
14006 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008
14009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14013 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014014
14015fail:
14016 // Release the message buffer so we don't leak
14017 wpalMemoryFree(pSendBuffer);
14018
14019failRequest:
14020 //WDA should have failure check to avoid the memory leak
14021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014022}/*WDI_ProcessHostOffloadReq*/
14023
14024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014027
14028 @param pWDICtx: pointer to the WLAN DAL context
14029 pEventData: pointer to the event information structure
14030
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 @see
14032 @return Result of the function call
14033*/
14034WDI_Status
14035WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014036(
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 WDI_ControlBlockType* pWDICtx,
14038 WDI_EventInfoType* pEventData
14039)
14040{
14041 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14042 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014043 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014044 wpt_uint16 usDataOffset = 0;
14045 wpt_uint16 usSendSize = 0;
14046 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014047 wpt_uint8 ucCurrentBSSSesIdx = 0;
14048 WDI_BSSSessionType* pBSSSes = NULL;
14049
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
14055 if (( NULL == pEventData ) ||
14056 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14057 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14058 {
14059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14060 "Invalid parameters in Keep Alive req");
14061 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014062 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 }
14064
14065 /*-----------------------------------------------------------------------
14066 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 sizeof(keepAliveReq),
14071 &pSendBuffer, &usDataOffset, &usSendSize))||
14072 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14073 {
14074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14075 "Unable to get send buffer in keep alive req %x %x %x",
14076 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14077 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014078 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 }
14080
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14082 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14083 &pBSSSes);
14084 if ( NULL == pBSSSes )
14085 {
14086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014087 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014088 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014089 }
14090
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14092 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14093
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014094 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014095
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14097 {
14098 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14099 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14100 HAL_IPV4_ADDR_LEN);
14101 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14102 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 wpalMemoryCopy(keepAliveReq.destMacAddr,
14105 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14106 HAL_MAC_ADDR_LEN);
14107 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014108
14109 wpalMemoryCopy( pSendBuffer+usDataOffset,
14110 &keepAliveReq,
14111 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014112
14113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14114 "Process keep alive req %d",sizeof(keepAliveReq));
14115
14116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14117 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14118
14119 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014121
14122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14123 "Sending keep alive req to HAL");
14124
14125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14129 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014130
14131fail:
14132 // Release the message buffer so we don't leak
14133 wpalMemoryFree(pSendBuffer);
14134
14135failRequest:
14136 //WDA should have failure check to avoid the memory leak
14137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014138}/*WDI_ProcessKeepAliveReq*/
14139
14140
14141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014144
14145 @param pWDICtx: pointer to the WLAN DAL context
14146 pEventData: pointer to the event information structure
14147
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 @see
14149 @return Result of the function call
14150*/
14151WDI_Status
14152WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014153(
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 WDI_ControlBlockType* pWDICtx,
14155 WDI_EventInfoType* pEventData
14156)
14157{
14158 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14159 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014161 wpt_uint16 usDataOffset = 0;
14162 wpt_uint16 usSendSize = 0;
14163 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014164 wpt_uint8 ucCurrentBSSSesIdx = 0;
14165 WDI_BSSSessionType* pBSSSes = NULL;
14166
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14168
14169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 -------------------------------------------------------------------------*/
14172 if (( NULL == pEventData ) ||
14173 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14174 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14175 {
14176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014179 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 }
14181
14182 /*-----------------------------------------------------------------------
14183 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 sizeof(wowlAddBcPtrnReq),
14188 &pSendBuffer, &usDataOffset, &usSendSize))||
14189 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14190 {
14191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14192 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14193 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14194 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014195 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 }
14197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014198 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14199 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14200 &pBSSSes);
14201 if ( NULL == pBSSSes )
14202 {
14203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014204 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014205 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014206 }
14207
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014212 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14216
14217 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14218 {
14219 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14220 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14221 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14222 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14223 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14224 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14225 }
14226 else
14227 {
14228 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14229 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14230 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14231 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14232 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14233 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14234
14235 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14236 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14237 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14238 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14239 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14240 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14241 }
14242
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014243 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14244
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 wpalMemoryCopy( pSendBuffer+usDataOffset,
14246 &wowlAddBcPtrnReq,
14247 sizeof(wowlAddBcPtrnReq));
14248
14249 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014251
14252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14256 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014257fail:
14258 // Release the message buffer so we don't leak
14259 wpalMemoryFree(pSendBuffer);
14260
14261failRequest:
14262 //WDA should have failure check to avoid the memory leak
14263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014264}/*WDI_ProcessWowlAddBcPtrnReq*/
14265
14266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014269
14270 @param pWDICtx: pointer to the WLAN DAL context
14271 pEventData: pointer to the event information structure
14272
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 @see
14274 @return Result of the function call
14275*/
14276WDI_Status
14277WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014278(
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 WDI_ControlBlockType* pWDICtx,
14280 WDI_EventInfoType* pEventData
14281)
14282{
14283 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14284 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 wpt_uint16 usDataOffset = 0;
14287 wpt_uint16 usSendSize = 0;
14288 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014289 wpt_uint8 ucCurrentBSSSesIdx = 0;
14290 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14292
14293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 -------------------------------------------------------------------------*/
14296 if (( NULL == pEventData ) ||
14297 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14298 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14299 {
14300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014303 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 }
14305
14306 /*-----------------------------------------------------------------------
14307 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014308 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 sizeof(wowlDelBcPtrnReq),
14312 &pSendBuffer, &usDataOffset, &usSendSize))||
14313 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14314 {
14315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14316 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14317 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14318 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014319 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 }
14321
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014322 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14323 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14324 &pBSSSes);
14325 if ( NULL == pBSSSes )
14326 {
14327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014328 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014329 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014330 }
14331
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014334
14335 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14336
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 wpalMemoryCopy( pSendBuffer+usDataOffset,
14338 &wowlDelBcPtrnReq,
14339 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014340
14341 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343
14344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14348 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014349
14350fail:
14351 // Release the message buffer so we don't leak
14352 wpalMemoryFree(pSendBuffer);
14353
14354failRequest:
14355 //WDA should have failure check to avoid the memory leak
14356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014357}/*WDI_ProcessWowlDelBcPtrnReq*/
14358
14359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014362
14363 @param pWDICtx: pointer to the WLAN DAL context
14364 pEventData: pointer to the event information structure
14365
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 @see
14367 @return Result of the function call
14368*/
14369WDI_Status
14370WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014371(
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 WDI_ControlBlockType* pWDICtx,
14373 WDI_EventInfoType* pEventData
14374)
14375{
14376 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14377 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 wpt_uint16 usDataOffset = 0;
14380 wpt_uint16 usSendSize = 0;
14381 tHalWowlEnterParams wowlEnterReq;
14382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14383
14384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 -------------------------------------------------------------------------*/
14387 if (( NULL == pEventData ) ||
14388 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14389 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14390 {
14391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 }
14396
14397 /*-----------------------------------------------------------------------
14398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 sizeof(wowlEnterReq),
14403 &pSendBuffer, &usDataOffset, &usSendSize))||
14404 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14405 {
14406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14407 "Unable to get send buffer in Wowl enter req %x %x %x",
14408 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 }
14412
Kumar Anand21a26022013-07-22 14:35:34 -070014413 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14414
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14431
14432#ifdef WLAN_WAKEUP_EVENTS
14433 wowlEnterReq.ucWoWEAPIDRequestEnable =
14434 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14435
14436 wowlEnterReq.ucWoWEAPOL4WayEnable =
14437 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14438
14439 wowlEnterReq.ucWowNetScanOffloadMatch =
14440 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14441
14442 wowlEnterReq.ucWowGTKRekeyError =
14443 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14444
14445 wowlEnterReq.ucWoWBSSConnLoss =
14446 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14447#endif // WLAN_WAKEUP_EVENTS
14448
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014449 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14450
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14452 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14453 sizeof(tSirMacAddr));
14454
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 wpalMemoryCopy( pSendBuffer+usDataOffset,
14456 &wowlEnterReq,
14457 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014458
14459 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014461
14462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14466 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014467}/*WDI_ProcessWowlEnterReq*/
14468
14469/**
14470 @brief Process Wowl exit Request function (called when Main FSM
14471 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014472
14473 @param pWDICtx: pointer to the WLAN DAL context
14474 pEventData: pointer to the event information structure
14475
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 @see
14477 @return Result of the function call
14478*/
14479WDI_Status
14480WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014481(
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 WDI_ControlBlockType* pWDICtx,
14483 WDI_EventInfoType* pEventData
14484)
14485{
14486 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014487 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 wpt_uint16 usDataOffset = 0;
14490 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014491 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14493
14494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 -------------------------------------------------------------------------*/
14497 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014498 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14500 {
14501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 }
14506
14507 /*-----------------------------------------------------------------------
14508 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014512 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014514 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 {
14516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14517 "Unable to get send buffer in Wowl Exit req %x %x",
14518 pEventData, wdiWowlExitCb);
14519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 }
14522
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014523 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14524
14525 wpalMemoryCopy( pSendBuffer+usDataOffset,
14526 &wowlExitparams,
14527 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14532 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014533}/*WDI_ProcessWowlExitReq*/
14534
14535/**
14536 @brief Process Configure Apps Cpu Wakeup State Request function
14537 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014538
14539 @param pWDICtx: pointer to the WLAN DAL context
14540 pEventData: pointer to the event information structure
14541
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 @see
14543 @return Result of the function call
14544*/
14545WDI_Status
14546WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014547(
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 WDI_ControlBlockType* pWDICtx,
14549 WDI_EventInfoType* pEventData
14550)
14551{
14552 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14553 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 wpt_uint16 usDataOffset = 0;
14556 wpt_uint16 usSendSize = 0;
14557 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14559
14560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 -------------------------------------------------------------------------*/
14563 if (( NULL == pEventData ) ||
14564 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14565 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14566 {
14567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 }
14572
14573 /*-----------------------------------------------------------------------
14574 Get message buffer
14575 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 sizeof(halCfgAppsCpuWakeupStateReqParams),
14578 &pSendBuffer, &usDataOffset, &usSendSize))||
14579 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14580 {
14581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14582 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14583 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 }
14587
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14590
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wpalMemoryCopy( pSendBuffer+usDataOffset,
14592 &halCfgAppsCpuWakeupStateReqParams,
14593 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014594
14595 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014597
14598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14602 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14603 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014604}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14605
14606#ifdef WLAN_FEATURE_VOWIFI_11R
14607/**
14608 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14609 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014610
14611 @param pWDICtx: pointer to the WLAN DAL context
14612 pEventData: pointer to the event information structure
14613
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 @see
14615 @return Result of the function call
14616*/
14617WDI_Status
14618WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014619(
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 WDI_ControlBlockType* pWDICtx,
14621 WDI_EventInfoType* pEventData
14622)
14623{
14624 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14625 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 wpt_uint16 usDataOffset = 0;
14630 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 wpt_macAddr macBSSID;
14633 tAggrAddTsReq halAggrAddTsReq;
14634 int i;
14635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14636
14637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 -------------------------------------------------------------------------*/
14640 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14641 ( NULL == pEventData->pCBfnc ))
14642 {
14643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 }
14648 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14649 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14650 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14651 /*-------------------------------------------------------------------------
14652 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 -------------------------------------------------------------------------*/
14655 wpalMutexAcquire(&pWDICtx->wptMutex);
14656
14657 /*------------------------------------------------------------------------
14658 Find the BSS for which the request is made and identify WDI session
14659 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14661 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 &macBSSID))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14665 "This station does not exist in the WDI Station Table %d");
14666 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14671 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14674 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14675 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014676
14677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014680
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 /*------------------------------------------------------------------------
14682 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 ------------------------------------------------------------------------*/
14685 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14686 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14688 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14689 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014690
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 }
14695
14696 wpalMutexRelease(&pWDICtx->wptMutex);
14697 /*-----------------------------------------------------------------------
14698 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 sizeof(tAggrAddTsParams),
14703 &pSendBuffer, &usDataOffset, &usSendSize))||
14704 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14705 {
14706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14707 "Unable to get send buffer in set bss key req %x %x %x",
14708 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 }
14712
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14717
14718 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14719 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14726 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14729 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14732 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14735 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14738 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14741 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14744 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14747 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752
14753
14754 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14784 }
14785
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 wpalMemoryCopy( pSendBuffer+usDataOffset,
14787 &halAggrAddTsReq,
14788 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014789
14790 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014792
14793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014799}/*WDI_ProcessAggrAddTSpecReq*/
14800#endif /* WLAN_FEATURE_VOWIFI_11R */
14801
14802/**
14803 @brief Process Shutdown Request function (called when Main FSM
14804 allows it)
14805
14806 @param pWDICtx: pointer to the WLAN DAL context
14807 pEventData: pointer to the event information structure
14808
14809 @see
14810 @return Result of the function call
14811*/
14812WDI_Status
14813WDI_ProcessShutdownReq
14814(
14815 WDI_ControlBlockType* pWDICtx,
14816 WDI_EventInfoType* pEventData
14817 )
14818{
14819 wpt_status wptStatus;
14820
14821
14822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14823
14824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 -------------------------------------------------------------------------*/
14827 if ( NULL == pEventData )
14828 {
14829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 WDI_ASSERT(0);
14832 return WDI_STATUS_E_FAILURE;
14833 }
14834
14835 wpalMutexAcquire(&pWDICtx->wptMutex);
14836
14837
14838 gWDIInitialized = eWLAN_PAL_FALSE;
14839 /*! TO DO: stop the data services */
14840 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14841 {
14842 /*Stop the STA Table !UT- check this logic again
14843 It is safer to do it here than on the response - because a stop is imminent*/
14844 WDI_STATableStop(pWDICtx);
14845
14846 /* Stop Transport Driver, DXE */
14847 WDTS_Stop(pWDICtx);
14848 }
14849
14850 /*Clear all pending request*/
14851 WDI_ClearPendingRequests(pWDICtx);
14852 /* Close Data transport*/
14853 /* FTM mode does not open Data Path */
14854 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14855 {
14856 WDTS_Close(pWDICtx);
14857 }
14858 /*Close the STA Table !UT- check this logic again*/
14859 WDI_STATableClose(pWDICtx);
14860 /*close the PAL */
14861 wptStatus = wpalClose(pWDICtx->pPALContext);
14862 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14863 {
14864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14865 "Failed to wpal Close %d", wptStatus);
14866 WDI_ASSERT(0);
14867 }
14868
14869 /*Transition back to init state*/
14870 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14871
14872 wpalMutexRelease(&pWDICtx->wptMutex);
14873
14874 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014876
14877
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014879}/*WDI_ProcessShutdownReq*/
14880
14881/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014883========================================================================*/
14884
14885/**
14886 @brief Process Start Response function (called when a response
14887 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014888
14889 @param pWDICtx: pointer to the WLAN DAL context
14890 pEventData: pointer to the event information structure
14891
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 @see
14893 @return Result of the function call
14894*/
14895WDI_Status
14896WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014897(
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 WDI_ControlBlockType* pWDICtx,
14899 WDI_EventInfoType* pEventData
14900)
14901{
14902 WDI_StartRspParamsType wdiRspParams;
14903 WDI_StartRspCb wdiStartRspCb = NULL;
14904
14905 tHalMacStartRspParams* startRspParams;
14906
14907#ifndef HAL_SELF_STA_PER_BSS
14908 WDI_AddStaParams wdiAddSTAParam = {0};
14909#endif
14910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14911
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 -------------------------------------------------------------------------*/
14916 if (( NULL == pEventData ) ||
14917 ( NULL == pEventData->pEventData) ||
14918 ( NULL == wdiStartRspCb ))
14919 {
14920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 }
14925
14926 /*-------------------------------------------------------------------------
14927 Extract response and send it to UMAC
14928 -------------------------------------------------------------------------*/
14929 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14930 {
14931 // not enough data was received
14932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14933 "Invalid response length in Start Resp Expect %x Rcvd %x",
14934 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 }
14938
14939 /*-------------------------------------------------------------------------
14940 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 -------------------------------------------------------------------------*/
14943 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14944
14945 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14946 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14947 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14948 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14949 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14950 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14951 wdiRspParams.wlanReportedVersion.major =
14952 startRspParams->wcnssWlanVersion.major;
14953 wdiRspParams.wlanReportedVersion.minor =
14954 startRspParams->wcnssWlanVersion.minor;
14955 wdiRspParams.wlanReportedVersion.version =
14956 startRspParams->wcnssWlanVersion.version;
14957 wdiRspParams.wlanReportedVersion.revision =
14958 startRspParams->wcnssWlanVersion.revision;
14959 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14960 startRspParams->wcnssCrmVersionString,
14961 sizeof(wdiRspParams.wcnssSoftwareVersion));
14962 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14963 startRspParams->wcnssWlanVersionString,
14964 sizeof(wdiRspParams.wcnssHardwareVersion));
14965 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14966
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014967 /*Save the HAL Version*/
14968 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14969
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 wpalMutexAcquire(&pWDICtx->wptMutex);
14971 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14972 {
14973 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14974
14975 /*Cache the start response for further use*/
14976 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014977 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 sizeof(pWDICtx->wdiCachedStartRspParams));
14979
14980 }
14981 else
14982 {
14983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14984 "Failed to start device with status %s(%d)",
14985 WDI_getHALStatusMsgString(startRspParams->status),
14986 startRspParams->status);
14987
14988 /*Set the expected state transition to stopped - because the start has
14989 failed*/
14990 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14991
14992 wpalMutexRelease(&pWDICtx->wptMutex);
14993
14994 /*Notify UMAC*/
14995 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014996
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14998
14999 /*Although the response is an error - it was processed by our function
15000 so as far as the caller is concerned this is a succesful reponse processing*/
15001 return WDI_STATUS_SUCCESS;
15002 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015003
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 wpalMutexRelease(&pWDICtx->wptMutex);
15005
15006 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15007 {
15008 /* FTM mode does not need to execute below */
15009 /* Notify UMAC */
15010 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15011 return WDI_STATUS_SUCCESS;
15012 }
15013
15014 /* START the Data transport */
15015 WDTS_startTransport(pWDICtx);
15016
15017 /*Start the STA Table !- check this logic again*/
15018 WDI_STATableStart(pWDICtx);
15019
15020#ifndef HAL_SELF_STA_PER_BSS
15021 /* Store the Self STA Index */
15022 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15023
15024 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15025 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15026 WDI_MAC_ADDR_LEN);
15027
15028 /* At this point add the self-STA */
15029
15030 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15031 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15032 /*! TO DO: wdiAddSTAParam.dpuSig */
15033 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15034 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15035 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15036
15037 //all DPU indices are the same for self STA
15038 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15039 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015040 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15042 WDI_MAC_ADDR_LEN);
15043 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15044 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15045
15046 /* Note: Since we don't get an explicit config STA request for self STA, we
15047 add the self STA upon receiving the Start response message. But the
15048 self STA entry in the table is deleted when WDI gets an explicit delete STA
15049 request */
15050 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15051#endif
15052
15053 /*Notify UMAC*/
15054 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15055
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015057}/*WDI_ProcessStartRsp*/
15058
15059
15060/**
15061 @brief Process Stop Response function (called when a response
15062 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015063
15064 @param pWDICtx: pointer to the WLAN DAL context
15065 pEventData: pointer to the event information structure
15066
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 @see
15068 @return Result of the function call
15069*/
15070WDI_Status
15071WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015072(
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 WDI_ControlBlockType* pWDICtx,
15074 WDI_EventInfoType* pEventData
15075)
15076{
15077 WDI_Status wdiStatus;
15078 WDI_StopRspCb wdiStopRspCb = NULL;
15079
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15082
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 -------------------------------------------------------------------------*/
15087 if (( NULL == pEventData ) ||
15088 ( NULL == pEventData->pEventData) ||
15089 ( NULL == wdiStopRspCb ))
15090 {
15091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 }
15096
15097 /*-------------------------------------------------------------------------
15098 Extract response and send it to UMAC
15099 -------------------------------------------------------------------------*/
15100 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15101 {
15102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15103 "Invalid response length in Stop Resp %x %x",
15104 pEventData->uEventDataSize);
15105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 }
15108
15109 /*-------------------------------------------------------------------------
15110 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15114 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 sizeof(halMacStopRspMsg.stopRspParams));
15116
Jeff Johnsone7245742012-09-05 17:12:55 -070015117 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015118
15119 wpalMutexAcquire(&pWDICtx->wptMutex);
15120
15121 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 --------------------------------------------------------------------------*/
15124 if ( WDI_STATUS_SUCCESS != wdiStatus )
15125 {
15126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15127 "Failed to stop the device with status %s (%d)",
15128 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15129 halMacStopRspMsg.stopRspParams.status);
15130
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15132
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015136
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15138
15139 /*Transition now as WDI may get preempted imediately after it sends
15140 up the Stop Response and it will not get to process the state transition
15141 from Main Rsp function*/
15142 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15143 wpalMutexRelease(&pWDICtx->wptMutex);
15144
15145 /*! TO DO: - STOP the Data transport */
15146
15147 /*Notify UMAC*/
15148 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15149
Jeff Johnsone7245742012-09-05 17:12:55 -070015150 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015151}/*WDI_ProcessStopRsp*/
15152
15153/**
15154 @brief Process Close Rsp function (called when a response
15155 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015156
15157 @param pWDICtx: pointer to the WLAN DAL context
15158 pEventData: pointer to the event information structure
15159
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 @see
15161 @return Result of the function call
15162*/
15163WDI_Status
15164WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015165(
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 WDI_ControlBlockType* pWDICtx,
15167 WDI_EventInfoType* pEventData
15168)
15169{
15170 /*There is no close response comming from HAL - function just kept for
15171 simmetry */
15172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015174}/*WDI_ProcessCloseRsp*/
15175
15176
15177/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015179============================================================================*/
15180
15181/**
15182 @brief Process Init Scan Rsp function (called when a response
15183 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015184
15185 @param pWDICtx: pointer to the WLAN DAL context
15186 pEventData: pointer to the event information structure
15187
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 @see
15189 @return Result of the function call
15190*/
15191WDI_Status
15192WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015193(
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 WDI_ControlBlockType* pWDICtx,
15195 WDI_EventInfoType* pEventData
15196)
15197{
15198 WDI_Status wdiStatus;
15199 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015201 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15203
15204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 -------------------------------------------------------------------------*/
15207 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15208 ( NULL == pEventData->pEventData))
15209 {
15210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 }
15215
15216 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15217 if( NULL == wdiInitScanRspCb)
15218 {
15219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015220 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 }
15224
15225 /*-------------------------------------------------------------------------
15226 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15230 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 sizeof(halInitScanRspMsg.initScanRspParams));
15232
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015234
15235 if ( pWDICtx->bInBmps )
15236 {
15237 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015238 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15239 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15241 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15242 WDI_ASSERT(0);
15243 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 }
15245
15246 /*Notify UMAC*/
15247 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15248
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250}/*WDI_ProcessInitScanRsp*/
15251
15252
15253/**
15254 @brief Process Start Scan Rsp function (called when a response
15255 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015256
15257 @param pWDICtx: pointer to the WLAN DAL context
15258 pEventData: pointer to the event information structure
15259
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 @see
15261 @return Result of the function call
15262*/
15263WDI_Status
15264WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015265(
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 WDI_ControlBlockType* pWDICtx,
15267 WDI_EventInfoType* pEventData
15268)
15269{
15270 WDI_StartScanRspParamsType wdiStartScanParams;
15271 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015272
15273 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15275
15276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 -------------------------------------------------------------------------*/
15279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15280 ( NULL == pEventData->pEventData))
15281 {
15282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 }
15287
15288 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15289 if( NULL == wdiStartScanRspCb)
15290 {
15291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015292 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 }
15296
15297 /*-------------------------------------------------------------------------
15298 Extract response and send it to UMAC
15299 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015300 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15301 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 sizeof(halStartScanRspMsg.startScanRspParams));
15303
15304 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15305 halStartScanRspMsg.startScanRspParams.status);
15306#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 halStartScanRspMsg.startScanRspParams.startTSF,
15311 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015312#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015313
15314 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15315 {
15316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15317 "Start scan failed with status %s (%d)",
15318 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15319 halStartScanRspMsg.startScanRspParams.status);
15320 /* send the status to UMAC, don't return from here*/
15321 }
15322
15323 /*Notify UMAC*/
15324 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15325
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015327
15328}/*WDI_ProcessStartScanRsp*/
15329
15330
15331/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015332 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015334
15335 @param pWDICtx: pointer to the WLAN DAL context
15336 pEventData: pointer to the event information structure
15337
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 @see
15339 @return Result of the function call
15340*/
15341WDI_Status
15342WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015343(
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 WDI_ControlBlockType* pWDICtx,
15345 WDI_EventInfoType* pEventData
15346)
15347{
15348 WDI_Status wdiStatus;
15349 tHalEndScanRspMsg halEndScanRspMsg;
15350 WDI_EndScanRspCb wdiEndScanRspCb;
15351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15352
15353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 -------------------------------------------------------------------------*/
15356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15357 ( NULL == pEventData->pEventData))
15358 {
15359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 }
15364
15365 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15366
15367 /*-------------------------------------------------------------------------
15368 Extract response and send it to UMAC
15369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15371 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 sizeof(halEndScanRspMsg.endScanRspParams));
15373
Jeff Johnsone7245742012-09-05 17:12:55 -070015374 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015375
15376 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15377 {
15378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15379 "End Scan failed with status %s (%d )",
15380 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15381 halEndScanRspMsg.endScanRspParams.status);
15382 /* send the status to UMAC, don't return from here*/
15383 }
15384
15385 /*Notify UMAC*/
15386 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15387
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389}/*WDI_ProcessEndScanRsp*/
15390
15391
15392/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015395
15396 @param pWDICtx: pointer to the WLAN DAL context
15397 pEventData: pointer to the event information structure
15398
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 @see
15400 @return Result of the function call
15401*/
15402WDI_Status
15403WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015404(
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 WDI_ControlBlockType* pWDICtx,
15406 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015407)
Jeff Johnson295189b2012-06-20 16:38:30 -070015408{
15409 WDI_Status wdiStatus;
15410 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015411
15412 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15414
15415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 -------------------------------------------------------------------------*/
15418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15419 ( NULL == pEventData->pEventData))
15420 {
15421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 }
15426
15427 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15428
15429 /*-------------------------------------------------------------------------
15430 Extract response and send it to UMAC
15431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15433 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015434 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15435
Jeff Johnsone7245742012-09-05 17:12:55 -070015436 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015437
15438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 halFinishScanRspMsg.finishScanRspParams.status);
15441
15442 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15443 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15444 {
15445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15446 "Finish Scan failed with status %s (%d)",
15447 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15448 halFinishScanRspMsg.finishScanRspParams.status);
15449 /* send the status to UMAC, don't return from here*/
15450 }
15451
15452 /*Notify UMAC*/
15453 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15454
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456}/*WDI_ProcessFinishScanRsp*/
15457
15458/**
15459 @brief Process Join Response function (called when a response
15460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015461
15462 @param pWDICtx: pointer to the WLAN DAL context
15463 pEventData: pointer to the event information structure
15464
Jeff Johnson295189b2012-06-20 16:38:30 -070015465 @see
15466 @return Result of the function call
15467*/
15468WDI_Status
15469WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015470(
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 WDI_ControlBlockType* pWDICtx,
15472 WDI_EventInfoType* pEventData
15473)
15474{
15475 WDI_Status wdiStatus;
15476 WDI_JoinRspCb wdiJoinRspCb;
15477 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015478
15479 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15481
15482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 -------------------------------------------------------------------------*/
15485 if (( NULL == pWDICtx ) ||
15486 ( NULL == pWDICtx->pfncRspCB ) ||
15487 ( NULL == pEventData ) ||
15488 ( NULL == pEventData->pEventData))
15489 {
15490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 }
15495
15496 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15497
15498 /*-------------------------------------------------------------------------
15499 Extract response and send it to UMAC
15500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15502 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 sizeof(halJoinRspMsg.joinRspParams));
15504
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015506
15507 wpalMutexAcquire(&pWDICtx->wptMutex);
15508
15509 /*-----------------------------------------------------------------------
15510 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015511 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15515 {
15516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015517 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15518 "association no longer in progress %d - mysterious HAL response",
15519 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015520
Jeff Johnsone7245742012-09-05 17:12:55 -070015521 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 }
15525
15526 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15527
15528 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 -----------------------------------------------------------------------*/
15531 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15532 {
15533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15534 "Join only allowed in Joining state - failure state is %d "
15535 "strange HAL response", pBSSSes->wdiAssocState);
15536
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15538
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 }
15542
15543
15544 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 -----------------------------------------------------------------------*/
15547 if ( WDI_STATUS_SUCCESS != wdiStatus )
15548 {
15549 /*Association was failed by HAL - remove session*/
15550 WDI_DeleteSession(pWDICtx, pBSSSes);
15551
15552 /*Association no longer in progress */
15553 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15554
15555 /*Association no longer in progress - prepare pending assoc for processing*/
15556 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015557
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 }
15559 else
15560 {
15561 /*Transition to state Joining - this may be redundant as we are supposed
15562 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 }
15565
15566 wpalMutexRelease(&pWDICtx->wptMutex);
15567
15568 /*Notify UMAC*/
15569 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15570
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015572}/*WDI_ProcessJoinRsp*/
15573
15574
15575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015576 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015578
15579 @param pWDICtx: pointer to the WLAN DAL context
15580 pEventData: pointer to the event information structure
15581
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 @see
15583 @return Result of the function call
15584*/
15585WDI_Status
15586WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015587(
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_ControlBlockType* pWDICtx,
15589 WDI_EventInfoType* pEventData
15590)
15591{
15592 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15593 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 WDI_BSSSessionType* pBSSSes = NULL;
15596
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15599 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015600
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15602
15603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 -------------------------------------------------------------------------*/
15606 if (( NULL == pEventData ) ||
15607 ( NULL == pEventData->pEventData))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 }
15614
15615 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15616
15617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15621 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 sizeof(halConfigBssRspMsg.configBssRspParams));
15623
15624 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15625 halConfigBssRspMsg.configBssRspParams.status);
15626 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15627 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15630 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015631
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015633
15634 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636
15637 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15645 #endif
15646 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15647 halConfigBssRspMsg.configBssRspParams.staMac,
15648 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015649
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 wpalMutexAcquire(&pWDICtx->wptMutex);
15651 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15655 wdiConfigBSSParams.macBSSID,
15656 &pBSSSes);
15657
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 /*-----------------------------------------------------------------------
15659 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 -----------------------------------------------------------------------*/
15662 if ( NULL == pBSSSes )
15663 {
15664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15665 "Association sequence for this BSS does not yet exist "
15666 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015667
15668 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15669
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015673
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 /*Save data for this BSS*/
15675 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15676 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15687 pBSSSes->bcastStaIdx =
15688 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015689
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015691
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 /*-------------------------------------------------------------------------
15693 Add Peer STA
15694 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15697 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015698
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 wdiAddSTAParam.ucHTCapable =
15703 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15704 wdiAddSTAParam.ucStaType =
15705 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15706
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015708 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15709 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015711
15712 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15713 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15714 WDI_MAC_ADDR_LEN);
15715
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015720 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015721 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015729
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15731 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015732
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15734 /*-------------------------------------------------------------------------
15735 Add Broadcast STA only in AP mode
15736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015738 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 {
15740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15741 "Add BCAST STA to table for index: %d",
15742 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015743
15744 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015746
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15748 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15749 }
15750 wpalMutexRelease(&pWDICtx->wptMutex);
15751 }
15752 else
15753 {
15754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15755 "Config BSS RSP failed with status : %s(%d)",
15756 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015757 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 halConfigBssRspMsg.configBssRspParams.status);
15759
Jeff Johnsone7245742012-09-05 17:12:55 -070015760
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 /*Association was failed by HAL - remove session*/
15762 WDI_DeleteSession(pWDICtx, pBSSSes);
15763
15764 /*Association no longer in progress */
15765 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15766
15767 /*Association no longer in progress - prepare pending assoc for processing*/
15768 WDI_DequeueAssocRequest(pWDICtx);
15769
15770 }
15771
15772 /*Notify UMAC*/
15773 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15774
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776}/*WDI_ProcessConfigBSSRsp*/
15777
15778
15779/**
15780 @brief Process Del BSS Response function (called when a response
15781 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015782
15783 @param pWDICtx: pointer to the WLAN DAL context
15784 pEventData: pointer to the event information structure
15785
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 @see
15787 @return Result of the function call
15788*/
15789WDI_Status
15790WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015791(
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 WDI_ControlBlockType* pWDICtx,
15793 WDI_EventInfoType* pEventData
15794)
15795{
15796 WDI_DelBSSRspParamsType wdiDelBSSParams;
15797 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 WDI_BSSSessionType* pBSSSes = NULL;
15800
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15803
15804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 -------------------------------------------------------------------------*/
15807 if (( NULL == pEventData ) ||
15808 ( NULL == pEventData->pEventData))
15809 {
15810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 }
15815
15816 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15817
15818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15822 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 sizeof(halDelBssRspMsg.deleteBssRspParams));
15824
15825
15826 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015828
15829 wpalMutexAcquire(&pWDICtx->wptMutex);
15830
15831 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015832 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15835 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15836 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015837
15838 /*-----------------------------------------------------------------------
15839 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 -----------------------------------------------------------------------*/
15842 if ( NULL == pBSSSes )
15843 {
15844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15845 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015846 "association no longer in progress - mysterious HAL response");
15847
15848 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15849
15850 wpalMutexRelease(&pWDICtx->wptMutex);
15851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015853
15854 /*Extract BSSID for the response to UMAC*/
15855 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15856 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15857
15858 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15859
15860 /*-----------------------------------------------------------------------
15861 The current session will be deleted
15862 -----------------------------------------------------------------------*/
15863 WDI_DeleteSession(pWDICtx, pBSSSes);
15864
15865
15866 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15867 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015869 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015870 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015871
15872 /* Delete the STA's in this BSS */
15873 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15874
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 wpalMutexRelease(&pWDICtx->wptMutex);
15876
15877 /*Notify UMAC*/
15878 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15879
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015881}/*WDI_ProcessDelBSSRsp*/
15882
15883/**
15884 @brief Process Post Assoc Rsp function (called when a response
15885 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015886
15887 @param pWDICtx: pointer to the WLAN DAL context
15888 pEventData: pointer to the event information structure
15889
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 @see
15891 @return Result of the function call
15892*/
15893WDI_Status
15894WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015895(
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 WDI_ControlBlockType* pWDICtx,
15897 WDI_EventInfoType* pEventData
15898)
15899{
15900 WDI_PostAssocRspParamsType wdiPostAssocParams;
15901 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15906
15907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 -------------------------------------------------------------------------*/
15910 if (( NULL == pEventData ) ||
15911 ( NULL == pEventData->pEventData))
15912 {
15913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 }
15918
15919 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15920
15921 /*-------------------------------------------------------------------------
15922 Extract response and send it to UMAC
15923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15925 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 sizeof(halPostAssocRspMsg.postAssocRspParams));
15927
15928 /*Extract the Post Assoc STA Params */
15929
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015934 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15936
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 wdiPostAssocParams.wdiStatus =
15938 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015939
15940 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15941 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015942 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15943 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 WDI_MAC_ADDR_LEN);
15945
15946 /* Extract Post Assoc BSS Params */
15947
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15949 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15950 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015951
15952 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15953 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15956 .macSTA, WDI_MAC_ADDR_LEN);
15957
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15960
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15963
15964 wdiPostAssocParams.bssParams.ucBSSIdx =
15965 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15966
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15969
15970 wpalMutexAcquire(&pWDICtx->wptMutex);
15971
15972 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015978
15979 /*-----------------------------------------------------------------------
15980 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 -----------------------------------------------------------------------*/
15983 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15986 {
15987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15988 "Association sequence for this BSS does not yet exist or "
15989 "association no longer in progress - mysterious HAL response");
15990
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15992
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 }
15996
15997 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 -----------------------------------------------------------------------*/
16000 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16001 {
16002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16003 "Post Assoc not allowed before JOIN - failing request "
16004 "strange HAL response");
16005
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16007
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
16012 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 -----------------------------------------------------------------------*/
16015 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16016 {
16017 /*Association was failed by HAL - remove session*/
16018 WDI_DeleteSession(pWDICtx, pBSSSes);
16019 }
16020 else
16021 {
16022 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016024
16025 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16034
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16037 }
16038
16039 /*Association no longer in progress */
16040 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16041
16042 /*Association no longer in progress - prepare pending assoc for processing*/
16043 WDI_DequeueAssocRequest(pWDICtx);
16044
16045 wpalMutexRelease(&pWDICtx->wptMutex);
16046
16047 /*Notify UMAC*/
16048 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16049
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016051}/*WDI_ProcessPostAssocRsp*/
16052
16053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016056
16057 @param pWDICtx: pointer to the WLAN DAL context
16058 pEventData: pointer to the event information structure
16059
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 @see
16061 @return Result of the function call
16062*/
16063WDI_Status
16064WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016065(
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 WDI_ControlBlockType* pWDICtx,
16067 WDI_EventInfoType* pEventData
16068)
16069{
16070 WDI_DelSTARspParamsType wdiDelSTARsp;
16071 WDI_DelSTARspCb wdiDelSTARspCb;
16072 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16075
16076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 -------------------------------------------------------------------------*/
16079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16080 ( NULL == pEventData->pEventData))
16081 {
16082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 }
16087
16088 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16089
16090 /*-------------------------------------------------------------------------
16091 Extract response and send it to UMAC
16092 -------------------------------------------------------------------------*/
16093 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 sizeof(halDelStaRspMsg.delStaRspParams));
16096
16097 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 wdiDelSTARsp.wdiStatus =
16099 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016100
16101 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16102
16103 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16104 if(staType == WDI_STA_ENTRY_SELF)
16105 {
16106 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16107
16108 /* At this point add the self-STA */
16109
16110 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16111 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16112 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16113
16114#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16115#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16116
16117 //all DPU indices are the same for self STA
16118 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16119 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16120 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16121 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16122 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16123 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016124
16125 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 }
16127 else
16128 {
16129 //Delete the station in the table
16130 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16131 }
16132
16133 /*Notify UMAC*/
16134 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16135
Jeff Johnsone7245742012-09-05 17:12:55 -070016136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016137}/*WDI_ProcessDelSTARsp*/
16138
16139
16140/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016142==========================================================================*/
16143
16144/**
16145 @brief Process Set BSS Key Rsp function (called when a response
16146 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016147
16148 @param pWDICtx: pointer to the WLAN DAL context
16149 pEventData: pointer to the event information structure
16150
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 @see
16152 @return Result of the function call
16153*/
16154WDI_Status
16155WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016156(
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 WDI_ControlBlockType* pWDICtx,
16158 WDI_EventInfoType* pEventData
16159)
16160{
16161 WDI_Status wdiStatus;
16162 eHalStatus halStatus;
16163 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16165
16166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 -------------------------------------------------------------------------*/
16169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16170 ( NULL == pEventData->pEventData))
16171 {
16172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 }
16177
16178 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16179
16180 /*-------------------------------------------------------------------------
16181 Extract response and send it to UMAC
16182 -------------------------------------------------------------------------*/
16183 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016185
16186 if ( eHAL_STATUS_SUCCESS != halStatus )
16187 {
16188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16189 "Set BSS Key failed with status %s (%d)",
16190 WDI_getHALStatusMsgString(halStatus),
16191 halStatus);
16192 /* send the status to UMAC, don't return from here*/
16193 }
16194
16195 /*Notify UMAC*/
16196 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16197
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016199}/*WDI_ProcessSetBssKeyRsp*/
16200
16201/**
16202 @brief Process Remove BSS Key Rsp function (called when a response
16203 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016204
16205 @param pWDICtx: pointer to the WLAN DAL context
16206 pEventData: pointer to the event information structure
16207
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 @see
16209 @return Result of the function call
16210*/
16211WDI_Status
16212WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016213(
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 WDI_ControlBlockType* pWDICtx,
16215 WDI_EventInfoType* pEventData
16216)
16217{
16218 WDI_Status wdiStatus;
16219 eHalStatus halStatus;
16220 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16222
16223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 -------------------------------------------------------------------------*/
16226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16227 ( NULL == pEventData->pEventData))
16228 {
16229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 }
16234
16235 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16236
16237 /*-------------------------------------------------------------------------
16238 Extract response and send it to UMAC
16239 -------------------------------------------------------------------------*/
16240 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016242
16243 if ( eHAL_STATUS_SUCCESS != halStatus )
16244 {
16245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16246 "Remove BSS Key failed with status %s (%d )",
16247 WDI_getHALStatusMsgString(halStatus),
16248 halStatus);
16249 /* send the status to UMAC, don't return from here*/
16250 }
16251
16252 /*Notify UMAC*/
16253 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16254
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016256}/*WDI_ProcessSetBssKeyRsp*/
16257
16258
16259/**
16260 @brief Process Set STA Key Rsp function (called when a response
16261 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016262
16263 @param pWDICtx: pointer to the WLAN DAL context
16264 pEventData: pointer to the event information structure
16265
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 @see
16267 @return Result of the function call
16268*/
16269WDI_Status
16270WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016271(
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 WDI_ControlBlockType* pWDICtx,
16273 WDI_EventInfoType* pEventData
16274)
16275{
16276 WDI_Status wdiStatus;
16277 eHalStatus halStatus;
16278 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16280
16281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 -------------------------------------------------------------------------*/
16284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16285 ( NULL == pEventData->pEventData))
16286 {
16287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292
16293 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16294
16295 /*-------------------------------------------------------------------------
16296 Extract response and send it to UMAC
16297 -------------------------------------------------------------------------*/
16298 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300
16301 if ( eHAL_STATUS_SUCCESS != halStatus )
16302 {
16303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16304 "Set STA Key failed with status %s (%d)",
16305 WDI_getHALStatusMsgString(halStatus),
16306 halStatus);
16307 /* send the status to UMAC, don't return from here*/
16308 }
16309
16310 /*Notify UMAC*/
16311 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16312
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016314}/*WDI_ProcessSetSTAKeyRsp*/
16315
16316/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016319
16320 @param pWDICtx: pointer to the WLAN DAL context
16321 pEventData: pointer to the event information structure
16322
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 @see
16324 @return Result of the function call
16325*/
16326WDI_Status
16327WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016328(
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 WDI_ControlBlockType* pWDICtx,
16330 WDI_EventInfoType* pEventData
16331)
16332{
16333 WDI_Status wdiStatus;
16334 eHalStatus halStatus;
16335 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16337
16338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 -------------------------------------------------------------------------*/
16341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16342 ( NULL == pEventData->pEventData))
16343 {
16344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 }
16349
16350 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16351
16352 /*-------------------------------------------------------------------------
16353 Extract response and send it to UMAC
16354 -------------------------------------------------------------------------*/
16355 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016356 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016357
16358 if ( eHAL_STATUS_SUCCESS != halStatus )
16359 {
16360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16361 "Remove STA Key failed with status %s (%d)",
16362 WDI_getHALStatusMsgString(halStatus),
16363 halStatus);
16364 /* send the status to UMAC, don't return from here*/
16365 }
16366
16367 /*Notify UMAC*/
16368 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16369
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371}/*WDI_ProcessRemoveStaKeyRsp*/
16372
16373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016374 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016376
16377 @param pWDICtx: pointer to the WLAN DAL context
16378 pEventData: pointer to the event information structure
16379
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 @see
16381 @return Result of the function call
16382*/
16383WDI_Status
16384WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016385(
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 WDI_ControlBlockType* pWDICtx,
16387 WDI_EventInfoType* pEventData
16388)
16389{
16390 WDI_Status wdiStatus;
16391 eHalStatus halStatus;
16392 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16394
16395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016397 -------------------------------------------------------------------------*/
16398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16399 ( NULL == pEventData->pEventData))
16400 {
16401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 }
16406
16407 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16408
16409 /*-------------------------------------------------------------------------
16410 Extract response and send it to UMAC
16411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016412 wpalMemoryCopy( &halStatus,
16413 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 sizeof(halStatus));
16415
Jeff Johnsone7245742012-09-05 17:12:55 -070016416 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016417
16418 if ( eHAL_STATUS_SUCCESS != halStatus )
16419 {
16420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16421 "Set STA Key failed with status %s (%d)",
16422 WDI_getHALStatusMsgString(halStatus),
16423 halStatus);
16424 /* send the status to UMAC, don't return from here*/
16425 }
16426
16427 /*Notify UMAC*/
16428 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16429
Jeff Johnsone7245742012-09-05 17:12:55 -070016430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016431}/*WDI_ProcessSetSTABcastKeyRsp*/
16432
16433/**
16434 @brief Process Remove STA Bcast Key Rsp function (called when a
16435 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016436
16437 @param pWDICtx: pointer to the WLAN DAL context
16438 pEventData: pointer to the event information structure
16439
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 @see
16441 @return Result of the function call
16442*/
16443WDI_Status
16444WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016445(
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 WDI_ControlBlockType* pWDICtx,
16447 WDI_EventInfoType* pEventData
16448)
16449{
16450 WDI_Status wdiStatus;
16451 eHalStatus halStatus;
16452 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16454
16455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 -------------------------------------------------------------------------*/
16458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16459 ( NULL == pEventData->pEventData))
16460 {
16461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 }
16466
16467 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16468
16469 /*-------------------------------------------------------------------------
16470 Extract response and send it to UMAC
16471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 wpalMemoryCopy( &halStatus,
16473 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 sizeof(halStatus));
16475
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016477
16478 if ( eHAL_STATUS_SUCCESS != halStatus )
16479 {
16480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16481 "Remove STA Key failed with status %s (%d)",
16482 WDI_getHALStatusMsgString(halStatus),
16483 halStatus);
16484 /* send the status to UMAC, don't return from here*/
16485 }
16486
16487 /*Notify UMAC*/
16488 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16489
Jeff Johnsone7245742012-09-05 17:12:55 -070016490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016491}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16492
16493
16494/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016495 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016496==========================================================================*/
16497
16498/**
16499 @brief Process Add TSpec Rsp function (called when a response
16500 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016501
16502 @param pWDICtx: pointer to the WLAN DAL context
16503 pEventData: pointer to the event information structure
16504
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 @see
16506 @return Result of the function call
16507*/
16508WDI_Status
16509WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016510(
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ControlBlockType* pWDICtx,
16512 WDI_EventInfoType* pEventData
16513)
16514{
16515 WDI_Status wdiStatus;
16516 eHalStatus halStatus;
16517 WDI_AddTsRspCb wdiAddTsRspCb;
16518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16519
16520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 -------------------------------------------------------------------------*/
16523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16524 ( NULL == pEventData->pEventData))
16525 {
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 }
16531
16532 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16533
16534 /*-------------------------------------------------------------------------
16535 Extract response and send it to UMAC
16536 -------------------------------------------------------------------------*/
16537 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016539
16540 /*Notify UMAC*/
16541 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16542
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016544}/*WDI_ProcessAddTSpecRsp*/
16545
16546
16547/**
16548 @brief Process Del TSpec Rsp function (called when a response
16549 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016550
16551 @param pWDICtx: pointer to the WLAN DAL context
16552 pEventData: pointer to the event information structure
16553
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 @see
16555 @return Result of the function call
16556*/
16557WDI_Status
16558WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016559(
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 WDI_ControlBlockType* pWDICtx,
16561 WDI_EventInfoType* pEventData
16562)
16563{
16564 WDI_Status wdiStatus;
16565 eHalStatus halStatus;
16566 WDI_DelTsRspCb wdiDelTsRspCb;
16567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16568
16569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 -------------------------------------------------------------------------*/
16572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16573 ( NULL == pEventData->pEventData))
16574 {
16575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 }
16580
16581 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16582
16583 /*-------------------------------------------------------------------------
16584 Extract response and send it to UMAC
16585 -------------------------------------------------------------------------*/
16586 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016588
16589 /*Notify UMAC*/
16590 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16591
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016593}/*WDI_ProcessDelTSpecRsp*/
16594
16595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016598
16599 @param pWDICtx: pointer to the WLAN DAL context
16600 pEventData: pointer to the event information structure
16601
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 @see
16603 @return Result of the function call
16604*/
16605WDI_Status
16606WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016607(
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 WDI_ControlBlockType* pWDICtx,
16609 WDI_EventInfoType* pEventData
16610)
16611{
16612 WDI_Status wdiStatus;
16613 eHalStatus halStatus;
16614 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16616
16617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 -------------------------------------------------------------------------*/
16620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16621 ( NULL == pEventData->pEventData))
16622 {
16623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 }
16628
16629 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16630
16631 /*-------------------------------------------------------------------------
16632 Extract response and send it to UMAC
16633 -------------------------------------------------------------------------*/
16634 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016635 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016636
16637 /*Notify UMAC*/
16638 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16639
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016641}/*WDI_ProcessUpdateEDCAParamsRsp*/
16642
16643
16644/**
16645 @brief Process Add BA Rsp function (called when a response
16646 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016647
16648 @param pWDICtx: pointer to the WLAN DAL context
16649 pEventData: pointer to the event information structure
16650
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 @see
16652 @return Result of the function call
16653*/
16654WDI_Status
16655WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016656(
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 WDI_ControlBlockType* pWDICtx,
16658 WDI_EventInfoType* pEventData
16659)
16660{
16661 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16662
16663 tAddBASessionRspParams halBASessionRsp;
16664 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16665
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16668
16669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 -------------------------------------------------------------------------*/
16672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16673 ( NULL == pEventData->pEventData))
16674 {
16675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 }
16680
16681 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16682
16683 /*-------------------------------------------------------------------------
16684 Extract response and send it to UMAC
16685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 wpalMemoryCopy( &halBASessionRsp,
16687 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 sizeof(halBASessionRsp));
16689
16690 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16691
Jeff Johnson43971f52012-07-17 12:26:56 -070016692 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 {
16694 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16695 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16696 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16697 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16698 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16699 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16700 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16701 }
16702
16703 /*Notify UMAC*/
16704 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16705
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016707}/*WDI_ProcessAddSessionBARsp*/
16708
16709
16710/**
16711 @brief Process Del BA Rsp function (called when a response
16712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016713
16714 @param pWDICtx: pointer to the WLAN DAL context
16715 pEventData: pointer to the event information structure
16716
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 @see
16718 @return Result of the function call
16719*/
16720WDI_Status
16721WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016722(
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 WDI_ControlBlockType* pWDICtx,
16724 WDI_EventInfoType* pEventData
16725)
16726{
16727 WDI_Status wdiStatus;
16728 eHalStatus halStatus;
16729 WDI_DelBARspCb wdiDelBARspCb;
16730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16731
16732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 -------------------------------------------------------------------------*/
16735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16736 ( NULL == pEventData->pEventData))
16737 {
16738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 }
16743
16744 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16745
16746 /*-------------------------------------------------------------------------
16747 Extract response and send it to UMAC
16748 -------------------------------------------------------------------------*/
16749 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016750 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016751
16752 if ( eHAL_STATUS_SUCCESS == halStatus )
16753 {
16754 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16755 }
16756
16757 /*Notify UMAC*/
16758 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16759
Jeff Johnsone7245742012-09-05 17:12:55 -070016760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016761}/*WDI_ProcessDelBARsp*/
16762
16763#ifdef FEATURE_WLAN_CCX
16764/**
16765 @brief Process TSM Stats Rsp function (called when a response
16766 is being received over the bus from HAL)
16767
16768 @param pWDICtx: pointer to the WLAN DAL context
16769 pEventData: pointer to the event information structure
16770
16771 @see
16772 @return Result of the function call
16773*/
16774WDI_Status
16775WDI_ProcessTsmStatsRsp
16776(
16777 WDI_ControlBlockType* pWDICtx,
16778 WDI_EventInfoType* pEventData
16779)
16780{
16781 WDI_TsmRspCb wdiTsmStatsRspCb;
16782 tTsmStatsRspMsg halTsmStatsRspMsg;
16783 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16785
16786 /*-------------------------------------------------------------------------
16787 Sanity check
16788 -------------------------------------------------------------------------*/
16789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16790 ( NULL == pEventData->pEventData))
16791 {
16792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 WDI_ASSERT(0);
16795 return WDI_STATUS_E_FAILURE;
16796 }
16797
16798 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16799
16800 /*-------------------------------------------------------------------------
16801 Unpack HAL Response Message - the header was already extracted by the
16802 main Response Handling procedure
16803 -------------------------------------------------------------------------*/
16804 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16805 pEventData->pEventData,
16806 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16807
16808 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16809 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16810 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16811 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16812 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16813 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16814 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16815 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16816 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16817 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16818 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16819 halTsmStatsRspMsg.tsmStatsRspParams.status);
16820
16821 /*Notify UMAC*/
16822 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16823
16824 return WDI_STATUS_SUCCESS;
16825}/*WDI_ProcessTsmStatsRsp*/
16826
16827#endif
16828
16829
16830
16831/**
16832 @brief Process Flush AC Rsp function (called when a response
16833 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016834
16835 @param pWDICtx: pointer to the WLAN DAL context
16836 pEventData: pointer to the event information structure
16837
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 @see
16839 @return Result of the function call
16840*/
16841WDI_Status
16842WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016843(
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 WDI_ControlBlockType* pWDICtx,
16845 WDI_EventInfoType* pEventData
16846)
16847{
16848 WDI_Status wdiStatus;
16849 eHalStatus halStatus;
16850 WDI_FlushAcRspCb wdiFlushAcRspCb;
16851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16852
16853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 -------------------------------------------------------------------------*/
16856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16857 ( NULL == pEventData->pEventData))
16858 {
16859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 }
16864
16865 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16866
16867 /*-------------------------------------------------------------------------
16868 Extract response and send it to UMAC
16869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 wpalMemoryCopy( &halStatus,
16871 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 sizeof(halStatus));
16873
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016875
16876 /*Notify UMAC*/
16877 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16878
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016880}/*WDI_ProcessFlushAcRsp*/
16881
16882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016885
16886 @param pWDICtx: pointer to the WLAN DAL context
16887 pEventData: pointer to the event information structure
16888
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 @see
16890 @return Result of the function call
16891*/
16892WDI_Status
16893WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016894(
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 WDI_ControlBlockType* pWDICtx,
16896 WDI_EventInfoType* pEventData
16897)
16898{
16899 WDI_Status wdiStatus;
16900 eHalStatus halStatus;
16901 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16903
16904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 -------------------------------------------------------------------------*/
16907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16908 ( NULL == pEventData->pEventData))
16909 {
16910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016914 }
16915
16916 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16917
16918 /*-------------------------------------------------------------------------
16919 Extract response and send it to UMAC
16920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 wpalMemoryCopy( &halStatus,
16922 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 sizeof(halStatus));
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016926
16927 /*Notify UMAC*/
16928 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16929
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016931}/*WDI_ProcessBtAmpEventRsp*/
16932
16933
16934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016935 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016937
16938 @param pWDICtx: pointer to the WLAN DAL context
16939 pEventData: pointer to the event information structure
16940
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 @see
16942 @return Result of the function call
16943*/
16944WDI_Status
16945WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016946(
Jeff Johnson295189b2012-06-20 16:38:30 -070016947 WDI_ControlBlockType* pWDICtx,
16948 WDI_EventInfoType* pEventData
16949)
16950{
16951 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16952 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16953 tAddStaSelfRspMsg halAddStaSelfRsp;
16954 WDI_AddStaParams wdiAddSTAParam = {0};
16955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16956
16957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 -------------------------------------------------------------------------*/
16960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16961 ( NULL == pEventData->pEventData))
16962 {
16963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 }
16968
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16971
16972 /*-------------------------------------------------------------------------
16973 Extract response and send it to UMAC
16974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16976 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16978
16979
Jeff Johnsone7245742012-09-05 17:12:55 -070016980 wdiAddSTASelfParams.wdiStatus =
16981 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016982
Jeff Johnsone7245742012-09-05 17:12:55 -070016983 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016984 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16989
16990 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16991 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16992 WDI_MAC_ADDR_LEN);
16993
16994
16995#ifdef HAL_SELF_STA_PER_BSS
16996
16997 /* At this point add the self-STA */
16998
16999 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17000 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17001 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17002
17003 //all DPU indices are the same for self STA
17004
17005 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17008 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17009 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17010 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17011 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17012
17013 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17014 WDI_MAC_ADDR_LEN);
17015
17016 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17017 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17021 {
17022 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17023 }
17024#endif
17025
17026 /*Notify UMAC*/
17027 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17028
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017030}/*WDI_ProcessAddSTASelfRsp*/
17031
17032
17033
17034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017037
17038 @param pWDICtx: pointer to the WLAN DAL context
17039 pEventData: pointer to the event information structure
17040
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 @see
17042 @return Result of the function call
17043*/
17044WDI_Status
17045WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017046(
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 WDI_ControlBlockType* pWDICtx,
17048 WDI_EventInfoType* pEventData
17049)
17050{
17051 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17052 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17053 tDelStaSelfRspParams delStaSelfRspParams;
17054 wpt_uint8 ucStaIdx;
17055
17056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17057
17058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 -------------------------------------------------------------------------*/
17061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17062 ( NULL == pEventData->pEventData))
17063 {
17064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 }
17069
17070 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17071
17072 /*-------------------------------------------------------------------------
17073 Extract response and send it to UMAC
17074 -------------------------------------------------------------------------*/
17075
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 (wpt_uint8*)pEventData->pEventData,
17078 sizeof(tDelStaSelfRspParams));
17079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 wdiDelStaSelfRspParams.wdiStatus =
17081 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017082
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17085 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17086 {
17087 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 delStaSelfRspParams.selfMacAddr,
17090 &ucStaIdx);
17091 if(WDI_STATUS_E_FAILURE == wdiStatus)
17092 {
17093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017094 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 }
17098 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17099 }
17100
17101 /*Notify UMAC*/
17102 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17103
17104 return WDI_STATUS_SUCCESS;
17105}
17106
Jeff Johnsone7245742012-09-05 17:12:55 -070017107#ifdef FEATURE_OEM_DATA_SUPPORT
17108/**
17109 @brief Start Oem Data Rsp function (called when a
17110 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017111
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 @param pWDICtx: pointer to the WLAN DAL context
17113 pEventData: pointer to the event information structure
17114
17115 @see
17116 @return Result of the function call
17117*/
17118#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17119
17120WDI_Status
17121WDI_ProcessStartOemDataRsp
17122(
17123 WDI_ControlBlockType* pWDICtx,
17124 WDI_EventInfoType* pEventData
17125)
17126{
17127 WDI_oemDataRspCb wdiOemDataRspCb;
17128 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17129 tStartOemDataRspParams* halStartOemDataRspParams;
17130
17131 /*-------------------------------------------------------------------------
17132 Sanity check
17133 -------------------------------------------------------------------------*/
17134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17135 ( NULL == pEventData->pEventData))
17136 {
17137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017138 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 WDI_ASSERT(0);
17140 return WDI_STATUS_E_FAILURE;
17141 }
17142
17143 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17144
17145 /*-------------------------------------------------------------------------
17146 Extract response and send it to UMAC
17147 -------------------------------------------------------------------------*/
17148 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17149
17150
17151 //It is the responsibility of the application code to check for failure
17152 //conditions!
17153
17154 //Allocate memory for WDI OEM DATA RSP structure
17155 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17156
17157 if(NULL == wdiOemDataRspParams)
17158 {
17159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17160 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17161 pWDICtx, pEventData, pEventData->pEventData);
17162 WDI_ASSERT(0);
17163 return WDI_STATUS_E_FAILURE;
17164 }
17165
17166 /* Populate WDI structure members */
17167 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17168
17169 /*Notify UMAC*/
17170 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17171
17172 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17173 wpalMemoryFree(wdiOemDataRspParams);
17174
17175 return WDI_STATUS_SUCCESS;
17176}/*WDI_PrcoessStartOemDataRsp*/
17177#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017178
17179/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017181===========================================================================*/
17182
17183/**
17184 @brief Process Channel Switch Rsp function (called when a response
17185 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017186
17187 @param pWDICtx: pointer to the WLAN DAL context
17188 pEventData: pointer to the event information structure
17189
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 @see
17191 @return Result of the function call
17192*/
17193WDI_Status
17194WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017195(
Jeff Johnson295189b2012-06-20 16:38:30 -070017196 WDI_ControlBlockType* pWDICtx,
17197 WDI_EventInfoType* pEventData
17198)
17199{
17200 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17201 WDI_SwitchChRspCb wdiChSwitchRspCb;
17202 tSwitchChannelRspParams halSwitchChannelRsp;
17203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17204
17205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 -------------------------------------------------------------------------*/
17208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17209 ( NULL == pEventData->pEventData))
17210 {
17211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216
17217 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17218
17219 /*-------------------------------------------------------------------------
17220 Extract response and send it to UMAC
17221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017223 (wpt_uint8*)pEventData->pEventData,
17224 sizeof(halSwitchChannelRsp));
17225
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 wdiSwitchChRsp.wdiStatus =
17227 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17229
17230#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017232#endif
17233
17234 /*Notify UMAC*/
17235 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17236
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017238}/*WDI_ProcessChannelSwitchRsp*/
17239
17240
17241/**
17242 @brief Process Config STA Rsp function (called when a response
17243 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017244
17245 @param pWDICtx: pointer to the WLAN DAL context
17246 pEventData: pointer to the event information structure
17247
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 @see
17249 @return Result of the function call
17250*/
17251WDI_Status
17252WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017253(
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 WDI_ControlBlockType* pWDICtx,
17255 WDI_EventInfoType* pEventData
17256)
17257{
17258 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17259 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17260 WDI_AddStaParams wdiAddSTAParam;
17261
17262 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017264
Jeff Johnsone7245742012-09-05 17:12:55 -070017265 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17267
17268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 -------------------------------------------------------------------------*/
17271 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17272 ( NULL == pEventData->pEventData))
17273 {
17274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 }
17279
17280 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17281
17282 /*-------------------------------------------------------------------------
17283 Extract response and send it to UMAC
17284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17286 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 sizeof(halConfigStaRsp.configStaRspParams));
17288
17289
17290 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17291 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17292 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17293 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17294 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17295
17296 /* MAC Address of STA - take from cache as it does not come back in the
17297 response*/
17298 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017299 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017300 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017301
17302 wdiCfgSTAParams.wdiStatus =
17303 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017304
17305 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17306 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17307 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17308
17309 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17310 {
17311 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17312 {
17313 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17316 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017317
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 wdiAddSTAParam.ucHTCapable =
17322 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17323 wdiAddSTAParam.ucStaType =
17324 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017325 wdiAddSTAParam.ucRmfEnabled =
17326 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017327
Jeff Johnson295189b2012-06-20 16:38:30 -070017328 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17330 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017332
17333 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17334 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17335 WDI_MAC_ADDR_LEN);
17336
17337 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17338 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17339 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017340
17341 if ( NULL == pBSSSes )
17342 {
17343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17344 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017345
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 }
17349
17350 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017357 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017358 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017360
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17362 }
17363 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17364 {
17365 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17366
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017368 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 halConfigStaRsp.configStaRspParams.ucUcastSig;
17381 }
17382 }
17383
17384 /*Notify UMAC*/
17385 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17386
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017388}/*WDI_ProcessConfigStaRsp*/
17389
17390
17391/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017392 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017394
17395 @param pWDICtx: pointer to the WLAN DAL context
17396 pEventData: pointer to the event information structure
17397
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 @see
17399 @return Result of the function call
17400*/
17401WDI_Status
17402WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017403(
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 WDI_ControlBlockType* pWDICtx,
17405 WDI_EventInfoType* pEventData
17406)
17407{
17408 WDI_Status wdiStatus;
17409 eHalStatus halStatus;
17410 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17411
17412 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17415
17416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 -------------------------------------------------------------------------*/
17419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17420 ( NULL == pEventData->pEventData))
17421 {
17422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017426 }
17427
17428 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17429
17430 wpalMutexAcquire(&pWDICtx->wptMutex);
17431
17432 /*If the link is being transitioned to idle - the BSS is to be deleted
17433 - this type of ending a session is possible when UMAC has failed an
17434 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017435 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17437 {
17438 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017441 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17442 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17443 &pBSSSes);
17444
Jeff Johnson295189b2012-06-20 16:38:30 -070017445 /*-----------------------------------------------------------------------
17446 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 -----------------------------------------------------------------------*/
17449 if ( NULL == pBSSSes )
17450 {
17451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17452 "Set link response received outside association session");
17453 }
17454 else
17455 {
17456 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17457 will be del BSS coming after this to stop the beaconing & cleaning up the
17458 sessions*/
17459 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17460 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17461 {
17462 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 -----------------------------------------------------------------------*/
17465 WDI_DeleteSession(pWDICtx, pBSSSes);
17466
17467 /*-----------------------------------------------------------------------
17468 Check to see if this association is in progress - if so disable the
17469 flag as this has ended
17470 -----------------------------------------------------------------------*/
17471 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017472 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 /*Association no longer in progress */
17474 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17475 /*Association no longer in progress - prepare pending assoc for processing*/
17476 WDI_DequeueAssocRequest(pWDICtx);
17477 }
17478 }
17479 }
17480 }
17481 /* If the link state has been set to POST ASSOC, reset the "association in
17482 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017483 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17485 {
17486 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17487 WDI_DequeueAssocRequest(pWDICtx);
17488 }
17489
17490 wpalMutexRelease(&pWDICtx->wptMutex);
17491
17492 /*-------------------------------------------------------------------------
17493 Extract response and send it to UMAC
17494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 wpalMemoryCopy( &halStatus,
17496 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 sizeof(halStatus));
17498
Jeff Johnsone7245742012-09-05 17:12:55 -070017499 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017500
17501 /*Notify UMAC*/
17502 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17503
Jeff Johnsone7245742012-09-05 17:12:55 -070017504 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017505}/*WDI_ProcessSetLinkStateRsp*/
17506
17507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017510
17511 @param pWDICtx: pointer to the WLAN DAL context
17512 pEventData: pointer to the event information structure
17513
Jeff Johnson295189b2012-06-20 16:38:30 -070017514 @see
17515 @return Result of the function call
17516*/
17517WDI_Status
17518WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017519(
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 WDI_ControlBlockType* pWDICtx,
17521 WDI_EventInfoType* pEventData
17522)
17523{
17524 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17525 WDI_GetStatsRspCb wdiGetStatsRspCb;
17526 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017527
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17529
17530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 -------------------------------------------------------------------------*/
17533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17534 ( NULL == pEventData->pEventData))
17535 {
17536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 }
17541
17542 /*-------------------------------------------------------------------------
17543 Extract response and send it to UMAC
17544 -------------------------------------------------------------------------*/
17545 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17546
17547 /*allocate the stats response buffer */
17548 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17549 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17550 + sizeof(WDI_GetStatsRspParamsType));
17551
17552 if(NULL == wdiGetStatsRsp)
17553 {
17554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17555 "Failed to allocate memory in Get Stats Response %x %x %x ",
17556 pWDICtx, pEventData, pEventData->pEventData);
17557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017559 }
17560
17561 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17562
17563 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17564 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17565 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17566 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17567 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17568 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17569
17570 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17571 wpalMemoryCopy(wdiGetStatsRsp + 1,
17572 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17573 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17574
17575 /*Notify UMAC*/
17576 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17577
17578 wpalMemoryFree(wdiGetStatsRsp);
17579
Jeff Johnsone7245742012-09-05 17:12:55 -070017580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017581}/*WDI_ProcessGetStatsRsp*/
17582
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017583#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17584/**
17585 @brief Process Get Roam Rssi Rsp function (called when a response is
17586 being received over the bus from HAL)
17587
17588 @param pWDICtx: pointer to the WLAN DAL context
17589 pEventData: pointer to the event information structure
17590
17591 @see
17592 @return Result of the function call
17593*/
17594WDI_Status
17595WDI_ProcessGetRoamRssiRsp
17596(
17597 WDI_ControlBlockType* pWDICtx,
17598 WDI_EventInfoType* pEventData
17599)
17600{
17601 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17602 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17603 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17605
17606 /*-------------------------------------------------------------------------
17607 Sanity check
17608 -------------------------------------------------------------------------*/
17609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17610 ( NULL == pEventData->pEventData))
17611 {
17612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17613 "%s: Invalid parameters", __func__);
17614 WDI_ASSERT(0);
17615 return WDI_STATUS_E_FAILURE;
17616 }
17617
17618 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17619 if(NULL == wdiGetRoamRssiRspCb)
17620 {
17621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17622 "%s: call back function is NULL", __func__);
17623 WDI_ASSERT(0);
17624 return WDI_STATUS_E_FAILURE;
17625 }
17626
17627 /*-------------------------------------------------------------------------
17628 Extract response and send it to UMAC
17629 -------------------------------------------------------------------------*/
17630 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17631 pEventData->pEventData,
17632 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17633
17634 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17635 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17636 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17637
17638 /*Notify UMAC*/
17639 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17640
17641 return WDI_STATUS_SUCCESS;
17642}/*WDI_ProcessGetRoamRssiRsp*/
17643#endif
17644
Jeff Johnson295189b2012-06-20 16:38:30 -070017645
17646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017649
17650 @param pWDICtx: pointer to the WLAN DAL context
17651 pEventData: pointer to the event information structure
17652
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 @see
17654 @return Result of the function call
17655*/
17656WDI_Status
17657WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017658(
Jeff Johnson295189b2012-06-20 16:38:30 -070017659 WDI_ControlBlockType* pWDICtx,
17660 WDI_EventInfoType* pEventData
17661)
17662{
17663 WDI_Status wdiStatus;
17664 eHalStatus halStatus;
17665 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17667
17668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 -------------------------------------------------------------------------*/
17671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17672 ( NULL == pEventData->pEventData))
17673 {
17674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 }
17679
17680 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17681
17682 /*-------------------------------------------------------------------------
17683 Extract response and send it to UMAC
17684 -------------------------------------------------------------------------*/
17685 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017686 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017687
17688 /*Notify UMAC*/
17689 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17690
Jeff Johnsone7245742012-09-05 17:12:55 -070017691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017692}/*WDI_ProcessUpdateCfgRsp*/
17693
17694
17695
17696/**
17697 @brief Process Add BA Rsp function (called when a response
17698 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017699
17700 @param pWDICtx: pointer to the WLAN DAL context
17701 pEventData: pointer to the event information structure
17702
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 @see
17704 @return Result of the function call
17705*/
17706WDI_Status
17707WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017708(
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 WDI_ControlBlockType* pWDICtx,
17710 WDI_EventInfoType* pEventData
17711)
17712{
17713 WDI_AddBARspCb wdiAddBARspCb;
17714
17715 tAddBARspParams halAddBARsp;
17716 WDI_AddBARspinfoType wdiAddBARsp;
17717
17718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17719
17720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 -------------------------------------------------------------------------*/
17723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17724 ( NULL == pEventData->pEventData))
17725 {
17726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 }
17731
17732 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17733
17734 /*-------------------------------------------------------------------------
17735 Extract response and send it to UMAC
17736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017737 wpalMemoryCopy( &halAddBARsp,
17738 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 sizeof(halAddBARsp));
17740
17741 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17742
Jeff Johnson43971f52012-07-17 12:26:56 -070017743 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017744 {
17745 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17746 }
17747
17748 /*Notify UMAC*/
17749 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17750
Jeff Johnsone7245742012-09-05 17:12:55 -070017751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017752}/*WDI_ProcessAddSessionBARsp*/
17753
17754/**
17755 @brief Process Add BA Rsp function (called when a response
17756 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017757
17758 @param pWDICtx: pointer to the WLAN DAL context
17759 pEventData: pointer to the event information structure
17760
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 @see
17762 @return Result of the function call
17763*/
17764WDI_Status
17765WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017766(
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 WDI_ControlBlockType* pWDICtx,
17768 WDI_EventInfoType* pEventData
17769)
17770{
17771 WDI_TriggerBARspCb wdiTriggerBARspCb;
17772
17773 tTriggerBARspParams* halTriggerBARsp;
17774 tTriggerBaRspCandidate* halBaCandidate;
17775 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17776 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17777 wpt_uint16 index;
17778 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017779 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17781
17782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 -------------------------------------------------------------------------*/
17785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17786 ( NULL == pEventData->pEventData))
17787 {
17788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 }
17793
17794 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17795
17796 /*-------------------------------------------------------------------------
17797 Extract response and send it to UMAC
17798 -------------------------------------------------------------------------*/
17799 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17800
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017801 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17802
17803 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17804 {
17805 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017808
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017809 if(NULL == wdiTriggerBARsp)
17810 {
17811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17812 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17813 pWDICtx, pEventData, pEventData->pEventData);
17814 WDI_ASSERT(0);
17815 return WDI_STATUS_E_FAILURE;
17816 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017817
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017818 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17819
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017821 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17823
17824 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17825 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17826
17827 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17828 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017829 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17831 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17832 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017833 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017835 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017836 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17837 }
17838 wdiTriggerBARspCandidate++;
17839 halBaCandidate++;
17840 }
17841 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017842 else
17843 {
17844 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17845
17846 if(NULL == wdiTriggerBARsp)
17847 {
17848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17849 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17850 pWDICtx, pEventData, pEventData->pEventData);
17851 WDI_ASSERT(0);
17852 return WDI_STATUS_E_FAILURE;
17853 }
17854
17855 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17856
17857 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017858
17859 /*Notify UMAC*/
17860 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17861
17862 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017864}/*WDI_ProcessAddSessionBARsp*/
17865
17866/**
17867 @brief Process Update Beacon Params Rsp function (called when a response
17868 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017869
17870 @param pWDICtx: pointer to the WLAN DAL context
17871 pEventData: pointer to the event information structure
17872
Jeff Johnson295189b2012-06-20 16:38:30 -070017873 @see
17874 @return Result of the function call
17875*/
17876WDI_Status
17877WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017878(
Jeff Johnson295189b2012-06-20 16:38:30 -070017879 WDI_ControlBlockType* pWDICtx,
17880 WDI_EventInfoType* pEventData
17881)
17882{
17883 WDI_Status wdiStatus;
17884 eHalStatus halStatus;
17885 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17887
17888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 -------------------------------------------------------------------------*/
17891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17892 ( NULL == pEventData->pEventData))
17893 {
17894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017898 }
17899
17900 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17901
17902 /*-------------------------------------------------------------------------
17903 Extract response and send it to UMAC
17904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 wpalMemoryCopy( &halStatus,
17906 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 sizeof(halStatus));
17908
Jeff Johnsone7245742012-09-05 17:12:55 -070017909 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017910
17911 /*Notify UMAC*/
17912 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17913
Jeff Johnsone7245742012-09-05 17:12:55 -070017914 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017915}/*WDI_ProcessUpdateBeaconParamsRsp*/
17916
17917/**
17918 @brief Process Send Beacon template Rsp function (called when a response
17919 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017920
17921 @param pWDICtx: pointer to the WLAN DAL context
17922 pEventData: pointer to the event information structure
17923
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 @see
17925 @return Result of the function call
17926*/
17927WDI_Status
17928WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017929(
Jeff Johnson295189b2012-06-20 16:38:30 -070017930 WDI_ControlBlockType* pWDICtx,
17931 WDI_EventInfoType* pEventData
17932)
17933{
17934 WDI_Status wdiStatus;
17935 eHalStatus halStatus;
17936 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17938
17939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017941 -------------------------------------------------------------------------*/
17942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17943 ( NULL == pEventData->pEventData))
17944 {
17945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 }
17950
17951 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17952
17953 /*-------------------------------------------------------------------------
17954 Extract response and send it to UMAC
17955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 wpalMemoryCopy( &halStatus,
17957 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 sizeof(halStatus));
17959
Jeff Johnsone7245742012-09-05 17:12:55 -070017960 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017961
17962 /*Notify UMAC*/
17963 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17964
Jeff Johnsone7245742012-09-05 17:12:55 -070017965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017966}/*WDI_ProcessSendBeaconParamsRsp*/
17967
Jeff Johnsone7245742012-09-05 17:12:55 -070017968
Jeff Johnson295189b2012-06-20 16:38:30 -070017969/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017970 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017972
17973 @param pWDICtx: pointer to the WLAN DAL context
17974 pEventData: pointer to the event information structure
17975
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 @see
17977 @return Result of the function call
17978*/
17979WDI_Status
17980WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017981(
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 WDI_ControlBlockType* pWDICtx,
17983 WDI_EventInfoType* pEventData
17984)
17985{
17986 WDI_Status wdiStatus;
17987 eHalStatus halStatus;
17988 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17990
17991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017993 -------------------------------------------------------------------------*/
17994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17995 ( NULL == pEventData->pEventData))
17996 {
17997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 }
18002
18003 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18004
18005 /*-------------------------------------------------------------------------
18006 Extract response and send it to UMAC
18007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018008 wpalMemoryCopy( &halStatus,
18009 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 sizeof(halStatus));
18011
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018013
18014 /*Notify UMAC*/
18015 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18016
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018018}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18019
18020 /**
18021 @brief Process Set Max Tx Power Rsp function (called when a response
18022 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018023
18024 @param pWDICtx: pointer to the WLAN DAL context
18025 pEventData: pointer to the event information structure
18026
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 @see
18028 @return Result of the function call
18029*/
18030WDI_Status
18031WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018032(
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 WDI_ControlBlockType* pWDICtx,
18034 WDI_EventInfoType* pEventData
18035)
18036{
18037 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018038
Jeff Johnson295189b2012-06-20 16:38:30 -070018039 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018040
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18043
18044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 -------------------------------------------------------------------------*/
18047 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18048 ( NULL == pEventData->pEventData))
18049 {
18050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 }
18055
18056 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18057
18058 /*-------------------------------------------------------------------------
18059 Extract response and send it to UMAC
18060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018061 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18062 pEventData->pEventData,
18063 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018064
18065 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18066 {
18067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18068 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018069 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 }
18072
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018076
18077 /*Notify UMAC*/
18078 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18079
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018081}
18082
schangd82195a2013-03-13 18:41:24 -070018083 /**
18084 @brief Process Set Tx Power Rsp function (called when a response
18085 is being received over the bus from HAL)
18086
18087 @param pWDICtx: pointer to the WLAN DAL context
18088 pEventData: pointer to the event information structure
18089
18090 @see
18091 @return Result of the function call
18092*/
18093WDI_Status
18094WDI_ProcessSetTxPowerRsp
18095(
18096 WDI_ControlBlockType* pWDICtx,
18097 WDI_EventInfoType* pEventData
18098)
18099{
18100 tSetTxPwrRspMsg halTxpowerrsp;
18101 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18102 WDA_SetTxPowerRspCb wdiReqStatusCb;
18103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18104
18105 /*-------------------------------------------------------------------------
18106 Sanity check
18107 -------------------------------------------------------------------------*/
18108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18109 ( NULL == pEventData->pEventData))
18110 {
18111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18112 "%s: Invalid parameters", __func__);
18113 WDI_ASSERT(0);
18114 return WDI_STATUS_E_FAILURE;
18115 }
18116
18117 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18118
18119 /*-------------------------------------------------------------------------
18120 Extract response and send it to UMAC
18121 -------------------------------------------------------------------------*/
18122 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18123 pEventData->pEventData,
18124 sizeof(halTxpowerrsp.setTxPwrRspParams));
18125
18126 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18127 {
18128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18129 "Error status returned in Set Tx Power Response ");
18130 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18131 return WDI_STATUS_E_FAILURE;
18132 }
18133
18134 wdiSetTxPowerRspMsg.wdiStatus =
18135 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18136
18137 /*Notify UMAC*/
18138 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18139
18140 return WDI_STATUS_SUCCESS;
18141}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018142#ifdef FEATURE_WLAN_TDLS
18143/**
18144 @brief Process TDLS Link Establish Rsp function (called
18145 when a response is being received over the bus from HAL)
18146
18147 @param pWDICtx: pointer to the WLAN DAL context
18148 pEventData: pointer to the event information structure
18149
18150 @see
18151 @return Result of the function call
18152*/
18153WDI_Status
18154WDI_ProcessLinkEstablishReqRsp
18155(
18156 WDI_ControlBlockType* pWDICtx,
18157 WDI_EventInfoType* pEventData
18158)
18159{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018160 eHalStatus halStatus;
18161 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018162 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18163 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18164
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18166
18167 /*-------------------------------------------------------------------------
18168 Sanity check
18169 -------------------------------------------------------------------------*/
18170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18171 ( NULL == pEventData->pEventData))
18172 {
18173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18174 "%s: Invalid parameters", __func__);
18175 WDI_ASSERT(0);
18176 return WDI_STATUS_E_FAILURE;
18177 }
18178
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018179 /*-------------------------------------------------------------------------
18180 Extract indication and send it to UMAC
18181 -------------------------------------------------------------------------*/
18182 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18183 pEventData->pEventData,
18184 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18185
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018186 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18187
18188 /*-------------------------------------------------------------------------
18189 Extract response and send it to UMAC
18190 -------------------------------------------------------------------------*/
18191 wpalMemoryCopy( &halStatus,
18192 pEventData->pEventData,
18193 sizeof(halStatus));
18194
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018195 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18196 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018197
18198 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018199 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018200
18201 return WDI_STATUS_SUCCESS;
18202}/*WDI_ProcessLinkEstablishReqRsp*/
18203#endif
schangd82195a2013-03-13 18:41:24 -070018204
Jeff Johnson295189b2012-06-20 16:38:30 -070018205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018208
18209 @param pWDICtx: pointer to the WLAN DAL context
18210 pEventData: pointer to the event information structure
18211
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 @see
18213 @return Result of the function call
18214*/
18215WDI_Status
18216WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018217(
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 WDI_ControlBlockType* pWDICtx,
18219 WDI_EventInfoType* pEventData
18220)
18221{
18222 WDI_Status wdiStatus;
18223 eHalStatus halStatus;
18224 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18226
18227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 -------------------------------------------------------------------------*/
18230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18231 ( NULL == pEventData->pEventData))
18232 {
18233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 }
18238
18239 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18240
18241 /*-------------------------------------------------------------------------
18242 Extract response and send it to UMAC
18243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 wpalMemoryCopy( &halStatus,
18245 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018246 sizeof(halStatus));
18247
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249
18250 /*Notify UMAC*/
18251 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18252
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018254}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018258
18259 @param pWDICtx: pointer to the WLAN DAL context
18260 pEventData: pointer to the event information structure
18261
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 @see
18263 @return Result of the function call
18264*/
18265WDI_Status
18266WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018267(
Jeff Johnson295189b2012-06-20 16:38:30 -070018268 WDI_ControlBlockType* pWDICtx,
18269 WDI_EventInfoType* pEventData
18270)
18271{
18272 WDI_Status wdiStatus;
18273 eHalStatus halStatus;
18274 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018275 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18277
18278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 -------------------------------------------------------------------------*/
18281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18282 ( NULL == pEventData->pEventData))
18283 {
18284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 }
18289
18290 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18291
18292 /*-------------------------------------------------------------------------
18293 Extract response and send it to UMAC
18294 -------------------------------------------------------------------------*/
18295 halStatus = *((eHalStatus*)pEventData->pEventData);
18296
Jeff Johnsone7245742012-09-05 17:12:55 -070018297 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018298
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018299 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18300 * Other module states are taken care by PMC.
18301 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18302 */
18303 if (wdiStatus != WDI_STATUS_SUCCESS) {
18304
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18306 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18307 halStatus);
18308 /* Call Back is not required as we are putting the DXE in FULL
18309 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018310 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18311
18312 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18314 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18315 WDI_ASSERT(0);
18316 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018317 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 /*Notify UMAC*/
18319 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18320
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018322}/*WDI_ProcessEnterImpsRsp*/
18323
18324/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018327
18328 @param pWDICtx: pointer to the WLAN DAL context
18329 pEventData: pointer to the event information structure
18330
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 @see
18332 @return Result of the function call
18333*/
18334WDI_Status
18335WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018336(
Jeff Johnson295189b2012-06-20 16:38:30 -070018337 WDI_ControlBlockType* pWDICtx,
18338 WDI_EventInfoType* pEventData
18339)
18340{
18341 WDI_Status wdiStatus;
18342 eHalStatus halStatus;
18343 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018344 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18346
18347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 -------------------------------------------------------------------------*/
18350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18351 ( NULL == pEventData->pEventData))
18352 {
18353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 }
18358
18359 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18360
18361 /*-------------------------------------------------------------------------
18362 Extract response and send it to UMAC
18363 -------------------------------------------------------------------------*/
18364 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018365 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018366
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018367 if (halStatus != eHAL_STATUS_SUCCESS)
18368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18369 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18370
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018372 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18373 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18374 {
18375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18376 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18377 WDI_ASSERT(0);
18378 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 /*Notify UMAC*/
18380 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18381
Jeff Johnsone7245742012-09-05 17:12:55 -070018382 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018383}/*WDI_ProcessExitImpsRsp*/
18384
18385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018388
18389 @param pWDICtx: pointer to the WLAN DAL context
18390 pEventData: pointer to the event information structure
18391
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 @see
18393 @return Result of the function call
18394*/
18395WDI_Status
18396WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018397(
Jeff Johnson295189b2012-06-20 16:38:30 -070018398 WDI_ControlBlockType* pWDICtx,
18399 WDI_EventInfoType* pEventData
18400)
18401{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018402 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18403 tHalEnterBmpsRspParams halEnterBmpsRsp;
18404 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18405 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018406 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18408
18409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018411 -------------------------------------------------------------------------*/
18412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18413 ( NULL == pEventData->pEventData))
18414 {
18415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 }
18420
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018422 Extract response and send it to UMAC
18423 -------------------------------------------------------------------------*/
18424 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18425 {
18426 wpalMemoryCopy( &halEnterBmpsRsp,
18427 pEventData->pEventData,
18428 sizeof(halEnterBmpsRsp));
18429
18430 //Used to print debug message
18431 halStatus = halEnterBmpsRsp.status;
18432 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18433 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18434 }
18435 else
18436 {
18437 halStatus = *((eHalStatus*)pEventData->pEventData);
18438 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18439 }
18440
18441 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018442
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018443 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18444 * Other module states are taken care by PMC.
18445 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18446 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018447 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18448 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018449
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018451 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18452 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018453 /* Call Back is not required as we are putting the DXE in FULL
18454 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018455 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18456 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18457 {
18458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18459 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18460 WDI_ASSERT(0);
18461 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018462 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018463 }
18464
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018466 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018467
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018469}/*WDI_ProcessEnterBmpsRsp*/
18470
18471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018472 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018474
18475 @param pWDICtx: pointer to the WLAN DAL context
18476 pEventData: pointer to the event information structure
18477
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 @see
18479 @return Result of the function call
18480*/
18481WDI_Status
18482WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018483(
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 WDI_ControlBlockType* pWDICtx,
18485 WDI_EventInfoType* pEventData
18486)
18487{
Jeff Johnson295189b2012-06-20 16:38:30 -070018488 eHalStatus halStatus;
18489 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018490 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018491 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18492 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18494
18495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 -------------------------------------------------------------------------*/
18498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18499 ( NULL == pEventData->pEventData))
18500 {
18501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 }
18506
18507 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18508
18509 /*-------------------------------------------------------------------------
18510 Extract response and send it to UMAC
18511 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018512
18513 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18514 {
18515 wpalMemoryCopy( &halExitBmpsRsp,
18516 pEventData->pEventData,
18517 sizeof(halExitBmpsRsp));
18518
18519 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18520 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18521 }
18522 else
18523 {
18524 halStatus = *((eHalStatus*)pEventData->pEventData);
18525 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18526 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018527
18528 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018529 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18530 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18531 {
18532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18533 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18534 WDI_ASSERT(0);
18535 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018536 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18537
18538 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018539 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018540
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018542}/*WDI_ProcessExitBmpsRsp*/
18543
18544/**
18545 @brief Process Enter UAPSD Rsp function (called when a response
18546 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018547
18548 @param pWDICtx: pointer to the WLAN DAL context
18549 pEventData: pointer to the event information structure
18550
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 @see
18552 @return Result of the function call
18553*/
18554WDI_Status
18555WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018556(
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 WDI_ControlBlockType* pWDICtx,
18558 WDI_EventInfoType* pEventData
18559)
18560{
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018562 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018564 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18565
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18567
18568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 -------------------------------------------------------------------------*/
18571 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18572 ( NULL == pEventData->pEventData))
18573 {
18574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 }
18579
18580 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18581
18582 /*-------------------------------------------------------------------------
18583 Extract response and send it to UMAC
18584 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018585 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18586 {
18587 wpalMemoryCopy( &halEnterUapsdRsp,
18588 pEventData->pEventData,
18589 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018590
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018591 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18592 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18593 }
18594 else
18595 {
18596 halStatus = *((eHalStatus*)pEventData->pEventData);
18597 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18598 }
18599
18600 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 {
18602 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18603 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18604 // the traffic to decide when to suspend the trigger frames when there is no traffic
18605 // activity on the trigger enabled ACs
18606 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18607
18608#ifdef WLAN_PERF
18609 // Increment the BD signature to refresh the fast path BD utilization
18610 pWDICtx->uBdSigSerialNum++;
18611#endif
18612 }
18613
18614 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018615 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018616
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018618}/*WDI_ProcessEnterUapsdRsp*/
18619
18620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018623
18624 @param pWDICtx: pointer to the WLAN DAL context
18625 pEventData: pointer to the event information structure
18626
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 @see
18628 @return Result of the function call
18629*/
18630WDI_Status
18631WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018632(
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 WDI_ControlBlockType* pWDICtx,
18634 WDI_EventInfoType* pEventData
18635)
18636{
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 eHalStatus halStatus;
18638 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018639 tHalExitUapsdRspParams halExitUapsdRsp;
18640 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18642
18643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 -------------------------------------------------------------------------*/
18646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18647 ( NULL == pEventData->pEventData))
18648 {
18649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 }
18654
18655 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18656
18657 /*-------------------------------------------------------------------------
18658 Extract response and send it to UMAC
18659 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018660 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18661 {
18662 wpalMemoryCopy( &halExitUapsdRsp,
18663 pEventData->pEventData,
18664 sizeof(halExitUapsdRsp));
18665
18666 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18667 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18668 }
18669 else
18670 {
18671 halStatus = *((eHalStatus*)pEventData->pEventData);
18672 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18673 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18675 // directly instead of the FW WQ.
18676 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18677
18678#ifdef WLAN_PERF
18679 // Increment the BD signature to refresh the fast path BD utilization
18680 pWDICtx->uBdSigSerialNum++;
18681#endif
18682
18683 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018684 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018685
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018687}/*WDI_ProcessExitUapsdRsp*/
18688
18689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018692
18693 @param pWDICtx: pointer to the WLAN DAL context
18694 pEventData: pointer to the event information structure
18695
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 @see
18697 @return Result of the function call
18698*/
18699WDI_Status
18700WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018701(
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 WDI_ControlBlockType* pWDICtx,
18703 WDI_EventInfoType* pEventData
18704)
18705{
18706 WDI_Status wdiStatus;
18707 eHalStatus halStatus;
18708 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18710
18711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 -------------------------------------------------------------------------*/
18714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18715 ( NULL == pEventData->pEventData))
18716 {
18717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 }
18722
18723 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18724
18725 /*-------------------------------------------------------------------------
18726 Extract response and send it to UMAC
18727 -------------------------------------------------------------------------*/
18728 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018729 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018730
18731 /*Notify UMAC*/
18732 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18733
Jeff Johnsone7245742012-09-05 17:12:55 -070018734 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018735}/*WDI_ProcessSetUapsdAcParamsRsp*/
18736
18737/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018738 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018740
18741 @param pWDICtx: pointer to the WLAN DAL context
18742 pEventData: pointer to the event information structure
18743
Jeff Johnson295189b2012-06-20 16:38:30 -070018744 @see
18745 @return Result of the function call
18746*/
18747WDI_Status
18748WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018749(
Jeff Johnson295189b2012-06-20 16:38:30 -070018750 WDI_ControlBlockType* pWDICtx,
18751 WDI_EventInfoType* pEventData
18752)
18753{
18754 WDI_Status wdiStatus;
18755 eHalStatus halStatus;
18756 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18758
18759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018761 -------------------------------------------------------------------------*/
18762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18763 ( NULL == pEventData->pEventData))
18764 {
18765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018766 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018769 }
18770
18771 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18772
18773 /*-------------------------------------------------------------------------
18774 Extract response and send it to UMAC
18775 -------------------------------------------------------------------------*/
18776 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018777 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018778
18779 /*Notify UMAC*/
18780 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18781
Jeff Johnsone7245742012-09-05 17:12:55 -070018782 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018783}/*WDI_ProcessUpdateUapsdParamsRsp*/
18784
18785/**
18786 @brief Process Configure RXP filter Rsp function (called when a
18787 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018788
18789 @param pWDICtx: pointer to the WLAN DAL context
18790 pEventData: pointer to the event information structure
18791
Jeff Johnson295189b2012-06-20 16:38:30 -070018792 @see
18793 @return Result of the function call
18794*/
18795WDI_Status
18796WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018797(
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 WDI_ControlBlockType* pWDICtx,
18799 WDI_EventInfoType* pEventData
18800)
18801{
18802 WDI_Status wdiStatus;
18803 eHalStatus halStatus;
18804 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18806
18807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 -------------------------------------------------------------------------*/
18810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18811 ( NULL == pEventData->pEventData))
18812 {
18813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 }
18818
18819 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18820
18821 /*-------------------------------------------------------------------------
18822 Extract response and send it to UMAC
18823 -------------------------------------------------------------------------*/
18824 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018826
18827 /*Notify UMAC*/
18828 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18829
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018831}/*WDI_ProcessConfigureRxpFilterRsp*/
18832
18833/**
18834 @brief Process Set beacon filter Rsp function (called when a
18835 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018836
18837 @param pWDICtx: pointer to the WLAN DAL context
18838 pEventData: pointer to the event information structure
18839
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 @see
18841 @return Result of the function call
18842*/
18843WDI_Status
18844WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018845(
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 WDI_ControlBlockType* pWDICtx,
18847 WDI_EventInfoType* pEventData
18848)
18849{
18850 WDI_Status wdiStatus;
18851 eHalStatus halStatus;
18852 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18854
18855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 -------------------------------------------------------------------------*/
18858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18859 ( NULL == pEventData->pEventData))
18860 {
18861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 }
18866
18867 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18868
18869 /*-------------------------------------------------------------------------
18870 Extract response and send it to UMAC
18871 -------------------------------------------------------------------------*/
18872 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018873 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018874
18875 /*Notify UMAC*/
18876 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18877
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018879}/*WDI_ProcessSetBeaconFilterRsp*/
18880
18881/**
18882 @brief Process remove beacon filter Rsp function (called when a
18883 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018884
18885 @param pWDICtx: pointer to the WLAN DAL context
18886 pEventData: pointer to the event information structure
18887
Jeff Johnson295189b2012-06-20 16:38:30 -070018888 @see
18889 @return Result of the function call
18890*/
18891WDI_Status
18892WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018893(
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 WDI_ControlBlockType* pWDICtx,
18895 WDI_EventInfoType* pEventData
18896)
18897{
18898 WDI_Status wdiStatus;
18899 eHalStatus halStatus;
18900 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18902
18903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 -------------------------------------------------------------------------*/
18906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18907 ( NULL == pEventData->pEventData))
18908 {
18909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 }
18914
18915 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18916
18917 /*-------------------------------------------------------------------------
18918 Extract response and send it to UMAC
18919 -------------------------------------------------------------------------*/
18920 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018921 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018922
18923 /*Notify UMAC*/
18924 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18925
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018927}/*WDI_ProcessRemBeaconFilterRsp*/
18928
18929/**
18930 @brief Process set RSSI thresholds Rsp function (called when a
18931 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018932
18933 @param pWDICtx: pointer to the WLAN DAL context
18934 pEventData: pointer to the event information structure
18935
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 @see
18937 @return Result of the function call
18938*/
18939WDI_Status
18940WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018941(
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 WDI_ControlBlockType* pWDICtx,
18943 WDI_EventInfoType* pEventData
18944)
18945{
18946 WDI_Status wdiStatus;
18947 eHalStatus halStatus;
18948 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18950
18951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 -------------------------------------------------------------------------*/
18954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18955 ( NULL == pEventData->pEventData))
18956 {
18957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 }
18962
18963 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18964
18965 /*-------------------------------------------------------------------------
18966 Extract response and send it to UMAC
18967 -------------------------------------------------------------------------*/
18968 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018970
18971 /*Notify UMAC*/
18972 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18973
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018975}/*WDI_ProcessSetRSSIThresoldsRsp*/
18976
18977/**
18978 @brief Process host offload Rsp function (called when a
18979 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018980
18981 @param pWDICtx: pointer to the WLAN DAL context
18982 pEventData: pointer to the event information structure
18983
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 @see
18985 @return Result of the function call
18986*/
18987WDI_Status
18988WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018989(
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 WDI_ControlBlockType* pWDICtx,
18991 WDI_EventInfoType* pEventData
18992)
18993{
18994 WDI_Status wdiStatus;
18995 eHalStatus halStatus;
18996 WDI_HostOffloadCb wdiHostOffloadCb;
18997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18998
18999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019001 -------------------------------------------------------------------------*/
19002 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19003 ( NULL == pEventData->pEventData))
19004 {
19005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 }
19010
19011 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19012
19013 /*-------------------------------------------------------------------------
19014 Extract response and send it to UMAC
19015 -------------------------------------------------------------------------*/
19016 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019018
19019 /*Notify UMAC*/
19020 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19021
Jeff Johnsone7245742012-09-05 17:12:55 -070019022 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019023}/*WDI_ProcessHostOffloadRsp*/
19024
19025/**
19026 @brief Process keep alive Rsp function (called when a
19027 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019028
19029 @param pWDICtx: pointer to the WLAN DAL context
19030 pEventData: pointer to the event information structure
19031
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 @see
19033 @return Result of the function call
19034*/
19035WDI_Status
19036WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019037(
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 WDI_ControlBlockType* pWDICtx,
19039 WDI_EventInfoType* pEventData
19040)
19041{
19042 WDI_Status wdiStatus;
19043 eHalStatus halStatus;
19044 WDI_KeepAliveCb wdiKeepAliveCb;
19045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19047 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19048
19049
19050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 -------------------------------------------------------------------------*/
19053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19054 ( NULL == pEventData->pEventData))
19055 {
19056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 }
19061
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19063
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 /*-------------------------------------------------------------------------
19065 Extract response and send it to UMAC
19066 -------------------------------------------------------------------------*/
19067 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019069
19070 /*Notify UMAC*/
19071 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19072
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019074}/*WDI_ProcessKeepAliveRsp*/
19075
19076/**
19077 @brief Process wowl add ptrn Rsp function (called when a
19078 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019079
19080 @param pWDICtx: pointer to the WLAN DAL context
19081 pEventData: pointer to the event information structure
19082
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 @see
19084 @return Result of the function call
19085*/
19086WDI_Status
19087WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019088(
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 WDI_ControlBlockType* pWDICtx,
19090 WDI_EventInfoType* pEventData
19091)
19092{
Jeff Johnson295189b2012-06-20 16:38:30 -070019093 eHalStatus halStatus;
19094 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019095 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19096 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19097
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19099
19100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 -------------------------------------------------------------------------*/
19103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19104 ( NULL == pEventData->pEventData))
19105 {
19106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 }
19111
19112 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19113
19114 /*-------------------------------------------------------------------------
19115 Extract response and send it to UMAC
19116 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019117 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19118 {
19119 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19120 pEventData->pEventData,
19121 sizeof(halAddWowlBcastPtrRsp));
19122
19123 wdiWowlAddBcPtrRsp.wdiStatus =
19124 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19125 }
19126 else
19127 {
19128 halStatus = *((eHalStatus*)pEventData->pEventData);
19129 wdiWowlAddBcPtrRsp.wdiStatus =
19130 WDI_HAL_2_WDI_STATUS(halStatus);
19131 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019132
19133 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019134 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019135
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137}/*WDI_ProcessWowlAddBcPtrnRsp*/
19138
19139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019140 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019142
19143 @param pWDICtx: pointer to the WLAN DAL context
19144 pEventData: pointer to the event information structure
19145
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 @see
19147 @return Result of the function call
19148*/
19149WDI_Status
19150WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019151(
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 WDI_ControlBlockType* pWDICtx,
19153 WDI_EventInfoType* pEventData
19154)
19155{
Jeff Johnson295189b2012-06-20 16:38:30 -070019156 eHalStatus halStatus;
19157 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019158 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19159 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19161
19162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 -------------------------------------------------------------------------*/
19165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19166 ( NULL == pEventData->pEventData))
19167 {
19168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 }
19173
19174 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19175
19176 /*-------------------------------------------------------------------------
19177 Extract response and send it to UMAC
19178 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019179 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19180 {
19181 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19182 pEventData->pEventData,
19183 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019184
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019185 wdiWowlDelBcstPtrRsp.wdiStatus =
19186 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19187 }
19188 else
19189 {
19190 halStatus = *((eHalStatus*)pEventData->pEventData);
19191 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19192 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019194 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019195
Jeff Johnsone7245742012-09-05 17:12:55 -070019196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019197}/*WDI_ProcessWowlDelBcPtrnRsp*/
19198
19199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019200 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019202
19203 @param pWDICtx: pointer to the WLAN DAL context
19204 pEventData: pointer to the event information structure
19205
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 @see
19207 @return Result of the function call
19208*/
19209WDI_Status
19210WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019211(
Jeff Johnson295189b2012-06-20 16:38:30 -070019212 WDI_ControlBlockType* pWDICtx,
19213 WDI_EventInfoType* pEventData
19214)
19215{
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 eHalStatus halStatus;
19217 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019218 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19219 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19221
19222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 -------------------------------------------------------------------------*/
19225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19226 ( NULL == pEventData->pEventData))
19227 {
19228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 }
19233
19234 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19235
19236 /*-------------------------------------------------------------------------
19237 Extract response and send it to UMAC
19238 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019239 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19240 {
19241 wpalMemoryCopy( &halEnterWowlRspParams,
19242 (wpt_uint8*)pEventData->pEventData,
19243 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019244
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019245 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19246 wdiwowlEnterRsp.status =
19247 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19248 }
19249 else
19250 {
19251 halStatus = *((eHalStatus*)pEventData->pEventData);
19252 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19253 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019254 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019255 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019256
Jeff Johnsone7245742012-09-05 17:12:55 -070019257 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019258}/*WDI_ProcessWowlEnterRsp*/
19259
19260/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019261 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019263
19264 @param pWDICtx: pointer to the WLAN DAL context
19265 pEventData: pointer to the event information structure
19266
Jeff Johnson295189b2012-06-20 16:38:30 -070019267 @see
19268 @return Result of the function call
19269*/
19270WDI_Status
19271WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019272(
Jeff Johnson295189b2012-06-20 16:38:30 -070019273 WDI_ControlBlockType* pWDICtx,
19274 WDI_EventInfoType* pEventData
19275)
19276{
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 eHalStatus halStatus;
19278 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019279 tHalExitWowlRspParams halExitWowlRspParams;
19280 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19281
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19283
19284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 -------------------------------------------------------------------------*/
19287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19288 ( NULL == pEventData->pEventData))
19289 {
19290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 }
19295
19296 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19297
19298 /*-------------------------------------------------------------------------
19299 Extract response and send it to UMAC
19300 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019301 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19302 {
19303 wpalMemoryCopy( &halExitWowlRspParams,
19304 pEventData->pEventData,
19305 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019306
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019307 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19308 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19309
19310 }
19311 else
19312 {
19313 halStatus = *((eHalStatus*)pEventData->pEventData);
19314 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19315 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019317 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019318
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019320}/*WDI_ProcessWowlExitRsp*/
19321
19322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 (called when a response is being received over the bus
19325 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019326
19327 @param pWDICtx: pointer to the WLAN DAL context
19328 pEventData: pointer to the event information structure
19329
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 @see
19331 @return Result of the function call
19332*/
19333WDI_Status
19334WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019335(
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 WDI_ControlBlockType* pWDICtx,
19337 WDI_EventInfoType* pEventData
19338)
19339{
19340 WDI_Status wdiStatus;
19341 eHalStatus halStatus;
19342 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19344
19345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019347 -------------------------------------------------------------------------*/
19348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19349 ( NULL == pEventData->pEventData))
19350 {
19351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 }
19356
19357 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19358
19359 /*-------------------------------------------------------------------------
19360 Extract response and send it to UMAC
19361 -------------------------------------------------------------------------*/
19362 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019364
19365 /*Notify UMAC*/
19366 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19367
Jeff Johnsone7245742012-09-05 17:12:55 -070019368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019369}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19370
19371
19372/**
19373 @brief Process Nv download(called when a response
19374 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019375
19376 @param pWDICtx: pointer to the WLAN DAL context
19377 pEventData: pointer to the event information structure
19378
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 @see
19380 @return Result of the function call
19381*/
19382WDI_Status
19383WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019384(
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 WDI_ControlBlockType* pWDICtx,
19386 WDI_EventInfoType* pEventData
19387)
19388{
19389
19390 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19391 tHalNvImgDownloadRspParams halNvDownloadRsp;
19392 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19393
19394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 -------------------------------------------------------------------------*/
19397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19398 ( NULL == pEventData->pEventData))
19399 {
19400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 }
19405
19406 /*-------------------------------------------------------------------------
19407 Extract response and send it to UMAC
19408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019409 wpalMemoryCopy( &halNvDownloadRsp,
19410 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 sizeof(halNvDownloadRsp));
19412
19413 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19414
19415 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019416 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19417 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 {
19419 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019420 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 }
19422 else
19423 {
19424 /*Reset the Nv related global information in WDI context information */
19425 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19426 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19427 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19428 /*call WDA callback function for last fragment */
19429 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19430 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19431 }
19432
Jeff Johnsone7245742012-09-05 17:12:55 -070019433 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019434}
19435#ifdef WLAN_FEATURE_VOWIFI_11R
19436/**
19437 @brief Process Add TSpec Rsp function (called when a response
19438 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019439
19440 @param pWDICtx: pointer to the WLAN DAL context
19441 pEventData: pointer to the event information structure
19442
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 @see
19444 @return Result of the function call
19445*/
19446WDI_Status
19447WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019448(
Jeff Johnson295189b2012-06-20 16:38:30 -070019449 WDI_ControlBlockType* pWDICtx,
19450 WDI_EventInfoType* pEventData
19451)
19452{
19453 WDI_Status wdiStatus;
19454 tAggrAddTsRspParams aggrAddTsRsp;
19455 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19457
19458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019460 -------------------------------------------------------------------------*/
19461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19462 ( NULL == pEventData->pEventData))
19463 {
19464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019468 }
19469
19470 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19471
19472 /*-------------------------------------------------------------------------
19473 Extract response and send it to UMAC
19474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019475 wpalMemoryCopy( &aggrAddTsRsp,
19476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019477 sizeof(aggrAddTsRsp));
19478
19479 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019480 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019481
19482 /*Notify UMAC*/
19483 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19484
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019486}/*WDI_ProcessAddTSpecRsp*/
19487#endif /* WLAN_FEATURE_VOWIFI_11R */
19488
19489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019492
19493 @param pWDICtx: pointer to the WLAN DAL context
19494 pEventData: pointer to the event information structure
19495
Jeff Johnson295189b2012-06-20 16:38:30 -070019496 @see
19497 @return Result of the function call
19498*/
19499WDI_Status
19500WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019501(
Jeff Johnson295189b2012-06-20 16:38:30 -070019502 WDI_ControlBlockType* pWDICtx,
19503 WDI_EventInfoType* pEventData
19504)
19505{
19506 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19507 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19508 tHalHostResumeRspParams hostResumeRspMsg;
19509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19510
19511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 -------------------------------------------------------------------------*/
19514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19515 ( NULL == pEventData->pEventData))
19516 {
19517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 }
19522
19523 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19524
19525 /*-------------------------------------------------------------------------
19526 Extract response and send it to UMAC
19527 -------------------------------------------------------------------------*/
19528
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 (wpt_uint8*)pEventData->pEventData,
19531 sizeof(hostResumeRspMsg));
19532
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 wdiResumeRspParams.wdiStatus =
19534 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019535
19536 /*Notify UMAC*/
19537 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19538
19539 return WDI_STATUS_SUCCESS;
19540}
19541
19542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019545
19546 @param pWDICtx: pointer to the WLAN DAL context
19547 pEventData: pointer to the event information structure
19548
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 @see
19550 @return Result of the function call
19551*/
19552WDI_Status
19553WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019554(
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 WDI_ControlBlockType* pWDICtx,
19556 WDI_EventInfoType* pEventData
19557)
19558{
19559 WDI_Status wdiStatus;
19560 eHalStatus halStatus;
19561 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19563
19564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 -------------------------------------------------------------------------*/
19567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19568 ( NULL == pEventData->pEventData))
19569 {
19570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019575
19576 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019577
19578 /*-------------------------------------------------------------------------
19579 Extract response and send it to UMAC
19580 -------------------------------------------------------------------------*/
19581 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019582 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019583
19584 /*Notify UMAC*/
19585 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19586
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019588}/*WDI_ProcessSetTxPerTrackingRsp*/
19589
19590/*==========================================================================
19591 Indications from HAL
19592 ==========================================================================*/
19593/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 indication of this kind is being received over the bus
19596 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019597
19598 @param pWDICtx: pointer to the WLAN DAL context
19599 pEventData: pointer to the event information structure
19600
Jeff Johnson295189b2012-06-20 16:38:30 -070019601 @see
19602 @return Result of the function call
19603*/
19604WDI_Status
19605WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019606(
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 WDI_ControlBlockType* pWDICtx,
19608 WDI_EventInfoType* pEventData
19609)
19610{
19611 WDI_LowLevelIndType wdiInd;
19612 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19614
19615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 -------------------------------------------------------------------------*/
19618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19619 ( NULL == pEventData->pEventData))
19620 {
19621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019625 }
19626
19627 /*-------------------------------------------------------------------------
19628 Extract indication and send it to UMAC
19629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019630 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19631 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 sizeof(tHalRSSINotification));
19633
19634 /*Fill in the indication parameters*/
19635 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19636 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19637 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19638 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19639 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19640 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19641 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19642 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19643 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19644 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19645 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19646 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19647 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019648 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19649 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019650
ltimariu034f7d62013-01-24 18:54:33 -080019651 if ( pWDICtx->wdiLowLevelIndCB )
19652 {
19653 /*Notify UMAC of indication*/
19654 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19655 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019656
19657 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019658}/*WDI_ProcessLowRSSIInd*/
19659
19660
19661/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 an indication of this kind is being received over the
19664 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019665
19666 @param pWDICtx: pointer to the WLAN DAL context
19667 pEventData: pointer to the event information structure
19668
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 @see
19670 @return Result of the function call
19671*/
19672WDI_Status
19673WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019674(
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 WDI_ControlBlockType* pWDICtx,
19676 WDI_EventInfoType* pEventData
19677)
19678{
19679 WDI_Status wdiStatus;
19680 eHalStatus halStatus;
19681 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019682 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19684
19685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 -------------------------------------------------------------------------*/
19688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19689 ( NULL == pEventData->pEventData))
19690 {
19691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019696 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 /*-------------------------------------------------------------------------
19698 Extract indication and send it to UMAC
19699 -------------------------------------------------------------------------*/
19700 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19701 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019703
19704 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019705 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019706 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19707 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019708 if ( pWDICtx->wdiLowLevelIndCB )
19709 {
19710 /*Notify UMAC*/
19711 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19712 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019713
19714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019715}/*WDI_ProcessMissedBeaconInd*/
19716
19717
19718/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 an indication of this kind is being received over the
19721 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019722
19723 @param pWDICtx: pointer to the WLAN DAL context
19724 pEventData: pointer to the event information structure
19725
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 @see
19727 @return Result of the function call
19728*/
19729WDI_Status
19730WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019731(
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 WDI_ControlBlockType* pWDICtx,
19733 WDI_EventInfoType* pEventData
19734)
19735{
19736 WDI_Status wdiStatus;
19737 eHalStatus halStatus;
19738 WDI_LowLevelIndType wdiInd;
19739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19740
19741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019743 -------------------------------------------------------------------------*/
19744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19745 ( NULL == pEventData->pEventData))
19746 {
19747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 }
19752
19753 /*-------------------------------------------------------------------------
19754 Extract indication and send it to UMAC
19755 -------------------------------------------------------------------------*/
19756 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19757 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019759
19760 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 /* ! TO DO - fill in from HAL struct:
19763 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19764
ltimariu034f7d62013-01-24 18:54:33 -080019765 if ( pWDICtx->wdiLowLevelIndCB )
19766 {
19767 /*Notify UMAC*/
19768 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19769 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019770
19771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019772}/*WDI_ProcessUnkAddrFrameInd*/
19773
19774
19775/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019776 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 indication of this kind is being received over the bus
19778 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019779
19780 @param pWDICtx: pointer to the WLAN DAL context
19781 pEventData: pointer to the event information structure
19782
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 @see
19784 @return Result of the function call
19785*/
19786WDI_Status
19787WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019788(
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 WDI_ControlBlockType* pWDICtx,
19790 WDI_EventInfoType* pEventData
19791)
19792{
19793 WDI_LowLevelIndType wdiInd;
19794 tpSirMicFailureInd pHalMicFailureInd;
19795
19796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19797
19798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019800 -------------------------------------------------------------------------*/
19801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19802 ( NULL == pEventData->pEventData))
19803 {
19804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019808 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019809
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19811 /*-------------------------------------------------------------------------
19812 Extract indication and send it to UMAC
19813 -------------------------------------------------------------------------*/
19814
19815 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019816 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19818 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19819 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19820 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19821 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19822 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19823 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19824 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019825 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019826 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019827 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 pHalMicFailureInd->info.keyId;
19831 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19832 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19833 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19834 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019835
19836 if ( pWDICtx->wdiLowLevelIndCB )
19837 {
19838 /*Notify UMAC*/
19839 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19840 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019841
19842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019843}/*WDI_ProcessMicFailureInd*/
19844
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 an indication of this kind is being received over the
19849 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019850
19851 @param pWDICtx: pointer to the WLAN DAL context
19852 pEventData: pointer to the event information structure
19853
Jeff Johnson295189b2012-06-20 16:38:30 -070019854 @see
19855 @return Result of the function call
19856*/
19857WDI_Status
19858WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019859(
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 WDI_ControlBlockType* pWDICtx,
19861 WDI_EventInfoType* pEventData
19862)
19863{
19864 WDI_Status wdiStatus;
19865 eHalStatus halStatus;
19866 WDI_LowLevelIndType wdiInd;
19867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19868
19869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 -------------------------------------------------------------------------*/
19872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19873 ( NULL == pEventData->pEventData))
19874 {
19875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 }
19880
19881 /*-------------------------------------------------------------------------
19882 Extract indication and send it to UMAC
19883 -------------------------------------------------------------------------*/
19884
19885 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19886 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019888
19889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19890 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019891
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019893 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19894 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019895
ltimariu034f7d62013-01-24 18:54:33 -080019896 if ( pWDICtx->wdiLowLevelIndCB )
19897 {
19898 /*Notify UMAC*/
19899 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19900 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019901
19902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019903}/*WDI_ProcessFatalErrorInd*/
19904
19905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 an indication of this kind is being received over the
19908 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019909
19910 @param pWDICtx: pointer to the WLAN DAL context
19911 pEventData: pointer to the event information structure
19912
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 @see
19914 @return Result of the function call
19915*/
19916WDI_Status
19917WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019918(
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 WDI_ControlBlockType* pWDICtx,
19920 WDI_EventInfoType* pEventData
19921)
19922{
19923 tDeleteStaContextParams halDelSTACtx;
19924 WDI_LowLevelIndType wdiInd;
19925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19926
19927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 -------------------------------------------------------------------------*/
19930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19931 ( NULL == pEventData->pEventData))
19932 {
19933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 }
19938
19939 /*-------------------------------------------------------------------------
19940 Extract indication and send it to UMAC
19941 -------------------------------------------------------------------------*/
19942
19943 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 wpalMemoryCopy( &halDelSTACtx,
19945 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 sizeof(halDelSTACtx));
19947
19948 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019949 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019950
19951 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19952 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19953 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19954 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19955
Jeff Johnsone7245742012-09-05 17:12:55 -070019956 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19961 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019962
ltimariu034f7d62013-01-24 18:54:33 -080019963 if ( pWDICtx->wdiLowLevelIndCB )
19964 {
19965 /*Notify UMAC*/
19966 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19967 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019968
19969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019970}/*WDI_ProcessDelSTAInd*/
19971
19972/**
19973*@brief Process Coex Indication function (called when
19974 an indication of this kind is being received over the
19975 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019976
19977 @param pWDICtx: pointer to the WLAN DAL context
19978 pEventData: pointer to the event information structure
19979
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 @see
19981 @return Result of the function call
19982*/
19983WDI_Status
19984WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019985(
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 WDI_ControlBlockType* pWDICtx,
19987 WDI_EventInfoType* pEventData
19988)
19989{
19990 WDI_LowLevelIndType wdiInd;
19991 tCoexIndMsg halCoexIndMsg;
19992 wpt_uint32 index;
19993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19994
19995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 -------------------------------------------------------------------------*/
19998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19999 ( NULL == pEventData->pEventData ))
20000 {
20001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 }
20006
20007 /*-------------------------------------------------------------------------
20008 Extract indication and send it to UMAC
20009 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20011 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 sizeof(halCoexIndMsg.coexIndParams) );
20013
20014 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020015 wdiInd.wdiIndicationType = WDI_COEX_IND;
20016 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20018 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 }
20021
20022 // DEBUG
20023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20024 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020025 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20026 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20027 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20028 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20029 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020030
ltimariu034f7d62013-01-24 18:54:33 -080020031 if ( pWDICtx->wdiLowLevelIndCB )
20032 {
20033 /*Notify UMAC*/
20034 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20035 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020036
20037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020038}/*WDI_ProcessCoexInd*/
20039
20040/**
20041*@brief Process Tx Complete Indication function (called when
20042 an indication of this kind is being received over the
20043 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020044
20045 @param pWDICtx: pointer to the WLAN DAL context
20046 pEventData: pointer to the event information structure
20047
Jeff Johnson295189b2012-06-20 16:38:30 -070020048 @see
20049 @return Result of the function call
20050*/
20051WDI_Status
20052WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020053(
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 WDI_ControlBlockType* pWDICtx,
20055 WDI_EventInfoType* pEventData
20056)
20057{
20058 WDI_LowLevelIndType wdiInd;
20059 tTxComplIndMsg halTxComplIndMsg;
20060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20061
20062 /*-------------------------------------------------------------------------
20063 Sanity check
20064 -------------------------------------------------------------------------*/
20065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20066 ( NULL == pEventData->pEventData ))
20067 {
20068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020070 WDI_ASSERT( 0 );
20071 return WDI_STATUS_E_FAILURE;
20072 }
20073
20074 /*-------------------------------------------------------------------------
20075 Extract indication and send it to UMAC
20076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020077 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20078 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 sizeof(halTxComplIndMsg.txComplParams) );
20080
20081 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020082 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20083 wdiInd.wdiIndicationData.tx_complete_status
20084 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020085
ltimariu034f7d62013-01-24 18:54:33 -080020086 if ( pWDICtx->wdiLowLevelIndCB )
20087 {
20088 /*Notify UMAC*/
20089 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20090 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020091
20092 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020093}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020094#ifdef FEATURE_WLAN_TDLS
20095/**
20096*@brief Process TDLS Indication function (called when
20097 an indication of this kind is being received over the
20098 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020099
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020100 @param pWDICtx: pointer to the WLAN DAL context
20101 pEventData: pointer to the event information structure
20102
20103 @see
20104 @return Result of the function call
20105*/
20106WDI_Status
20107WDI_ProcessTdlsInd
20108(
20109 WDI_ControlBlockType* pWDICtx,
20110 WDI_EventInfoType* pEventData
20111)
20112{
20113 WDI_LowLevelIndType wdiInd;
20114 tTdlsIndMsg halTdlsIndMsg;
20115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20116
20117 /*-------------------------------------------------------------------------
20118 Sanity check
20119 -------------------------------------------------------------------------*/
20120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20121 ( NULL == pEventData->pEventData ))
20122 {
20123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20124 "%s: Invalid parameters", __func__);
20125 WDI_ASSERT( 0 );
20126 return WDI_STATUS_E_FAILURE;
20127 }
20128
20129 /*-------------------------------------------------------------------------
20130 Extract indication and send it to UMAC
20131 -------------------------------------------------------------------------*/
20132 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20133 pEventData->pEventData,
20134 sizeof(halTdlsIndMsg.tdlsIndParams) );
20135
20136 /*Fill in the indication parameters*/
20137 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20138
20139 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20140 = halTdlsIndMsg.tdlsIndParams.status;
20141
20142 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20143 = halTdlsIndMsg.tdlsIndParams.staIdx;
20144
20145 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20146 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20147
20148 /*Notify UMAC*/
20149 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20150
20151 return WDI_STATUS_SUCCESS;
20152}/*WDI_ProcessTdlsInd*/
20153#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020154/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020155*@brief Process Noa Start Indication function (called when
20156 an indication of this kind is being received over the
20157 bus from HAL)
20158
20159 @param pWDICtx: pointer to the WLAN DAL context
20160 pEventData: pointer to the event information structure
20161
20162 @see
20163 @return Result of the function call
20164*/
20165WDI_Status
20166WDI_ProcessP2pNoaStartInd
20167(
20168 WDI_ControlBlockType* pWDICtx,
20169 WDI_EventInfoType* pEventData
20170)
20171{
20172 WDI_LowLevelIndType wdiInd;
20173 tNoaStartIndMsg halNoaStartIndMsg;
20174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20175
20176 /*-------------------------------------------------------------------------
20177 Sanity check
20178 -------------------------------------------------------------------------*/
20179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20180 ( NULL == pEventData->pEventData ))
20181 {
20182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20183 "%s: Invalid parameters", __func__);
20184 WDI_ASSERT( 0 );
20185 return WDI_STATUS_E_FAILURE;
20186 }
20187
20188 /*-------------------------------------------------------------------------
20189 Extract indication and send it to UMAC
20190 -------------------------------------------------------------------------*/
20191 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20192 pEventData->pEventData,
20193 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20194
20195 /*Fill in the indication parameters*/
20196 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20197
20198 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20199 = halNoaStartIndMsg.noaStartIndParams.status;
20200
20201 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20202 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20203
20204 /*Notify UMAC*/
20205 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20206
20207 return WDI_STATUS_SUCCESS;
20208}/*WDI_ProcessNoaAttrInd*/
20209
20210/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020211*@brief Process Noa Attr Indication function (called when
20212 an indication of this kind is being received over the
20213 bus from HAL)
20214
20215 @param pWDICtx: pointer to the WLAN DAL context
20216 pEventData: pointer to the event information structure
20217
20218 @see
20219 @return Result of the function call
20220*/
20221WDI_Status
20222WDI_ProcessP2pNoaAttrInd
20223(
20224 WDI_ControlBlockType* pWDICtx,
20225 WDI_EventInfoType* pEventData
20226)
20227{
20228 WDI_LowLevelIndType wdiInd;
20229 tNoaAttrIndMsg halNoaAttrIndMsg;
20230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20231
20232 /*-------------------------------------------------------------------------
20233 Sanity check
20234 -------------------------------------------------------------------------*/
20235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20236 ( NULL == pEventData->pEventData ))
20237 {
20238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 WDI_ASSERT( 0 );
20241 return WDI_STATUS_E_FAILURE;
20242 }
20243
20244 /*-------------------------------------------------------------------------
20245 Extract indication and send it to UMAC
20246 -------------------------------------------------------------------------*/
20247 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20248 pEventData->pEventData,
20249 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20250
20251 /*Fill in the indication parameters*/
20252 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020253
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20255 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020256
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20258 = halNoaAttrIndMsg.noaAttrIndParams.index;
20259 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20260 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20261 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20262 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020263
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20265 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20266 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20267 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20268 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20269 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20270 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20271 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020272
Jeff Johnson295189b2012-06-20 16:38:30 -070020273 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20274 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20275 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20276 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20277 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20278 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20279 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20280 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20281
ltimariu034f7d62013-01-24 18:54:33 -080020282 if ( pWDICtx->wdiLowLevelIndCB )
20283 {
20284 /*Notify UMAC*/
20285 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20286 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020287
20288 return WDI_STATUS_SUCCESS;
20289}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020290
20291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 an indication of this kind is being received over the
20294 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020295
20296 @param pWDICtx: pointer to the WLAN DAL context
20297 pEventData: pointer to the event information structure
20298
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 @see
20300 @return Result of the function call
20301*/
20302WDI_Status
20303WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020304(
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 WDI_ControlBlockType* pWDICtx,
20306 WDI_EventInfoType* pEventData
20307)
20308{
20309 WDI_LowLevelIndType wdiInd;
20310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020311
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 /*-------------------------------------------------------------------------
20313 Extract indication and send it to UMAC
20314 -------------------------------------------------------------------------*/
20315 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020316 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20317
ltimariu034f7d62013-01-24 18:54:33 -080020318 if ( pWDICtx->wdiLowLevelIndCB )
20319 {
20320 /*Notify UMAC*/
20321 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20322 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020323
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020325}/*WDI_ProcessTxPerHitInd*/
20326
Jeff Johnson295189b2012-06-20 16:38:30 -070020327/**
Yue Ma365933a2013-08-14 15:59:08 -070020328 @brief Process Periodic Tx Pattern Fw Indication function
20329
20330 @param pWDICtx: pointer to the WLAN DAL context
20331 pEventData: pointer to the event information structure
20332
20333 @see
20334 @return Result of the function call
20335*/
20336WDI_Status
20337WDI_ProcessPeriodicTxPtrnFwInd
20338(
20339 WDI_ControlBlockType* pWDICtx,
20340 WDI_EventInfoType* pEventData
20341)
20342{
20343 WDI_LowLevelIndType wdiInd;
20344
20345 /*-------------------------------------------------------------------------
20346 Sanity check
20347 -------------------------------------------------------------------------*/
20348 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20349 (NULL == pEventData->pEventData))
20350 {
20351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20352 "%s: Invalid parameters", __func__);
20353 WDI_ASSERT(0);
20354 return WDI_STATUS_E_FAILURE;
20355 }
20356
20357 /*-------------------------------------------------------------------------
20358 Extract indication and send it to UMAC
20359 -------------------------------------------------------------------------*/
20360 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20361 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20362 sizeof(tHalPeriodicTxPtrnFwInd));
20363
20364 if (pWDICtx->wdiLowLevelIndCB)
20365 {
20366 /*Notify UMAC*/
20367 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20368 }
20369
20370 return WDI_STATUS_SUCCESS;
20371}
20372
20373/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 @brief WDI_ProcessFTMCommandReq
20375 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020376
20377 @param pWDICtx: pointer to the WLAN DAL context
20378 pEventData: pointer to the event information structure
20379
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 @see
20381 @return Result of the function call
20382*/
20383WDI_Status
20384WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020385(
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_ControlBlockType* pWDICtx,
20387 WDI_EventInfoType* pEventData
20388)
20389{
20390 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20391 wpt_uint8 *ftmCommandBuffer = NULL;
20392 wpt_uint16 dataOffset;
20393 wpt_uint16 bufferSize;
20394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 -------------------------------------------------------------------------*/
20397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20398 ( NULL == pEventData->pEventData))
20399
20400 {
20401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 }
20406
20407 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20408
20409 /* Get MSG Buffer */
20410 WDI_GetMessageBuffer(pWDICtx,
20411 WDI_FTM_CMD_REQ,
20412 ftmCommandReq->bodyLength,
20413 &ftmCommandBuffer,
20414 &dataOffset,
20415 &bufferSize);
20416
20417 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20418 ftmCommandReq->FTMCommandBody,
20419 ftmCommandReq->bodyLength);
20420
20421 /* Send MSG */
20422 return WDI_SendMsg(pWDICtx,
20423 ftmCommandBuffer,
20424 bufferSize,
20425 pEventData->pCBfnc,
20426 pEventData->pUserData,
20427 WDI_FTM_CMD_RESP);
20428}
20429
20430/**
20431 @brief WDI_ProcessFTMCommandRsp
20432 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020433
20434 @param pWDICtx: pointer to the WLAN DAL context
20435 pEventData: pointer to the event information structure
20436
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 @see
20438 @return Result of the function call
20439*/
20440WDI_Status
20441WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020442(
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 WDI_ControlBlockType* pWDICtx,
20444 WDI_EventInfoType* pEventData
20445)
20446{
20447 WDI_FTMCommandRspCb ftmCMDRspCb;
20448 tProcessPttRspParams *ftmCMDRspData = NULL;
20449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20450
20451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 -------------------------------------------------------------------------*/
20454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20455 ( NULL == pEventData->pEventData))
20456 {
20457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 }
20462
20463 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20464
20465 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20466
Jeff Johnsone7245742012-09-05 17:12:55 -070020467 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20468 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20470
20471 /*Notify UMAC*/
20472 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20473
Jeff Johnsone7245742012-09-05 17:12:55 -070020474 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020475}
Jeff Johnson295189b2012-06-20 16:38:30 -070020476/**
20477 @brief WDI_ProcessHalDumpCmdReq
20478 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020479
20480 @param pWDICtx: pointer to the WLAN DAL context
20481 pEventData: pointer to the event information structure
20482
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 @see
20484 @return Result of the function call
20485*/
20486WDI_Status
20487WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020488(
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 WDI_ControlBlockType* pWDICtx,
20490 WDI_EventInfoType* pEventData
20491)
20492{
20493 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20494 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20495 wpt_uint16 usDataOffset = 0;
20496 wpt_uint16 usSendSize = 0;
20497 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020498 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020499
20500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 -------------------------------------------------------------------------*/
20503 if (( NULL == pEventData ) ||
20504 ( NULL == pEventData->pEventData) ||
20505 ( NULL == pEventData->pCBfnc ))
20506 {
20507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 }
20512
20513 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20514 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20515
20516 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020527
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 /*-----------------------------------------------------------------------
20529 Get message buffer
20530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20533 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20536 {
20537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20538 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20539 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 }
20543
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 wpalMemoryCopy( pSendBuffer+usDataOffset,
20545 &halDumpCmdReqMsg.dumpCmdReqParams,
20546 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020547
20548 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020549 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020550
20551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020552 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20555 wdiHALDumpCmdRspCb, pEventData->pUserData,
20556 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020557}
20558
20559/**
20560 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020561 Process hal Dump Command Response from HAL, simply route to HDD
20562
20563 @param pWDICtx: pointer to the WLAN DAL context
20564 pEventData: pointer to the event information structure
20565
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 @see
20567 @return Result of the function call
20568*/
20569WDI_Status
20570WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020571(
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 WDI_ControlBlockType* pWDICtx,
20573 WDI_EventInfoType* pEventData
20574)
20575{
20576 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020577 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20579
20580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 -------------------------------------------------------------------------*/
20583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20584 ( NULL == pEventData->pEventData))
20585 {
20586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 }
20591
Jeff Johnsone7245742012-09-05 17:12:55 -070020592 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020593
20594 /*Initialize the WDI Response structure */
20595 wdiHALDumpCmdRsp.usBufferLen = 0;
20596 wdiHALDumpCmdRsp.pBuffer = NULL;
20597
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020598 wpalMemoryCopy( &halDumpCmdRspParams,
20599 pEventData->pEventData,
20600 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020601
20602 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020603 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020604
20605 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020606 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 {
20608 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020609 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20610 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20611
20612 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20613 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020614 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020616
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 /*Notify UMAC*/
20618 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20619
20620 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20621 {
20622 /* Free the allocated buffer */
20623 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20624 }
20625 return WDI_STATUS_SUCCESS;
20626}
20627
20628/*==========================================================================
20629 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020630
Jeff Johnson295189b2012-06-20 16:38:30 -070020631 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020633==========================================================================*/
20634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 when it wishes to send up a notification like the ones
20637 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020638
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020640
20641 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 wctsNotifyCBData: the callback data of the user
20644
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020646
20647 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020648*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020649void
Jeff Johnson295189b2012-06-20 16:38:30 -070020650WDI_NotifyMsgCTSCB
20651(
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 WCTS_NotifyEventType wctsEvent,
20654 void* wctsNotifyCBData
20655)
20656{
Jeff Johnsone7245742012-09-05 17:12:55 -070020657 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20659
20660 if (NULL == pWDICtx )
20661 {
20662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 }
20667
20668 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20669 {
20670 /* callback presumably occurred after close */
20671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020672 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 }
20675
20676 if ( WCTS_EVENT_OPEN == wctsEvent )
20677 {
20678 /*Flag must be set atomically as it is checked from incoming request
20679 functions*/
20680 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020682
20683 /*Nothing to do - so try to dequeue any pending request that may have
20684 occurred while we were trying to establish this*/
20685 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 {
20690 /*Flag must be set atomically as it is checked from incoming request
20691 functions*/
20692 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020694
20695 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 wpalMutexRelease(&pWDICtx->wptMutex);
20698
20699 /*Notify that the Control Channel is closed */
20700 wpalEventSet(&pWDICtx->wctsActionEvent);
20701 }
20702
20703}/*WDI_NotifyMsgCTSCB*/
20704
20705
20706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 when it wishes to send up a packet received over the
20709 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020710
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020712
20713 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 pMsg: the packet
20715 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020716 wctsRxMsgCBData: the callback data of the user
20717
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020719
20720 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020721*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020722void
20723WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020724(
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 void* pMsg,
20727 wpt_uint32 uLen,
20728 void* wctsRxMsgCBData
20729)
20730{
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 tHalMsgHeader *pHalMsgHeader;
20732 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20735
20736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020740 ( uLen < sizeof(tHalMsgHeader)))
20741 {
20742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 }
20747
20748 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20749 {
20750 /* callback presumably occurred after close */
20751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020752 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 }
20755
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 context - so no serialization is necessary here
20758 ! - revisit this assumption */
20759
20760 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20761
20762 if ( uLen != pHalMsgHeader->msgLen )
20763 {
20764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20765 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020766 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20767 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 }
20769
20770 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20771
20772 /*The message itself starts after the header*/
20773 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20774 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20775 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20776 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20777
20778
20779 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20780 {
20781 /*Stop the timer as the response was received */
20782 /*!UT - check for potential race conditions between stop and response */
20783 wpalTimerStop(&pWDICtx->wptResponseTimer);
20784 }
20785 /* Check if we receive a response message which is not expected */
20786 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20787 {
20788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20789 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20790 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20793 pWDICtx->wdiExpectedResponse);
20794 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa17ef2a62013-08-29 15:27:56 -070020795 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 return;
20797 }
20798
20799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20800 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20801
20802 /*Post response event to the state machine*/
20803 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20804
20805}/*WDI_RXMsgCTSCB*/
20806
20807
20808/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020809 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020810========================================================================*/
20811
20812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020815
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 @param pWDICtx - pointer to the control block
20817
20818 @return Result of the function call
20819*/
20820WPT_INLINE WDI_Status
20821WDI_CleanCB
20822(
20823 WDI_ControlBlockType* pWDICtx
20824)
20825{
20826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20827
20828 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020830
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20833 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20834
20835 WDI_ResetAssocSessions( pWDICtx );
20836
20837 return WDI_STATUS_SUCCESS;
20838}/*WDI_CleanCB*/
20839
20840
20841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020843
Jeff Johnsone7245742012-09-05 17:12:55 -070020844
20845 @param pWDICtx: pointer to the WLAN DAL context
20846 pEventData: pointer to the event information structure
20847
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 @see
20849 @return Result of the function call
20850*/
20851WPT_INLINE WDI_Status
20852WDI_ProcessRequest
20853(
20854 WDI_ControlBlockType* pWDICtx,
20855 WDI_EventInfoType* pEventData
20856)
20857{
20858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20859
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 already checked these pointers*/
20862
20863 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20864 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20867 "Calling request processing function for req %s (%d) %x",
20868 WDI_getReqMsgString(pEventData->wdiRequest),
20869 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20870 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20871 }
20872 else
20873 {
20874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 pEventData->wdiRequest);
20877 return WDI_STATUS_E_NOT_IMPLEMENT;
20878 }
20879}/*WDI_ProcessRequest*/
20880
20881
20882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020885 prefixes it with a send message header
20886
20887 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 wdiReqType: type of the request being sent
20889 uBufferLen: message buffer len
20890 pMsgBuffer: resulting allocated buffer
20891 pusDataOffset: offset in the buffer where the caller
20892 can start copying its message data
20893 puBufferSize: the resulting buffer size (offset+buff
20894 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020895
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 @see
20897 @return Result of the function call
20898*/
20899WDI_Status
20900WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020901(
20902 WDI_ControlBlockType* pWDICtx,
20903 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 wpt_uint8** pMsgBuffer,
20906 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 wpt_uint16* pusBufferSize
20908)
20909{
20910 tHalMsgHeader halMsgHeader;
20911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20912
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 again*/
20915
20916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20921 if ( NULL == *pMsgBuffer )
20922 {
20923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20924 "Unable to allocate message buffer for req %s (%d)",
20925 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 }
20930
20931 /*-------------------------------------------------------------------------
20932 Fill in the message header
20933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20935 /* Fill msgVersion */
20936#ifdef WLAN_FEATURE_11AC
20937 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020938 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 else
20940#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020941 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020942
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20944 *pusDataOffset = sizeof(halMsgHeader);
20945 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20946
20947 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948}/*WDI_GetMessageBuffer*/
20949
20950
20951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 the CB
20955
20956 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020958
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 usSendSize size of the buffer to be sent
20960 pRspCb: response callback - save in the WDI
20961 CB
20962 pUserData: user data associated with the
20963 callback
20964 wdiExpectedResponse: the code of the response that is
20965 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020966
Jeff Johnson295189b2012-06-20 16:38:30 -070020967 @see
20968 @return Result of the function call
20969*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020971WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020972(
20973 WDI_ControlBlockType* pWDICtx,
20974 wpt_uint8* pSendBuffer,
20975 wpt_uint32 usSendSize,
20976 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 void* pUserData,
20978 WDI_ResponseEnumType wdiExpectedResponse
20979)
20980{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020981 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020982 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20984
20985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 ------------------------------------------------------------------------*/
20988 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 pWDICtx->pfncRspCB = pRspCb;
20990 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020991
20992 /*-----------------------------------------------------------------------
20993 Call the CTS to send this message over - free message afterwards
20994 - notify transport failure
20995 Note: CTS is reponsible for freeing the message buffer.
20996 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020997 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20998 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20999 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 "Failed to send message over the bus - catastrophic failure");
21003
Jeff Johnsond13512a2012-07-17 11:42:19 -070021004 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021006 else
21007 {
21008 /* even when message was placed in CTS deferred Q, we will treat it
21009 success but log this info
21010 */
21011 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21012 {
21013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21014 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21015 "response %s (%d)",
21016 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21017 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021018 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021019 }
21020 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021021
Jeff Johnsond13512a2012-07-17 11:42:19 -070021022 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 if ( NULL != pWDICtx->wdiReqStatusCB )
21024 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021025 /*Inform originator whether request went through or not*/
21026 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21027 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 pWDICtx->wdiReqStatusCB = NULL;
21029 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021030 callback(wdiStatus, callbackContext);
21031
21032 /*For WDI requests which have registered a request callback,
21033 inform the WDA caller of the same via setting the return value
21034 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21035 end up repeating the functonality in the req callback for the
21036 WDI_STATUS_E_FAILURE case*/
21037 if (wdiStatus == WDI_STATUS_E_FAILURE)
21038 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021039 }
21040
Jeff Johnsond13512a2012-07-17 11:42:19 -070021041 if ( wdiStatus == WDI_STATUS_SUCCESS )
21042 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 /*Start timer for the expected response */
21044 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021045
21046 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021047 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021048 }
21049 else
21050 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021051 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021052 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21053 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021054
Jeff Johnsond13512a2012-07-17 11:42:19 -070021055 return wdiStatus;
21056
Jeff Johnson295189b2012-06-20 16:38:30 -070021057}/*WDI_SendMsg*/
21058
21059
21060
21061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021062 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021063 the bus using the control transport and saves some info
21064 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021065
21066 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 pSendBuffer: buffer to be sent
21068 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021069
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 @see
21071 @return Result of the function call
21072*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021074WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021075(
21076 WDI_ControlBlockType* pWDICtx,
21077 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 wpt_uint32 usSendSize
21079)
21080{
21081 wpt_uint32 uStatus ;
21082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21083
21084 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021085 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 Note: CTS is reponsible for freeing the message buffer.
21087 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 (void*)pSendBuffer, usSendSize );
21090
21091 /*Inform Upper MAC about the outcome of the request*/
21092 if ( NULL != pWDICtx->wdiReqStatusCB )
21093 {
21094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21095 "Send indication status : %d", uStatus);
21096
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021097 /* even if CTS placed indication into its deferred Q, we treat it
21098 * as success and let CTS drain its queue as per smd interrupt to CTS
21099 */
21100 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 -070021101 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 }
21103
21104 /*If sending of the message failed - it is considered catastrophic and
21105 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021106 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21107 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21108
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 {
21110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021112
21113 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21114 return WDI_STATUS_E_FAILURE;
21115 }
21116
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118}/*WDI_SendIndication*/
21119
21120
21121/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021122 @brief WDI_DetectedDeviceError - called internally by DAL when
21123 it has detected a failure in the device
21124
21125 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 usErrorCode: error code detected by WDI or received
21127 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021128
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021131*/
21132void
21133WDI_DetectedDeviceError
21134(
21135 WDI_ControlBlockType* pWDICtx,
21136 wpt_uint16 usErrorCode
21137)
21138{
21139 WDI_LowLevelIndType wdiInd;
21140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21141
21142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21143 "Device Error detected code: %d - transitioning to stopped state",
21144 usErrorCode);
21145
21146 wpalMutexAcquire(&pWDICtx->wptMutex);
21147
21148 WDI_STATableStop(pWDICtx);
21149
21150 WDI_ResetAssocSessions(pWDICtx);
21151
21152 /*Set the expected state transition to stopped - because the device
21153 experienced a failure*/
21154 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21155
21156 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021158
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021160
21161 /*TO DO: - there should be an attempt to reset the device here*/
21162
21163 wpalMutexRelease(&pWDICtx->wptMutex);
21164
21165 /*------------------------------------------------------------------------
21166 Notify UMAC if a handler is registered
21167 ------------------------------------------------------------------------*/
21168 if (pWDICtx->wdiLowLevelIndCB)
21169 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21171 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172
21173 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21174 }
21175}/*WDI_DetectedDeviceError*/
21176
21177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 we started on send message has expire - this should
21180 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 reply - trigger catastrophic failure
21182 @param
21183
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021185
21186 @see
21187 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021188*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021189void
Jeff Johnson295189b2012-06-20 16:38:30 -070021190WDI_ResponseTimerCB
21191(
21192 void *pUserData
21193)
21194{
21195 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21197
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021198 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021199 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021203 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 }
21205
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021206 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021207 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021208
21209 /* If response timer is running at this time that means this timer
21210 * event is not for the last request but rather last-to-last request and
21211 * this timer event has come after we recevied respone for last-to-last
21212 * message
21213 */
21214 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21215 {
21216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21217 "WDI_ResponseTimerCB: timer in running state on timer event, "
21218 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21219 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21220 return;
21221 }
21222
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021223 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 {
21225
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021228 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021230 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21231 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021232
21233 /* WDI timeout means Riva is not responding or SMD communication to Riva
21234 * is not happening. The only possible way to recover from this error
21235 * is to initiate SSR from APPS.
21236 * There is also an option to re-enable wifi, which will eventually
21237 * trigger SSR
21238 */
21239 if (gWDICb.bEnableSSR == false)
21240 {
21241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21242 "SSR is not enabled on WDI timeout");
21243 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21244 return;
21245 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021246#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021247 wpalWcnssResetIntr();
21248 /* if this timer fires, it means Riva did not receive the FIQ */
21249 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021250#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021251 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21252 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021253#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 }
21255 else
21256 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021258 "Timeout occurred but not waiting for any response %d "
21259 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21260 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21261 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021262 }
21263
21264 return;
21265
21266}/*WDI_ResponseTimerCB*/
21267
21268
21269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021270 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021271
Jeff Johnsone7245742012-09-05 17:12:55 -070021272
21273 @param pWDICtx: pointer to the WLAN DAL context
21274 pEventData: pointer to the event information structure
21275
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 @see
21277 @return Result of the function call
21278*/
21279WPT_INLINE WDI_Status
21280WDI_ProcessResponse
21281(
21282 WDI_ControlBlockType* pWDICtx,
21283 WDI_EventInfoType* pEventData
21284)
21285{
21286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21287
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 already checked these pointers
21290 ! - revisit this assumption */
21291 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21292 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021293 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 WDI_getRespMsgString(pEventData->wdiResponse),
21297 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21298 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21299 }
21300 else
21301 {
21302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 pEventData->wdiResponse);
21305 return WDI_STATUS_E_NOT_IMPLEMENT;
21306 }
21307}/*WDI_ProcessResponse*/
21308
21309
21310/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021312=========================================================================*/
21313
21314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 @brief Utility function used by the DAL Core to help queue a
21316 request that cannot be processed right away.
21317 @param
21318
Jeff Johnson295189b2012-06-20 16:38:30 -070021319 pWDICtx: - pointer to the WDI control block
21320 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 queued
21322
21323 @see
21324 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021325*/
21326WDI_Status
21327WDI_QueuePendingReq
21328(
21329 WDI_ControlBlockType* pWDICtx,
21330 WDI_EventInfoType* pEventData
21331)
21332{
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21337
21338 if ( NULL == pEventDataQueue )
21339 {
21340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021341 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021342 WDI_ASSERT(0);
21343 return WDI_STATUS_MEM_FAILURE;
21344 }
21345
21346 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21347 pEventDataQueue->pUserData = pEventData->pUserData;
21348 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21349 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021351
21352 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21353 {
21354 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021355
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 if ( NULL == pEventInfo )
21357 {
21358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021360 WDI_ASSERT(0);
21361 wpalMemoryFree(pEventDataQueue);
21362 return WDI_STATUS_MEM_FAILURE;
21363 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021364
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21366
21367 }
21368 pEventDataQueue->pEventData = pEventInfo;
21369
21370 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021372
Jeff Johnsone7245742012-09-05 17:12:55 -070021373 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021374
21375 return WDI_STATUS_SUCCESS;
21376}/*WDI_QueuePendingReq*/
21377
21378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 @param
21382
21383 pMsg - pointer to the message
21384
21385 @see
21386 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021387*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021388void
Jeff Johnson295189b2012-06-20 16:38:30 -070021389WDI_PALCtrlMsgCB
21390(
21391 wpt_msg *pMsg
21392)
21393{
21394 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 WDI_ControlBlockType* pWDICtx = NULL;
21396 WDI_Status wdiStatus;
21397 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 void* pUserData;
21399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21400
21401 if (( NULL == pMsg )||
21402 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21403 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21404 {
21405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021406 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021408 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021409 }
21410
21411 /*Transition back to the state that we had before serialization
21412 - serialization transitions us to BUSY to stop any incomming requests
21413 ! TO DO L: possible race condition here if a request comes in between the
21414 state transition and the post function*/
21415
Jeff Johnsone7245742012-09-05 17:12:55 -070021416 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021417
21418 /*-----------------------------------------------------------------------
21419 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021420 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 -----------------------------------------------------------------------*/
21422 switch ( pEventData->wdiRequest )
21423 {
21424
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21427 break;
21428
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 case WDI_NV_DOWNLOAD_REQ:
21430 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21431 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21432 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21433 {
21434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021435 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21437 }
21438 else
21439 {
21440 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21441 }
21442
21443 break;
21444
21445 default:
21446 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21447 break;
21448 }/*switch ( pEventData->wdiRequest )*/
21449
21450 if ( WDI_STATUS_SUCCESS != wdiStatus )
21451 {
21452 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21453
21454 if ( NULL != pfnReqStatusCB )
21455 {
21456 /*Fail the request*/
21457 pfnReqStatusCB( wdiStatus, pUserData);
21458 }
21459 }
21460
21461 /* Free data - that was allocated when queueing*/
21462 if( pEventData != NULL )
21463 {
21464 if( pEventData->pEventData != NULL )
21465 {
21466 wpalMemoryFree(pEventData->pEventData);
21467 }
21468 wpalMemoryFree(pEventData);
21469 }
21470
21471 if( pMsg != NULL )
21472 {
21473 wpalMemoryFree(pMsg);
21474 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021475
Jeff Johnson295189b2012-06-20 16:38:30 -070021476}/*WDI_PALCtrlMsgCB*/
21477
21478/**
21479 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 and schedule for execution a pending request
21481 @param
21482
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 pWDICtx: - pointer to the WDI control block
21484 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 queued
21486
21487 @see
21488 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021489*/
21490WDI_Status
21491WDI_DequeuePendingReq
21492(
21493 WDI_ControlBlockType* pWDICtx
21494)
21495{
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21500
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021502
21503 if ( NULL == pNode )
21504 {
21505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021506 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021507 return WDI_STATUS_SUCCESS;
21508 }
21509
21510 /*The node actually points to the 1st element inside the Event Data struct -
21511 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021513
21514 /*Serialize processing in the control thread
21515 !TO DO: - check to see if these are all the messages params that need
21516 to be filled in*/
21517 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21518
21519 if ( NULL == palMsg )
21520 {
21521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 palMsg->callback = WDI_PALCtrlMsgCB;
21528 palMsg->ptr = pEventData;
21529
21530 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 palMsg->val = pWDICtx->uGlobalState;
21532
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 /*Transition back to BUSY as we need to handle a queued request*/
21534 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021535
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21537
21538 return WDI_STATUS_PENDING;
21539}/*WDI_DequeuePendingReq*/
21540
21541
21542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021543 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 away.- The assoc requests will be queued by BSSID
21546 @param
21547
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 pWDICtx: - pointer to the WDI control block
21549 pEventData: pointer to the evnt info that needs to be queued
21550 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021551
21552 @see
21553 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021554*/
21555WDI_Status
21556WDI_QueueNewAssocRequest
21557(
21558 WDI_ControlBlockType* pWDICtx,
21559 WDI_EventInfoType* pEventData,
21560 wpt_macAddr macBSSID
21561)
21562{
Jeff Johnsone7245742012-09-05 17:12:55 -070021563 wpt_uint8 i;
21564 WDI_BSSSessionType* pSession = NULL;
21565 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021566 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 void* pEventInfo;
21568 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021570
Jeff Johnsone7245742012-09-05 17:12:55 -070021571
21572 /*------------------------------------------------------------------------
21573 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 ------------------------------------------------------------------------*/
21575 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21576 {
21577 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21578 {
21579 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 pSession = &pWDICtx->aBSSSessions[i];
21581 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 }
21583 }
21584
21585 if ( i >= WDI_MAX_BSS_SESSIONS )
21586 {
21587 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021590
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 /*------------------------------------------------------------------------
21592 Fill in the BSSID for this session and set the usage flag
21593 ------------------------------------------------------------------------*/
21594 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021596
21597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021599 ------------------------------------------------------------------------*/
21600 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21601 if ( NULL == pEventDataQueue )
21602 {
21603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021604 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 WDI_ASSERT(0);
21606 return WDI_STATUS_MEM_FAILURE;
21607 }
21608
21609 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21610 if ( NULL == pSessionIdElement )
21611 {
21612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021613 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 WDI_ASSERT(0);
21615 wpalMemoryFree(pEventDataQueue);
21616 return WDI_STATUS_MEM_FAILURE;
21617 }
21618
21619 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21620 if ( NULL == pEventInfo )
21621 {
21622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021623 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 WDI_ASSERT(0);
21625 wpalMemoryFree(pSessionIdElement);
21626 wpalMemoryFree(pEventDataQueue);
21627 return WDI_STATUS_MEM_FAILURE;
21628 }
21629
21630 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21631 pEventDataQueue->pUserData = pEventData->pUserData;
21632 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21633 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021634 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021635
21636 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21637 pEventDataQueue->pEventData = pEventInfo;
21638
21639 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021641
21642 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021646
21647 /*We need to maintain a separate list that keeps track of the order in which
21648 the new assoc requests are being queued such that we can start processing
21649 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 pSessionIdElement->ucIndex = i;
21651 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021652
21653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21654 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021655 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021656
21657 /*Return pending as this is what the status of the request is since it has
21658 been queued*/
21659 return WDI_STATUS_PENDING;
21660}/*WDI_QueueNewAssocRequest*/
21661
21662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 away.- The assoc requests will be queued by BSSID
21666 @param
21667
Jeff Johnson295189b2012-06-20 16:38:30 -070021668 pWDICtx: - pointer to the WDI control block
21669 pSession: - session in which to queue
21670 pEventData: pointer to the event info that needs to be
21671 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021672
21673 @see
21674 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021675*/
21676WDI_Status
21677WDI_QueueAssocRequest
21678(
21679 WDI_ControlBlockType* pWDICtx,
21680 WDI_BSSSessionType* pSession,
21681 WDI_EventInfoType* pEventData
21682)
21683{
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021688
21689 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 Sanity check
21691 ------------------------------------------------------------------------*/
21692 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21693 {
21694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021696
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 }
21699
21700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 ------------------------------------------------------------------------*/
21703 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21704 if ( NULL == pEventDataQueue )
21705 {
21706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021707 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 WDI_ASSERT(0);
21709 return WDI_STATUS_MEM_FAILURE;
21710 }
21711
21712 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21713 if ( NULL == pEventInfo )
21714 {
21715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21716 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021717 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 WDI_ASSERT(0);
21719 wpalMemoryFree(pEventDataQueue);
21720 return WDI_STATUS_MEM_FAILURE;
21721 }
21722
21723 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21724 pEventDataQueue->pUserData = pEventData->pUserData;
21725 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21726 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021727 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 pEventDataQueue->pEventData = pEventInfo;
21729
21730 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21731
21732 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021733 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021734
21735 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021739
21740 /*The result of this operation is pending because the request has been
21741 queued and it will be processed at a later moment in time */
21742 return WDI_STATUS_PENDING;
21743}/*WDI_QueueAssocRequest*/
21744
21745/**
21746 @brief Utility function used by the DAL Core to help dequeue
21747 an association request that was pending
21748 The request will be queued up in front of the main
21749 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021750 @param
21751
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021753
21754
21755 @see
21756 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021757*/
21758WDI_Status
21759WDI_DequeueAssocRequest
21760(
21761 WDI_ControlBlockType* pWDICtx
21762)
21763{
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 wpt_list_node* pNode = NULL;
21765 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 WDI_BSSSessionType* pSession;
21767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021768
21769 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 Sanity check
21771 ------------------------------------------------------------------------*/
21772 if ( NULL == pWDICtx )
21773 {
21774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021776
Jeff Johnsone7245742012-09-05 17:12:55 -070021777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 }
21779
21780 /*------------------------------------------------------------------------
21781 An association has been completed => a new association can occur
21782 Check to see if there are any pending associations ->
21783 If so , transfer all the pending requests into the busy queue for
21784 processing
21785 These requests have arrived prior to the requests in the busy queue
21786 (bc they needed to be processed in order to be placed in this queue)
21787 => they will be placed at the front of the busy queue
21788 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021789 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021790
21791 if ( NULL == pNode )
21792 {
21793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021794 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021795 return WDI_STATUS_SUCCESS;
21796 }
21797
21798 /*The node actually points to the 1st element inside the Session Id struct -
21799 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021800 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021801
21802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21803 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21804
21805 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21806 {
21807 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021808
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 the front of the main waiting queue for subsequent execution*/
21811 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 while ( NULL != pNode )
21813 {
21814 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21816 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 }
21820 else
21821 {
21822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021823 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021824 WPAL_ASSERT(0);
21825 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021828
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21830 wpalMemoryFree(pSessionIdElement);
21831 return WDI_STATUS_SUCCESS;
21832}/*WDI_DequeueAssocRequest*/
21833
21834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 pending requests - all req cb will be called with
21837 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 @param
21839
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021841
21842 @see
21843 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021844*/
21845WDI_Status
21846WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021847(
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 WDI_ControlBlockType* pWDICtx
21849)
21850{
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 void* pUserData;
21855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21856
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021858
21859 /*------------------------------------------------------------------------
21860 Go through all the requests and fail them - this will only be called
21861 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021863 ------------------------------------------------------------------------*/
21864 while( pNode )
21865 {
21866 /*The node actually points to the 1st element inside the Event Data struct -
21867 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021868 pEventDataQueue = (WDI_EventInfoType*)pNode;
21869
Jeff Johnson295189b2012-06-20 16:38:30 -070021870 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21871 if ( NULL != pfnReqStatusCB )
21872 {
21873 /*Fail the request*/
21874 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21875 }
21876 /* Free data - that was allocated when queueing */
21877 if ( pEventDataQueue->pEventData != NULL )
21878 {
21879 wpalMemoryFree(pEventDataQueue->pEventData);
21880 }
21881 wpalMemoryFree(pEventDataQueue);
21882
21883 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21884 {
21885 break;
21886 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 }
21888
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 return WDI_STATUS_SUCCESS;
21890}/*WDI_ClearPendingRequests*/
21891
21892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021893 @brief Helper routine used to init the BSS Sessions in the WDI control block
21894
21895
21896 @param pWDICtx: pointer to the WLAN DAL context
21897
Jeff Johnson295189b2012-06-20 16:38:30 -070021898 @see
21899*/
21900void
21901WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021902(
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 WDI_ControlBlockType* pWDICtx
21904)
21905{
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21908
21909 /*-------------------------------------------------------------------------
21910 No Sanity check
21911 -------------------------------------------------------------------------*/
21912 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21913 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21916 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21917 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21918 }
21919}/*WDI_ResetAssocSessions*/
21920
21921/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 @brief Helper routine used to find a session based on the BSSID
21923
21924
21925 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021926 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021927 pSession: pointer to the session (if found)
21928
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021931*/
21932wpt_uint8
21933WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021934(
Jeff Johnson295189b2012-06-20 16:38:30 -070021935 WDI_ControlBlockType* pWDICtx,
21936 wpt_macAddr macBSSID,
21937 WDI_BSSSessionType** ppSession
21938)
21939{
Jeff Johnsone7245742012-09-05 17:12:55 -070021940 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21942
21943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 -------------------------------------------------------------------------*/
21946 if ( NULL == ppSession )
21947 {
21948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021949 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021950 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 }
21952
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021954
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 /*------------------------------------------------------------------------
21956 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 ------------------------------------------------------------------------*/
21958 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21959 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021960 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21961 (eWLAN_PAL_TRUE ==
21962 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21963 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 {
21965 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 return i;
21968 }
21969 }
21970
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972}/*WDI_FindAssocSession*/
21973
21974/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 @brief Helper routine used to find a session based on the BSSID
21976
21977
21978 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 ucBSSIdx: BSS Index of the session
21980 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021981
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021983 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021984*/
21985wpt_uint8
21986WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021987(
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 WDI_ControlBlockType* pWDICtx,
21989 wpt_uint16 ucBSSIdx,
21990 WDI_BSSSessionType** ppSession
21991)
21992{
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21995
21996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021998 -------------------------------------------------------------------------*/
21999 if ( NULL == ppSession )
22000 {
22001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022002 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 }
22005
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022007
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 /*------------------------------------------------------------------------
22009 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 ------------------------------------------------------------------------*/
22011 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22012 {
22013 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22014 {
22015 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 return i;
22018 }
22019 }
22020
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022022}/*WDI_FindAssocSessionByBSSIdx*/
22023
22024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 @brief Helper routine used to find a session based on the BSSID
22026
22027
22028 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 ucBSSIdx: BSS Index of the session
22030 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022031
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022034*/
22035wpt_uint8
22036WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022037(
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 WDI_ControlBlockType* pWDICtx,
22039 wpt_uint16 usIdx,
22040 WDI_BSSSessionType** ppSession
22041)
22042{
22043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22044
22045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 -------------------------------------------------------------------------*/
22048 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22049 {
22050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022051 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 }
22054
22055 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022056 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022057
22058 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022059
Jeff Johnson295189b2012-06-20 16:38:30 -070022060}/*WDI_FindAssocSessionByBSSIdx*/
22061
22062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022065
22066
22067 @param pWDICtx: pointer to the WLAN DAL context
22068 pSession: pointer to the session (if found)
22069
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022072*/
22073wpt_uint8
22074WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022075(
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 WDI_ControlBlockType* pWDICtx,
22077 WDI_BSSSessionType** ppSession
22078)
22079{
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 -------------------------------------------------------------------------*/
22085 if ( NULL == ppSession )
22086 {
22087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022088 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 }
22091
Jeff Johnsone7245742012-09-05 17:12:55 -070022092 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022093
Jeff Johnsone7245742012-09-05 17:12:55 -070022094 /*------------------------------------------------------------------------
22095 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 ------------------------------------------------------------------------*/
22097 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22098 {
22099 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22100 {
22101 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 return i;
22104 }
22105 }
22106
Jeff Johnsone7245742012-09-05 17:12:55 -070022107 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022108}/*WDI_FindEmptySession*/
22109
22110
22111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022112 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022114
22115
22116 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022117 macBSSID: pointer to BSSID. If NULL, get all the session.
22118 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22119 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22120 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 @see
22122 @return Number of sessions in use
22123*/
22124wpt_uint8
22125WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022126(
Hoonki Lee26599972013-04-24 01:21:58 -070022127 WDI_ControlBlockType* pWDICtx,
22128 wpt_macAddr macBSSID,
22129 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022130)
22131{
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022134
22135 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 Count all sessions in use
22137 ------------------------------------------------------------------------*/
22138 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22139 {
Hoonki Lee26599972013-04-24 01:21:58 -070022140 if ( macBSSID && skipBSSID &&
22141 (eWLAN_PAL_TRUE ==
22142 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22143 WDI_MAC_ADDR_LEN)))
22144 {
22145 continue;
22146 }
22147 else if ( pWDICtx->aBSSSessions[i].bInUse )
22148 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022150 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 }
22152
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022154}/*WDI_GetActiveSessionsCount*/
22155
22156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022157 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022159
22160
22161 @param pWDICtx: pointer to the WLAN DAL context
22162 pSession: pointer to the session (if found)
22163
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022166*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022167void
Jeff Johnson295189b2012-06-20 16:38:30 -070022168WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022169(
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 WDI_ControlBlockType* pWDICtx,
22171 WDI_BSSSessionType* ppSession
22172)
22173{
22174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 -------------------------------------------------------------------------*/
22177 if ( NULL == ppSession )
22178 {
22179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022180 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 }
22183
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 /*------------------------------------------------------------------------
22185 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 ------------------------------------------------------------------------*/
22187 wpal_list_destroy(&ppSession->wptPendingQueue);
22188 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22190 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22192 wpal_list_init(&ppSession->wptPendingQueue);
22193
22194}/*WDI_DeleteSession*/
22195
22196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 @param
22200
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 WDI_AddStaParams: - pointer to the WDI Add STA params
22202 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022203
22204 @see
22205 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022206*/
22207void
22208WDI_AddBcastSTAtoSTATable
22209(
22210 WDI_ControlBlockType* pWDICtx,
22211 WDI_AddStaParams * staParams,
22212 wpt_uint16 usBcastStaIdx
22213)
22214{
22215 WDI_AddStaParams wdiAddSTAParam = {0};
22216 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22218
22219 /*---------------------------------------------------------------------
22220 Sanity check
22221 ---------------------------------------------------------------------*/
22222 if ( NULL == staParams )
22223 {
22224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022226
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022228 }
22229
22230 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22231 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22232 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22233 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22234 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22235 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22236 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22237 WDI_MAC_ADDR_LEN );
22238 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22239 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22240 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22241 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22242 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22243 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22244 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022245
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22247}
22248
22249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 @brief NV blob will be divided into fragments of size 4kb and
22251 Sent to HAL
22252
22253 @param pWDICtx: pointer to the WLAN DAL context
22254 pEventData: pointer to the event information structure
22255
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 @see
22257 @return Result of the function call
22258 */
22259
22260WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022261(
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 WDI_ControlBlockType* pWDICtx,
22263 WDI_EventInfoType* pEventData
22264)
22265{
22266
22267 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22268 wpt_uint8* pSendBuffer = NULL;
22269 wpt_uint16 usDataOffset = 0;
22270 wpt_uint16 usSendSize = 0;
22271 wpt_uint16 usCurrentFragmentSize =0;
22272 wpt_uint8* pSrcBuffer = NULL;
22273 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22274 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22275
22276 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22277 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22278 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22279
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22282
22283 /* Update the current Fragment Number */
22284 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22285
22286 /*Update the HAL REQ structure */
22287 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22288 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22289 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22290
22291 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 image will be sent to HAL*/
22294
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22301 usCurrentFragmentSize = FRAGMENT_SIZE;
22302
22303 /*Update the HAL REQ structure */
22304 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22305 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22306
22307 }
22308 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 usCurrentFragmentSize = FRAGMENT_SIZE;
22311
22312 /*Update the HAL REQ structure */
22313 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22314 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22315 }
22316
22317 /*-----------------------------------------------------------------------
22318 Get message buffer
22319 -----------------------------------------------------------------------*/
22320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22321 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22322 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22325 {
22326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22327 "Unable to get send buffer in NV Download req %x %x ",
22328 pEventData, pwdiNvDownloadReqParams);
22329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 }
22332
22333 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22336
22337 /* Appending the NV image fragment */
22338 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22339 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22340 usCurrentFragmentSize);
22341
22342 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022344
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22346 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022347 WDI_NV_DOWNLOAD_RESP);
22348
22349}
Jeff Johnsone7245742012-09-05 17:12:55 -070022350/*============================================================================
22351 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 ============================================================================*/
22353/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022354 @brief Helper routine used to find a session based on the BSSID
22355 @param pContext: pointer to the WLAN DAL context
22356 @param pDPContext: pointer to the Datapath context
22357
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022360*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022361WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022362WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22363{
22364 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22365
22366 pCB->pDPContext = pDPContext;
22367 return;
22368}
22369
22370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 @brief Helper routine used to find a session based on the BSSID
22372
22373
22374 @param pContext: pointer to the WLAN DAL context
22375
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 @see
22377 @return pointer to Datapath context
22378*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022379WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022380WDI_DS_GetDatapathContext (void *pContext)
22381{
22382 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22383 return pCB->pDPContext;
22384}
22385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 @brief Helper routine used to find a session based on the BSSID
22387
22388
22389 @param pContext: pointer to the WLAN DAL context
22390 @param pDTDriverContext: pointer to the Transport Driver context
22391
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 @see
22393 @return void
22394*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022395WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022396WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22397{
22398 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22399
22400 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402}
22403
22404/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 @brief Helper routine used to find a session based on the BSSID
22406
22407
22408 @param pWDICtx: pointer to the WLAN DAL context
22409
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022412*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022413WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022414WDT_GetTransportDriverContext (void *pContext)
22415{
22416 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022418}
22419
Jeff Johnsone7245742012-09-05 17:12:55 -070022420/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 Helper inline converters
22422 ============================================================================*/
22423/*Convert WDI driver type into HAL driver type*/
22424WPT_STATIC WPT_INLINE WDI_Status
22425WDI_HAL_2_WDI_STATUS
22426(
22427 eHalStatus halStatus
22428)
22429{
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022431 the chances of getting inlined*/
22432 switch( halStatus )
22433 {
22434 case eHAL_STATUS_SUCCESS:
22435 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22436 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22437 return WDI_STATUS_SUCCESS;
22438 case eHAL_STATUS_FAILURE:
22439 return WDI_STATUS_E_FAILURE;
22440 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 return WDI_STATUS_MEM_FAILURE;
22442 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 default:
22445 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22446 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022447
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449}/*WDI_HAL_2_WDI_STATUS*/
22450
22451/*Convert WDI request type into HAL request type*/
22452WPT_STATIC WPT_INLINE tHalHostMsgType
22453WDI_2_HAL_REQ_TYPE
22454(
22455 WDI_RequestEnumType wdiReqType
22456)
22457{
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 the chances of getting inlined*/
22460 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022465 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022495 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 return WLAN_HAL_RMV_STAKEY_REQ;
22497 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022501 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 case WDI_DEL_BA_REQ:
22506 return WLAN_HAL_DEL_BA_REQ;
22507#ifdef FEATURE_WLAN_CCX
22508 case WDI_TSM_STATS_REQ:
22509 return WLAN_HAL_TSM_STATS_REQ;
22510#endif
22511 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022513 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 case WDI_ADD_BA_SESSION_REQ:
22522 return WLAN_HAL_ADD_BA_SESSION_REQ;
22523 case WDI_TRIGGER_BA_REQ:
22524 return WLAN_HAL_TRIGGER_BA_REQ;
22525 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22530 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22531 case WDI_SET_MAX_TX_POWER_REQ:
22532 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022533 case WDI_SET_TX_POWER_REQ:
22534 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22536 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022537#ifdef FEATURE_WLAN_TDLS
22538 case WDI_TDLS_LINK_ESTABLISH_REQ:
22539 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22540#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022554 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 case WDI_REM_BEACON_FILTER_REQ:
22562 return WLAN_HAL_REM_BCN_FILTER_REQ;
22563 case WDI_SET_RSSI_THRESHOLDS_REQ:
22564 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22565 case WDI_HOST_OFFLOAD_REQ:
22566 return WLAN_HAL_HOST_OFFLOAD_REQ;
22567 case WDI_WOWL_ADD_BC_PTRN_REQ:
22568 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22569 case WDI_WOWL_DEL_BC_PTRN_REQ:
22570 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22571 case WDI_WOWL_ENTER_REQ:
22572 return WLAN_HAL_ENTER_WOWL_REQ;
22573 case WDI_WOWL_EXIT_REQ:
22574 return WLAN_HAL_EXIT_WOWL_REQ;
22575 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22576 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22577 case WDI_NV_DOWNLOAD_REQ:
22578 return WLAN_HAL_DOWNLOAD_NV_REQ;
22579 case WDI_FLUSH_AC_REQ:
22580 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22581 case WDI_BTAMP_EVENT_REQ:
22582 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22583#ifdef WLAN_FEATURE_VOWIFI_11R
22584 case WDI_AGGR_ADD_TS_REQ:
22585 return WLAN_HAL_AGGR_ADD_TS_REQ;
22586#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022587 case WDI_FTM_CMD_REQ:
22588 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022589 case WDI_ADD_STA_SELF_REQ:
22590 return WLAN_HAL_ADD_STA_SELF_REQ;
22591 case WDI_DEL_STA_SELF_REQ:
22592 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022593#ifdef FEATURE_OEM_DATA_SUPPORT
22594 case WDI_START_OEM_DATA_REQ:
22595 return WLAN_HAL_START_OEM_DATA_REQ;
22596#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 case WDI_HOST_RESUME_REQ:
22598 return WLAN_HAL_HOST_RESUME_REQ;
22599 case WDI_HOST_SUSPEND_IND:
22600 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022601 case WDI_TRAFFIC_STATS_IND:
22602 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022603#ifdef WLAN_FEATURE_11W
22604 case WDI_EXCLUDE_UNENCRYPTED_IND:
22605 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22606#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022607 case WDI_KEEP_ALIVE_REQ:
22608 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022609#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022610 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22611 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022612#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022613#ifdef FEATURE_WLAN_SCAN_PNO
22614 case WDI_SET_PREF_NETWORK_REQ:
22615 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22616 case WDI_SET_RSSI_FILTER_REQ:
22617 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22618 case WDI_UPDATE_SCAN_PARAMS_REQ:
22619 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22620#endif // FEATURE_WLAN_SCAN_PNO
22621 case WDI_SET_TX_PER_TRACKING_REQ:
22622 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22623#ifdef WLAN_FEATURE_PACKET_FILTERING
22624 case WDI_8023_MULTICAST_LIST_REQ:
22625 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22626 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22629 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22630 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22631 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22632#endif // WLAN_FEATURE_PACKET_FILTERING
22633 case WDI_HAL_DUMP_CMD_REQ:
22634 return WLAN_HAL_DUMP_COMMAND_REQ;
22635#ifdef WLAN_FEATURE_GTK_OFFLOAD
22636 case WDI_GTK_OFFLOAD_REQ:
22637 return WLAN_HAL_GTK_OFFLOAD_REQ;
22638 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22639 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22640#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22641
22642 case WDI_INIT_SCAN_CON_REQ:
22643 return WLAN_HAL_INIT_SCAN_CON_REQ;
22644 case WDI_SET_POWER_PARAMS_REQ:
22645 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22646 case WDI_SET_TM_LEVEL_REQ:
22647 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22648 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22649 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022650#ifdef WLAN_FEATURE_11AC
22651 case WDI_UPDATE_VHT_OP_MODE_REQ:
22652 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22653#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022654 case WDI_GET_ROAM_RSSI_REQ:
22655 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022656 case WDI_DHCP_START_IND:
22657 return WLAN_HAL_DHCP_START_IND;
22658 case WDI_DHCP_STOP_IND:
22659 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022660#ifdef FEATURE_WLAN_LPHB
22661 case WDI_LPHB_CFG_REQ:
22662 return WLAN_HAL_LPHB_CFG_REQ;
22663#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022664 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22665 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22666 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22667 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22668
Rajeev3db91f12013-10-05 11:03:42 +053022669#ifdef FEATURE_WLAN_BATCH_SCAN
22670 case WDI_SET_BATCH_SCAN_REQ:
22671 return WLAN_HAL_BATCHSCAN_SET_REQ;
22672 case WDI_STOP_BATCH_SCAN_IND:
22673 return WLAN_HAL_BATCHSCAN_STOP_IND;
22674 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22675 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22676#endif
22677
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022681
Jeff Johnson295189b2012-06-20 16:38:30 -070022682}/*WDI_2_HAL_REQ_TYPE*/
22683
22684/*Convert WDI response type into HAL response type*/
22685WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22686HAL_2_WDI_RSP_TYPE
22687(
22688 tHalHostMsgType halMsg
22689)
22690{
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 the chances of getting inlined*/
22693 switch( halMsg )
22694 {
22695 case WLAN_HAL_START_RSP:
22696 return WDI_START_RESP;
22697 case WLAN_HAL_STOP_RSP:
22698 return WDI_STOP_RESP;
22699 case WLAN_HAL_INIT_SCAN_RSP:
22700 return WDI_INIT_SCAN_RESP;
22701 case WLAN_HAL_START_SCAN_RSP:
22702 return WDI_START_SCAN_RESP;
22703 case WLAN_HAL_END_SCAN_RSP:
22704 return WDI_END_SCAN_RESP;
22705 case WLAN_HAL_FINISH_SCAN_RSP:
22706 return WDI_FINISH_SCAN_RESP;
22707 case WLAN_HAL_CONFIG_STA_RSP:
22708 return WDI_CONFIG_STA_RESP;
22709 case WLAN_HAL_DELETE_STA_RSP:
22710 return WDI_DEL_STA_RESP;
22711 case WLAN_HAL_CONFIG_BSS_RSP:
22712 return WDI_CONFIG_BSS_RESP;
22713 case WLAN_HAL_DELETE_BSS_RSP:
22714 return WDI_DEL_BSS_RESP;
22715 case WLAN_HAL_JOIN_RSP:
22716 return WDI_JOIN_RESP;
22717 case WLAN_HAL_POST_ASSOC_RSP:
22718 return WDI_POST_ASSOC_RESP;
22719 case WLAN_HAL_SET_BSSKEY_RSP:
22720 return WDI_SET_BSS_KEY_RESP;
22721 case WLAN_HAL_SET_STAKEY_RSP:
22722 return WDI_SET_STA_KEY_RESP;
22723 case WLAN_HAL_RMV_BSSKEY_RSP:
22724 return WDI_RMV_BSS_KEY_RESP;
22725 case WLAN_HAL_RMV_STAKEY_RSP:
22726 return WDI_RMV_STA_KEY_RESP;
22727 case WLAN_HAL_SET_BCASTKEY_RSP:
22728 return WDI_SET_STA_BCAST_KEY_RESP;
22729 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22730 // return WDI_RMV_STA_BCAST_KEY_RESP;
22731 case WLAN_HAL_ADD_TS_RSP:
22732 return WDI_ADD_TS_RESP;
22733 case WLAN_HAL_DEL_TS_RSP:
22734 return WDI_DEL_TS_RESP;
22735 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22736 return WDI_UPD_EDCA_PRMS_RESP;
22737 case WLAN_HAL_ADD_BA_RSP:
22738 return WDI_ADD_BA_RESP;
22739 case WLAN_HAL_DEL_BA_RSP:
22740 return WDI_DEL_BA_RESP;
22741#ifdef FEATURE_WLAN_CCX
22742 case WLAN_HAL_TSM_STATS_RSP:
22743 return WDI_TSM_STATS_RESP;
22744#endif
22745 case WLAN_HAL_CH_SWITCH_RSP:
22746 return WDI_CH_SWITCH_RESP;
22747 case WLAN_HAL_SET_LINK_ST_RSP:
22748 return WDI_SET_LINK_ST_RESP;
22749 case WLAN_HAL_GET_STATS_RSP:
22750 return WDI_GET_STATS_RESP;
22751 case WLAN_HAL_UPDATE_CFG_RSP:
22752 return WDI_UPDATE_CFG_RESP;
22753 case WLAN_HAL_ADD_BA_SESSION_RSP:
22754 return WDI_ADD_BA_SESSION_RESP;
22755 case WLAN_HAL_TRIGGER_BA_RSP:
22756 return WDI_TRIGGER_BA_RESP;
22757 case WLAN_HAL_UPDATE_BEACON_RSP:
22758 return WDI_UPD_BCON_PRMS_RESP;
22759 case WLAN_HAL_SEND_BEACON_RSP:
22760 return WDI_SND_BCON_RESP;
22761 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22762 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22763 /*Indications*/
22764 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22765 return WDI_HAL_RSSI_NOTIFICATION_IND;
22766 case WLAN_HAL_MISSED_BEACON_IND:
22767 return WDI_HAL_MISSED_BEACON_IND;
22768 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22769 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22770 case WLAN_HAL_MIC_FAILURE_IND:
22771 return WDI_HAL_MIC_FAILURE_IND;
22772 case WLAN_HAL_FATAL_ERROR_IND:
22773 return WDI_HAL_FATAL_ERROR_IND;
22774 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22775 return WDI_HAL_DEL_STA_IND;
22776 case WLAN_HAL_COEX_IND:
22777 return WDI_HAL_COEX_IND;
22778 case WLAN_HAL_OTA_TX_COMPL_IND:
22779 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 case WLAN_HAL_P2P_NOA_ATTR_IND:
22781 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022782 case WLAN_HAL_P2P_NOA_START_IND:
22783 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 case WLAN_HAL_TX_PER_HIT_IND:
22785 return WDI_HAL_TX_PER_HIT_IND;
22786 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22787 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022788 case WLAN_HAL_SET_TX_POWER_RSP:
22789 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 case WLAN_HAL_SET_P2P_GONOA_RSP:
22791 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022792#ifdef FEATURE_WLAN_TDLS
22793 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22794 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22795 case WLAN_HAL_TDLS_IND:
22796 return WDI_HAL_TDLS_IND;
22797#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022799 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022801 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022802 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022807 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022808 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22817 return WDI_SET_BEACON_FILTER_RESP;
22818 case WLAN_HAL_REM_BCN_FILTER_RSP:
22819 return WDI_REM_BEACON_FILTER_RESP;
22820 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22821 return WDI_SET_RSSI_THRESHOLDS_RESP;
22822 case WLAN_HAL_HOST_OFFLOAD_RSP:
22823 return WDI_HOST_OFFLOAD_RESP;
22824 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22825 return WDI_WOWL_ADD_BC_PTRN_RESP;
22826 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22827 return WDI_WOWL_DEL_BC_PTRN_RESP;
22828 case WLAN_HAL_ENTER_WOWL_RSP:
22829 return WDI_WOWL_ENTER_RESP;
22830 case WLAN_HAL_EXIT_WOWL_RSP:
22831 return WDI_WOWL_EXIT_RESP;
22832 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22833 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22834 case WLAN_HAL_DOWNLOAD_NV_RSP:
22835 return WDI_NV_DOWNLOAD_RESP;
22836 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22837 return WDI_FLUSH_AC_RESP;
22838 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22839 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 case WLAN_HAL_PROCESS_PTT_RSP:
22841 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 case WLAN_HAL_ADD_STA_SELF_RSP:
22843 return WDI_ADD_STA_SELF_RESP;
22844case WLAN_HAL_DEL_STA_SELF_RSP:
22845 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022846#ifdef FEATURE_OEM_DATA_SUPPORT
22847 case WLAN_HAL_START_OEM_DATA_RSP:
22848 return WDI_START_OEM_DATA_RESP;
22849#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022850 case WLAN_HAL_HOST_RESUME_RSP:
22851 return WDI_HOST_RESUME_RESP;
22852 case WLAN_HAL_KEEP_ALIVE_RSP:
22853 return WDI_KEEP_ALIVE_RESP;
22854#ifdef FEATURE_WLAN_SCAN_PNO
22855 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22856 return WDI_SET_PREF_NETWORK_RESP;
22857 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22860 return WDI_UPDATE_SCAN_PARAMS_RESP;
22861 case WLAN_HAL_PREF_NETW_FOUND_IND:
22862 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22863#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022864#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022865 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22866 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022867#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22869 return WDI_SET_TX_PER_TRACKING_RESP;
22870#ifdef WLAN_FEATURE_PACKET_FILTERING
22871 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22872 return WDI_8023_MULTICAST_LIST_RESP;
22873 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22874 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22875 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22876 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22877 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22878 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22879#endif // WLAN_FEATURE_PACKET_FILTERING
22880
22881 case WLAN_HAL_DUMP_COMMAND_RSP:
22882 return WDI_HAL_DUMP_CMD_RESP;
22883 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22884 return WDI_SET_POWER_PARAMS_RESP;
22885#ifdef WLAN_FEATURE_VOWIFI_11R
22886 case WLAN_HAL_AGGR_ADD_TS_RSP:
22887 return WDI_AGGR_ADD_TS_RESP;
22888#endif
22889
22890#ifdef WLAN_FEATURE_GTK_OFFLOAD
22891 case WLAN_HAL_GTK_OFFLOAD_RSP:
22892 return WDI_GTK_OFFLOAD_RESP;
22893 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22894 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22895#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22896#ifdef WLAN_WAKEUP_EVENTS
22897 case WLAN_HAL_WAKE_REASON_IND:
22898 return WDI_HAL_WAKE_REASON_IND;
22899#endif // WLAN_WAKEUP_EVENTS
22900
22901 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22902 return WDI_SET_TM_LEVEL_RESP;
22903 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22904 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022905#ifdef WLAN_FEATURE_11AC
22906 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22907 return WDI_UPDATE_VHT_OP_MODE_RESP;
22908#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022909#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22910 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22911 return WDI_GET_ROAM_RSSI_RESP;
22912#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022913
Leo Chang00bc9132013-08-01 19:21:11 -070022914#ifdef FEATURE_WLAN_LPHB
22915 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070022916 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022917 case WLAN_HAL_LPHB_CFG_RSP:
22918 return WDI_LPHB_CFG_RESP;
22919#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022920
22921 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22922 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022923 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22924 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022925
Rajeev3db91f12013-10-05 11:03:42 +053022926#ifdef FEATURE_WLAN_BATCH_SCAN
22927 case WLAN_HAL_BATCHSCAN_SET_RSP:
22928 return WDI_SET_BATCH_SCAN_RESP;
22929 case WLAN_HAL_BATCHSCAN_RESULT_IND:
22930 return WDI_BATCHSCAN_RESULT_IND;
22931#endif // FEATURE_WLAN_BATCH_SCAN
22932
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022934 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 }
22936
22937}/*HAL_2_WDI_RSP_TYPE*/
22938
22939
22940/*Convert WDI driver type into HAL driver type*/
22941WPT_STATIC WPT_INLINE tDriverType
22942WDI_2_HAL_DRV_TYPE
22943(
22944 WDI_DriverType wdiDriverType
22945)
22946{
Jeff Johnsone7245742012-09-05 17:12:55 -070022947 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022948 the chances of getting inlined*/
22949 switch( wdiDriverType )
22950 {
22951 case WDI_DRIVER_TYPE_PRODUCTION:
22952 return eDRIVER_TYPE_PRODUCTION;
22953 case WDI_DRIVER_TYPE_MFG:
22954 return eDRIVER_TYPE_MFG;
22955 case WDI_DRIVER_TYPE_DVT:
22956 return eDRIVER_TYPE_DVT;
22957 }
22958
Jeff Johnsone7245742012-09-05 17:12:55 -070022959 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022960}/*WDI_2_HAL_DRV_TYPE*/
22961
22962
22963/*Convert WDI stop reason into HAL stop reason*/
22964WPT_STATIC WPT_INLINE tHalStopType
22965WDI_2_HAL_STOP_REASON
22966(
22967 WDI_StopType wdiDriverType
22968)
22969{
Jeff Johnsone7245742012-09-05 17:12:55 -070022970 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022971 the chances of getting inlined*/
22972 switch( wdiDriverType )
22973 {
22974 case WDI_STOP_TYPE_SYS_RESET:
22975 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022976 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22977 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 case WDI_STOP_TYPE_RF_KILL:
22979 return HAL_STOP_TYPE_RF_KILL;
22980 }
22981
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022983}/*WDI_2_HAL_STOP_REASON*/
22984
22985
22986/*Convert WDI scan mode type into HAL scan mode type*/
22987WPT_STATIC WPT_INLINE eHalSysMode
22988WDI_2_HAL_SCAN_MODE
22989(
22990 WDI_ScanMode wdiScanMode
22991)
22992{
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 the chances of getting inlined*/
22995 switch( wdiScanMode )
22996 {
22997 case WDI_SCAN_MODE_NORMAL:
22998 return eHAL_SYS_MODE_NORMAL;
22999 case WDI_SCAN_MODE_LEARN:
23000 return eHAL_SYS_MODE_LEARN;
23001 case WDI_SCAN_MODE_SCAN:
23002 return eHAL_SYS_MODE_SCAN;
23003 case WDI_SCAN_MODE_PROMISC:
23004 return eHAL_SYS_MODE_PROMISC;
23005 case WDI_SCAN_MODE_SUSPEND_LINK:
23006 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023007 case WDI_SCAN_MODE_ROAM_SCAN:
23008 return eHAL_SYS_MODE_ROAM_SCAN;
23009 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23010 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 }
23012
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023014}/*WDI_2_HAL_SCAN_MODE*/
23015
23016/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023017WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023018WDI_2_HAL_SEC_CH_OFFSET
23019(
23020 WDI_HTSecondaryChannelOffset wdiSecChOffset
23021)
23022{
Jeff Johnsone7245742012-09-05 17:12:55 -070023023 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023024 the chances of getting inlined*/
23025 switch( wdiSecChOffset )
23026 {
23027 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23033#ifdef WLAN_FEATURE_11AC
23034 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23035 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23036 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23037 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23038 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23039 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23040 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23041 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23042 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23043 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23044 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23045 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23046 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23047 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23048#endif
23049 default:
23050 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023051 }
23052
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023054}/*WDI_2_HAL_SEC_CH_OFFSET*/
23055
23056/*Convert WDI BSS type into HAL BSS type*/
23057WPT_STATIC WPT_INLINE tSirBssType
23058WDI_2_HAL_BSS_TYPE
23059(
23060 WDI_BssType wdiBSSType
23061)
23062{
Jeff Johnsone7245742012-09-05 17:12:55 -070023063 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 the chances of getting inlined*/
23065 switch( wdiBSSType )
23066 {
23067 case WDI_INFRASTRUCTURE_MODE:
23068 return eSIR_INFRASTRUCTURE_MODE;
23069 case WDI_INFRA_AP_MODE:
23070 return eSIR_INFRA_AP_MODE;
23071 case WDI_IBSS_MODE:
23072 return eSIR_IBSS_MODE;
23073 case WDI_BTAMP_STA_MODE:
23074 return eSIR_BTAMP_STA_MODE;
23075 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 case WDI_BSS_AUTO_MODE:
23078 return eSIR_AUTO_MODE;
23079 }
23080
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023082}/*WDI_2_HAL_BSS_TYPE*/
23083
23084/*Convert WDI NW type into HAL NW type*/
23085WPT_STATIC WPT_INLINE tSirNwType
23086WDI_2_HAL_NW_TYPE
23087(
23088 WDI_NwType wdiNWType
23089)
23090{
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 the chances of getting inlined*/
23093 switch( wdiNWType )
23094 {
23095 case WDI_11A_NW_TYPE:
23096 return eSIR_11A_NW_TYPE;
23097 case WDI_11B_NW_TYPE:
23098 return eSIR_11B_NW_TYPE;
23099 case WDI_11G_NW_TYPE:
23100 return eSIR_11G_NW_TYPE;
23101 case WDI_11N_NW_TYPE:
23102 return eSIR_11N_NW_TYPE;
23103 }
23104
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023106}/*WDI_2_HAL_NW_TYPE*/
23107
23108/*Convert WDI chanel bonding type into HAL cb type*/
23109WPT_STATIC WPT_INLINE ePhyChanBondState
23110WDI_2_HAL_CB_STATE
23111(
23112 WDI_PhyChanBondState wdiCbState
23113)
23114{
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 the chances of getting inlined*/
23117 switch ( wdiCbState )
23118 {
23119 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23120 return PHY_SINGLE_CHANNEL_CENTERED;
23121 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23122 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23123 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23124 return PHY_DOUBLE_CHANNEL_CENTERED;
23125 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23126 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023127#ifdef WLAN_FEATURE_11AC
23128 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23129 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23130 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23131 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23132 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23133 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23134 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23135 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23136 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23137 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23138 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23139 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23140 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23141 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23142#endif
23143 case WDI_MAX_CB_STATE:
23144 default:
23145 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023147
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 return PHY_CHANNEL_BONDING_STATE_MAX;
23149}/*WDI_2_HAL_CB_STATE*/
23150
23151/*Convert WDI chanel bonding type into HAL cb type*/
23152WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23153WDI_2_HAL_HT_OPER_MODE
23154(
23155 WDI_HTOperatingMode wdiHTOperMode
23156)
23157{
Jeff Johnsone7245742012-09-05 17:12:55 -070023158 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023159 the chances of getting inlined*/
23160 switch ( wdiHTOperMode )
23161 {
23162 case WDI_HT_OP_MODE_PURE:
23163 return eSIR_HT_OP_MODE_PURE;
23164 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23165 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23166 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23167 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23168 case WDI_HT_OP_MODE_MIXED:
23169 return eSIR_HT_OP_MODE_MIXED;
23170 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023171
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 return eSIR_HT_OP_MODE_MAX;
23173}/*WDI_2_HAL_HT_OPER_MODE*/
23174
23175/*Convert WDI mimo PS type into HAL mimo PS type*/
23176WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23177WDI_2_HAL_MIMO_PS
23178(
23179 WDI_HTMIMOPowerSaveState wdiHTOperMode
23180)
23181{
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 the chances of getting inlined*/
23184 switch ( wdiHTOperMode )
23185 {
23186 case WDI_HT_MIMO_PS_STATIC:
23187 return eSIR_HT_MIMO_PS_STATIC;
23188 case WDI_HT_MIMO_PS_DYNAMIC:
23189 return eSIR_HT_MIMO_PS_DYNAMIC;
23190 case WDI_HT_MIMO_PS_NA:
23191 return eSIR_HT_MIMO_PS_NA;
23192 case WDI_HT_MIMO_PS_NO_LIMIT:
23193 return eSIR_HT_MIMO_PS_NO_LIMIT;
23194 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023195
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 return eSIR_HT_MIMO_PS_MAX;
23197}/*WDI_2_HAL_MIMO_PS*/
23198
23199/*Convert WDI ENC type into HAL ENC type*/
23200WPT_STATIC WPT_INLINE tAniEdType
23201WDI_2_HAL_ENC_TYPE
23202(
23203 WDI_EncryptType wdiEncType
23204)
23205{
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 the chances of getting inlined*/
23208 switch ( wdiEncType )
23209 {
23210 case WDI_ENCR_NONE:
23211 return eSIR_ED_NONE;
23212
23213 case WDI_ENCR_WEP40:
23214 return eSIR_ED_WEP40;
23215
23216 case WDI_ENCR_WEP104:
23217 return eSIR_ED_WEP104;
23218
23219 case WDI_ENCR_TKIP:
23220 return eSIR_ED_TKIP;
23221
23222 case WDI_ENCR_CCMP:
23223 return eSIR_ED_CCMP;
23224
23225 case WDI_ENCR_AES_128_CMAC:
23226 return eSIR_ED_AES_128_CMAC;
23227#if defined(FEATURE_WLAN_WAPI)
23228 case WDI_ENCR_WPI:
23229 return eSIR_ED_WPI;
23230#endif
23231 default:
23232 return eSIR_ED_NOT_IMPLEMENTED;
23233 }
23234
23235}/*WDI_2_HAL_ENC_TYPE*/
23236
23237/*Convert WDI WEP type into HAL WEP type*/
23238WPT_STATIC WPT_INLINE tAniWepType
23239WDI_2_HAL_WEP_TYPE
23240(
23241 WDI_WepType wdiWEPType
23242)
23243{
Jeff Johnsone7245742012-09-05 17:12:55 -070023244 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 the chances of getting inlined*/
23246 switch ( wdiWEPType )
23247 {
23248 case WDI_WEP_STATIC:
23249 return eSIR_WEP_STATIC;
23250
23251 case WDI_WEP_DYNAMIC:
23252 return eSIR_WEP_DYNAMIC;
23253 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023254
Jeff Johnson295189b2012-06-20 16:38:30 -070023255 return eSIR_WEP_MAX;
23256}/*WDI_2_HAL_WEP_TYPE*/
23257
23258WPT_STATIC WPT_INLINE tSirLinkState
23259WDI_2_HAL_LINK_STATE
23260(
23261 WDI_LinkStateType wdiLinkState
23262)
23263{
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 the chances of getting inlined*/
23266 switch ( wdiLinkState )
23267 {
23268 case WDI_LINK_IDLE_STATE:
23269 return eSIR_LINK_IDLE_STATE;
23270
23271 case WDI_LINK_PREASSOC_STATE:
23272 return eSIR_LINK_PREASSOC_STATE;
23273
23274 case WDI_LINK_POSTASSOC_STATE:
23275 return eSIR_LINK_POSTASSOC_STATE;
23276
23277 case WDI_LINK_AP_STATE:
23278 return eSIR_LINK_AP_STATE;
23279
23280 case WDI_LINK_IBSS_STATE:
23281 return eSIR_LINK_IBSS_STATE;
23282
23283 case WDI_LINK_BTAMP_PREASSOC_STATE:
23284 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23285
23286 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23287 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23288
23289 case WDI_LINK_BTAMP_AP_STATE:
23290 return eSIR_LINK_BTAMP_AP_STATE;
23291
23292 case WDI_LINK_BTAMP_STA_STATE:
23293 return eSIR_LINK_BTAMP_STA_STATE;
23294
23295 case WDI_LINK_LEARN_STATE:
23296 return eSIR_LINK_LEARN_STATE;
23297
23298 case WDI_LINK_SCAN_STATE:
23299 return eSIR_LINK_SCAN_STATE;
23300
23301 case WDI_LINK_FINISH_SCAN_STATE:
23302 return eSIR_LINK_FINISH_SCAN_STATE;
23303
23304 case WDI_LINK_INIT_CAL_STATE:
23305 return eSIR_LINK_INIT_CAL_STATE;
23306
23307 case WDI_LINK_FINISH_CAL_STATE:
23308 return eSIR_LINK_FINISH_CAL_STATE;
23309
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 case WDI_LINK_LISTEN_STATE:
23311 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023313 case WDI_LINK_SEND_ACTION_STATE:
23314 return eSIR_LINK_SEND_ACTION_STATE;
23315
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 default:
23317 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023318 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023319}
23320
Jeff Johnsone7245742012-09-05 17:12:55 -070023321/*Translate a STA Context from WDI into HAL*/
23322WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023323void
23324WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023325(
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 tConfigStaParams* phalConfigSta,
23327 WDI_ConfigStaReqInfoType* pwdiConfigSta
23328)
23329{
23330 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023331#ifdef WLAN_FEATURE_11AC
23332 /* Get the Version 1 Handler */
23333 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23334 if (WDI_getFwWlanFeatCaps(DOT11AC))
23335 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023336 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 }
23338#endif
23339 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 the chances of getting inlined*/
23341
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 wpalMemoryCopy(phalConfigSta->bssId,
23343 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23344
23345 wpalMemoryCopy(phalConfigSta->staMac,
23346 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023347
23348 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23349 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23350 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23351 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23352 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23353 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23354 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23355 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23356 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23357 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23358 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23359 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23360 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23361 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23362 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23363 phalConfigSta->action = pwdiConfigSta->wdiAction;
23364 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23365 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23366 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23367 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23368 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23369 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23370 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023371
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23373
Jeff Johnsone7245742012-09-05 17:12:55 -070023374 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023375 pwdiConfigSta->wdiSupportedRates.opRateMode;
23376 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23377 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023378 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23380 }
23381 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23382 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23385 }
23386 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23387 {
23388 phalConfigSta->supportedRates.aniLegacyRates[i] =
23389 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23390 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23393 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23394 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23397 }
23398 phalConfigSta->supportedRates.rxHighestDataRate =
23399 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23400
Jeff Johnsone7245742012-09-05 17:12:55 -070023401#ifdef WLAN_FEATURE_11AC
23402 if(phalConfigSta_V1 != NULL)
23403 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023404 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23405 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23406 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23407 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 }
23409#endif
23410
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023412
Jeff Johnsone7245742012-09-05 17:12:55 -070023413#ifdef WLAN_FEATURE_11AC
23414 if(phalConfigSta_V1 != NULL)
23415 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023416 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23417 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023418 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023419 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23420 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23421
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 }
23423#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023424}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023425
23426/*Translate a Rate set info from WDI into HAL*/
23427WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023428WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023429(
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 tSirMacRateSet* pHalRateSet,
23431 WDI_RateSet* pwdiRateSet
23432)
23433{
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23436
23437 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23438 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23439
23440 for ( i = 0; i < pHalRateSet->numRates; i++ )
23441 {
23442 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23443 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023444
Jeff Johnson295189b2012-06-20 16:38:30 -070023445}/*WDI_CopyWDIRateSetToHALRateSet*/
23446
23447
23448/*Translate an EDCA Parameter Record from WDI into HAL*/
23449WPT_STATIC WPT_INLINE void
23450WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023451(
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 tSirMacEdcaParamRecord* phalEdcaParam,
23453 WDI_EdcaParamRecord* pWDIEdcaParam
23454)
23455{
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 the chances of getting inlined*/
23458
23459 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23460 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23461 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23462 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23463
23464 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23465 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23466 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23467}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23468
23469
23470/*Copy a management frame header from WDI fmt into HAL fmt*/
23471WPT_STATIC WPT_INLINE void
23472WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23473(
23474 tSirMacMgmtHdr* pmacMgmtHdr,
23475 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23476)
23477{
23478 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23479 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23480 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23481 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23482 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23483 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23484 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23485 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23486 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23487 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23488 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23489
23490 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23491 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23492
Jeff Johnsone7245742012-09-05 17:12:55 -070023493 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 pwdiMacMgmtHdr->bssId, 6);
23499
23500 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23501 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23502 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23503
23504}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23505
23506
23507/*Copy config bss parameters from WDI fmt into HAL fmt*/
23508WPT_STATIC WPT_INLINE void
23509WDI_CopyWDIConfigBSSToHALConfigBSS
23510(
23511 tConfigBssParams* phalConfigBSS,
23512 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23513)
23514{
23515
23516 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023517#ifdef WLAN_FEATURE_11AC
23518 /* Get the Version 1 Handler */
23519 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23520 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023521 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023522#endif
23523
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 wpalMemoryCopy( phalConfigBSS->bssId,
23525 pwdiConfigBSS->macBSSID,
23526 WDI_MAC_ADDR_LEN);
23527
23528#ifdef HAL_SELF_STA_PER_BSS
23529 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23530 pwdiConfigBSS->macSelfAddr,
23531 WDI_MAC_ADDR_LEN);
23532#endif
23533
23534 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23535
23536 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23537 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23538
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023540 pwdiConfigBSS->ucShortSlotTimeSupported;
23541 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23542 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23543 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23544 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23545 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023546 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023547 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23548 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23549 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23550 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23551 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23552 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23553 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23554 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23555 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23556 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23557 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23558
Jeff Johnsone7245742012-09-05 17:12:55 -070023559 phalConfigBSS->htOperMode =
23560 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023561
23562 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23563 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23564 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23565 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23566
23567#ifdef WLAN_FEATURE_VOWIFI
23568 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23569#endif
23570
23571 /*! Used 32 as magic number because that is how the ssid is declared inside the
23572 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23575 pwdiConfigBSS->wdiSSID.ucLength : 32;
23576 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 pwdiConfigBSS->wdiSSID.sSSID,
23578 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023579
23580 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23581 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023582
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23584 &pwdiConfigBSS->wdiRateSet);
23585
23586 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23587
23588 if(phalConfigBSS->edcaParamsValid)
23589 {
23590 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23591 &pwdiConfigBSS->wdiBEEDCAParams);
23592 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23593 &pwdiConfigBSS->wdiBKEDCAParams);
23594 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23595 &pwdiConfigBSS->wdiVIEDCAParams);
23596 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23597 &pwdiConfigBSS->wdiVOEDCAParams);
23598 }
23599
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023601
23602 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23603
23604#ifdef WLAN_FEATURE_VOWIFI_11R
23605
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023608
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 if( phalConfigBSS->extSetStaKeyParamValid )
23610 {
23611 /*-----------------------------------------------------------------------
23612 Copy the STA Key parameters into the HAL message
23613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023614 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23616
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023618 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23619
23620 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23621
23622 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23623
23624 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23625
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23627 keyIndex++)
23628 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23631 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23632 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23633 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23634 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23635 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023637 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23642 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023643 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 WDI_MAX_KEY_LENGTH);
23645 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 }
23647 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23648 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 sizeof(phalConfigBSS->extSetStaKeyParam) );
23651 }
23652
23653#endif /*WLAN_FEATURE_VOWIFI_11R*/
23654
Jeff Johnsone7245742012-09-05 17:12:55 -070023655#ifdef WLAN_FEATURE_11AC
23656 if(phalConfigBSS_V1 != NULL)
23657 {
23658 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23659 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23660 }
23661#endif
23662
Jeff Johnson295189b2012-06-20 16:38:30 -070023663}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23664
23665
Jeff Johnsone7245742012-09-05 17:12:55 -070023666/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 pointed to by user data */
23668WPT_STATIC WPT_INLINE void
23669WDI_ExtractRequestCBFromEvent
23670(
23671 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 void** ppUserData
23674)
23675{
23676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23677 switch ( pEvent->wdiRequest )
23678 {
23679 case WDI_START_REQ:
23680 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23681 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23682 break;
23683 case WDI_STOP_REQ:
23684 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23685 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23686 break;
23687 case WDI_INIT_SCAN_REQ:
23688 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23689 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23690 break;
23691 case WDI_START_SCAN_REQ:
23692 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23693 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23694 break;
23695 case WDI_END_SCAN_REQ:
23696 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23697 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23698 break;
23699 case WDI_FINISH_SCAN_REQ:
23700 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23701 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23702 break;
23703 case WDI_JOIN_REQ:
23704 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23705 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23706 break;
23707 case WDI_CONFIG_BSS_REQ:
23708 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23709 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23710 break;
23711 case WDI_DEL_BSS_REQ:
23712 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23713 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23714 break;
23715 case WDI_POST_ASSOC_REQ:
23716 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23717 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23718 break;
23719 case WDI_DEL_STA_REQ:
23720 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23721 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23722 break;
23723 case WDI_DEL_STA_SELF_REQ:
23724 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23725 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23726 break;
23727
23728 case WDI_SET_BSS_KEY_REQ:
23729 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23730 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23731 break;
23732 case WDI_RMV_BSS_KEY_REQ:
23733 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23734 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23735 break;
23736 case WDI_SET_STA_KEY_REQ:
23737 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23738 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23739 break;
23740 case WDI_RMV_STA_KEY_REQ:
23741 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23742 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23743 break;
23744 case WDI_ADD_TS_REQ:
23745 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23746 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23747 break;
23748 case WDI_DEL_TS_REQ:
23749 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23750 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23751 break;
23752 case WDI_UPD_EDCA_PRMS_REQ:
23753 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23754 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23755 break;
23756 case WDI_ADD_BA_SESSION_REQ:
23757 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23758 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23759 break;
23760 case WDI_DEL_BA_REQ:
23761 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23762 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23763 break;
23764#ifdef FEATURE_WLAN_CCX
23765 case WDI_TSM_STATS_REQ:
23766 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23767 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23768 break;
23769#endif
23770 case WDI_CH_SWITCH_REQ:
23771 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23772 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23773 break;
23774 case WDI_CONFIG_STA_REQ:
23775 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23776 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23777 break;
23778 case WDI_SET_LINK_ST_REQ:
23779 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23780 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23781 break;
23782 case WDI_GET_STATS_REQ:
23783 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23784 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23785 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023786#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23787 case WDI_GET_ROAM_RSSI_REQ:
23788 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23789 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23790 break;
23791#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 case WDI_UPDATE_CFG_REQ:
23793 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23794 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23795 break;
23796 case WDI_ADD_BA_REQ:
23797 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23798 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23799 break;
23800 case WDI_TRIGGER_BA_REQ:
23801 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23802 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23803 break;
23804 case WDI_UPD_BCON_PRMS_REQ:
23805 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23806 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23807 break;
23808 case WDI_SND_BCON_REQ:
23809 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23810 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23811 break;
23812 case WDI_ENTER_BMPS_REQ:
23813 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23814 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23815 break;
23816 case WDI_EXIT_BMPS_REQ:
23817 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23818 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23819 break;
23820 case WDI_ENTER_UAPSD_REQ:
23821 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23822 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23823 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023824 case WDI_EXIT_UAPSD_REQ:
23825 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23826 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23827 break;
23828 case WDI_SET_UAPSD_PARAM_REQ:
23829 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23830 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23831 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 case WDI_UPDATE_UAPSD_PARAM_REQ:
23833 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23834 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23835 break;
23836 case WDI_CONFIGURE_RXP_FILTER_REQ:
23837 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23838 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23839 break;
23840 case WDI_SET_BEACON_FILTER_REQ:
23841 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23842 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23843 break;
23844 case WDI_REM_BEACON_FILTER_REQ:
23845 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23846 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 case WDI_SET_RSSI_THRESHOLDS_REQ:
23849 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23850 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23851 break;
23852 case WDI_HOST_OFFLOAD_REQ:
23853 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23854 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23855 break;
23856 case WDI_WOWL_ADD_BC_PTRN_REQ:
23857 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23858 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23859 break;
23860 case WDI_WOWL_DEL_BC_PTRN_REQ:
23861 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23862 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23863 break;
23864 case WDI_WOWL_ENTER_REQ:
23865 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23866 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23867 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023868 case WDI_WOWL_EXIT_REQ:
23869 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23870 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23871 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23873 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23874 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23875 break;
23876 case WDI_FLUSH_AC_REQ:
23877 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23878 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23879 break;
23880 case WDI_BTAMP_EVENT_REQ:
23881 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23882 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23883 break;
23884 case WDI_KEEP_ALIVE_REQ:
23885 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23886 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23887 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023888#if defined FEATURE_WLAN_SCAN_PNO
23889 case WDI_SET_PREF_NETWORK_REQ:
23890 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23891 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23892 break;
23893 case WDI_SET_RSSI_FILTER_REQ:
23894 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23895 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23896 break;
23897 case WDI_UPDATE_SCAN_PARAMS_REQ:
23898 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23899 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23900 break;
23901#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023902 case WDI_SET_TX_PER_TRACKING_REQ:
23903 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23904 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023905 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023906#if defined WLAN_FEATURE_PACKET_FILTERING
23907 case WDI_8023_MULTICAST_LIST_REQ:
23908 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23909 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23910 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023911 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23912 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23913 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23914 break;
23915 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23916 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23917 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23918 break;
23919 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23920 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23921 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23922 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023923#endif
23924 case WDI_SET_POWER_PARAMS_REQ:
23925 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23926 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23927 break;
23928#if defined WLAN_FEATURE_GTK_OFFLOAD
23929 case WDI_GTK_OFFLOAD_REQ:
23930 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23931 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23932 break;
23933 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23934 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23935 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23936 break;
23937#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023938
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 default:
23940 *ppfnReqCB = NULL;
23941 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 }
23944}/*WDI_ExtractRequestCBFromEvent*/
23945
23946
23947/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 frame xtl is enabled for a particular STA.
23950
23951 WDI_PostAssocReq must have been called.
23952
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 @param uSTAIdx: STA index
23954
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 @see WDI_PostAssocReq
23956 @return Result of the function call
23957*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023958wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023959WDI_IsHwFrameTxTranslationCapable
23960(
23961 wpt_uint8 uSTAIdx
23962)
23963{
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 uma value*/
23966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 ------------------------------------------------------------------------*/
23969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23970 {
23971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23972 "WDI API call before module is initialized - Fail request");
23973
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 }
23976
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023977#ifdef WLAN_SOFTAP_VSTA_FEATURE
23978 if (IS_VSTA_IDX(uSTAIdx))
23979 {
23980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23981 "STA %d is a Virtual STA, "
23982 "HW frame translation disabled", uSTAIdx);
23983 return eWLAN_PAL_FALSE;
23984 }
23985#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023986
Jeff Johnson295189b2012-06-20 16:38:30 -070023987 return gWDICb.bFrameTransEnabled;
23988}/*WDI_IsHwFrameTxTranslationCapable*/
23989
23990#ifdef FEATURE_WLAN_SCAN_PNO
23991/**
23992 @brief WDI_SetPreferredNetworkList
23993
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023996
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 wdiPNOScanCb: callback for passing back the response
23998 of the Set PNO operation received from the
23999 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024000
Jeff Johnson295189b2012-06-20 16:38:30 -070024001 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 callback
24003
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 @return Result of the function call
24005*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024007WDI_SetPreferredNetworkReq
24008(
24009 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24010 WDI_PNOScanCb wdiPNOScanCb,
24011 void* pUserData
24012)
24013{
24014 WDI_EventInfoType wdiEventData = {{0}};
24015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24016
24017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 ------------------------------------------------------------------------*/
24020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24021 {
24022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24023 "WDI API call before module is initialized - Fail request");
24024
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 }
24027
24028 /*------------------------------------------------------------------------
24029 Fill in Event data and post to the Main FSM
24030 ------------------------------------------------------------------------*/
24031 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 wdiEventData.pUserData = pUserData;
24036
24037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24038}
24039
24040
24041/**
24042 @brief WDI_SetRssiFilterReq
24043
Jeff Johnsone7245742012-09-05 17:12:55 -070024044 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024045 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024046
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 wdiRssiFilterCb: callback for passing back the response
24048 of the Set RSSI Filter operation received from the
24049 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024050
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024052 callback
24053
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 @return Result of the function call
24055*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024056WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024057WDI_SetRssiFilterReq
24058(
24059 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24060 WDI_RssiFilterCb wdiRssiFilterCb,
24061 void* pUserData
24062)
24063{
24064 WDI_EventInfoType wdiEventData = {{0}};
24065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24066
24067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 ------------------------------------------------------------------------*/
24070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24071 {
24072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24073 "WDI API call before module is initialized - Fail request");
24074
Jeff Johnsone7245742012-09-05 17:12:55 -070024075 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024076 }
24077
24078 /*------------------------------------------------------------------------
24079 Fill in Event data and post to the Main FSM
24080 ------------------------------------------------------------------------*/
24081 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 wdiEventData.pUserData = pUserData;
24086
24087 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24088}/*WDI_SetRssiFilterReq*/
24089
24090/**
24091 @brief WDI_UpdateScanParamsReq
24092
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024095
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 wdiUpdateScanParamsCb: callback for passing back the response
24097 of the Set PNO operation received from the
24098 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024099
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 callback
24102
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 @return Result of the function call
24104*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024105WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024106WDI_UpdateScanParamsReq
24107(
24108 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24109 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24110 void* pUserData
24111)
24112{
24113 WDI_EventInfoType wdiEventData = {{0}};
24114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24115
24116 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 ------------------------------------------------------------------------*/
24119 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24120 {
24121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24122 "WDI API call before module is initialized - Fail request");
24123
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 }
24126
24127 /*------------------------------------------------------------------------
24128 Fill in Event data and post to the Main FSM
24129 ------------------------------------------------------------------------*/
24130 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024131 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024132 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 wdiEventData.pUserData = pUserData;
24135
24136 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24137}
24138
24139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024140 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024142
24143 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 pwdiPNOScanReqParams: pointer to the info received
24145 from upper layers
24146 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 and its size
24148
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 @return Result of the function call
24150*/
24151
24152WDI_Status
24153WDI_PackPreferredNetworkList
24154(
24155 WDI_ControlBlockType* pWDICtx,
24156 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24157 wpt_uint8** ppSendBuffer,
24158 wpt_uint16* pSize
24159)
24160{
Jeff Johnsone7245742012-09-05 17:12:55 -070024161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024162 wpt_uint16 usDataOffset = 0;
24163 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024164 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 /*-----------------------------------------------------------------------
24167 Get message buffer
24168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024170 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024172 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 {
24174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24175 "Unable to get send buffer in Set PNO req %x ",
24176 pwdiPNOScanReqParams);
24177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 }
24180
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024181 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24182
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 /*-------------------------------------------------------------------------
24184 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24185 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024186 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024187 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024188 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24190
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024191 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024193 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024194 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024195 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24196
24197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024198 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024199 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24200 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24201 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24202
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024203 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 {
24205 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024206 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024207 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24208
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024209 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024210 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024211 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024212
24213 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024214 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024215 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024216
24217 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024218 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024220
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024223 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024224 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24225 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24226 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24227 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024228
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024229 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024231 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024232
24233 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024234 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24236
24237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024238 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024239 pPrefNetwListParams->aNetworks[i].ssId.length,
24240 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024241 }
24242
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024243 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024244 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024245 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24246 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24247 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24248
24249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024251 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24253 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24254
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024255 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024257 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024258 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024259 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024260 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24261 }
24262
24263 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024264 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24266 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24267 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024269
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024270 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024271 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024272 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024273
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024274 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24276 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24277 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024278 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024279
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024280 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024282 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024283
24284 /*Set the output values*/
24285 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024287
24288 return WDI_STATUS_SUCCESS;
24289}/*WDI_PackPreferredNetworkList*/
24290
24291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024293 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024294
24295 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 pwdiPNOScanReqParams: pointer to the info received
24297 from upper layers
24298 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 and its size
24300
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 @return Result of the function call
24302*/
24303
24304WDI_Status
24305WDI_PackPreferredNetworkListNew
24306(
24307 WDI_ControlBlockType* pWDICtx,
24308 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24309 wpt_uint8** ppSendBuffer,
24310 wpt_uint16* pSize
24311)
24312{
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 wpt_uint16 usDataOffset = 0;
24315 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024316 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318
24319 /*-----------------------------------------------------------------------
24320 Get message buffer
24321 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024323 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024324 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024325 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 {
24327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24328 "Unable to get send buffer in Set PNO req %x ",
24329 pwdiPNOScanReqParams);
24330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 }
24333
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024334 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24335
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 /*-------------------------------------------------------------------------
24337 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24338 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024339 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024341 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24343
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024344 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24349
24350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024352 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24353 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24354 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24355
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024356 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 {
24358 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024359 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24361
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024362 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024364 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024365
24366 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024369
24370 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024371 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024373
24374 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024375 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024380 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24382
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024383 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024385 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024386
24387 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024388 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24390
24391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024393 pPrefNetwListParams->aNetworks[i].ssId.length,
24394 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 }
24396
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024397 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24400 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24401 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24402
24403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024405 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24407 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24408
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024409 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024411 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024413 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24415 }
24416
24417 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024418 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24420 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24421 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024423
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024424 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024425 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024426 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024427
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024428 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24430 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24431 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024432 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024434 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024435 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024436 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024437
Jeff Johnson295189b2012-06-20 16:38:30 -070024438
24439 /*Set the output values*/
24440 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024442
24443 return WDI_STATUS_SUCCESS;
24444}/*WDI_PackPreferredNetworkListNew*/
24445
24446/**
24447 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024448
24449 @param pWDICtx: pointer to the WLAN DAL context
24450 pEventData: pointer to the event information structure
24451
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 @return Result of the function call
24453*/
24454WDI_Status
24455WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024456(
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 WDI_ControlBlockType* pWDICtx,
24458 WDI_EventInfoType* pEventData
24459)
24460{
24461 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24462 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466
24467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024469 -------------------------------------------------------------------------*/
24470 if (( NULL == pEventData ) ||
24471 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24472 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24473 {
24474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 }
24479
24480 /*-------------------------------------------------------------------------
24481 Pack the PNO request structure based on version
24482 -------------------------------------------------------------------------*/
24483 if ( pWDICtx->wdiPNOVersion > 0 )
24484 {
24485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024486 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024487 pWDICtx->wdiPNOVersion);
24488
24489 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24490 &pSendBuffer, &usSendSize);
24491 }
24492 else
24493 {
24494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024495 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 pWDICtx->wdiPNOVersion);
24497
24498 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24499 &pSendBuffer, &usSendSize);
24500 }
24501
24502 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24503 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24504 {
24505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024506 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 }
24510
24511 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024512 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513
24514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24518 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024519}
24520
24521/**
24522 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024523
24524 @param pWDICtx: pointer to the WLAN DAL context
24525 pEventData: pointer to the event information structure
24526
Jeff Johnson295189b2012-06-20 16:38:30 -070024527 @see
24528 @return Result of the function call
24529*/
24530WDI_Status
24531WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024532(
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 WDI_ControlBlockType* pWDICtx,
24534 WDI_EventInfoType* pEventData
24535)
24536{
24537 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24538 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024539 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024540 wpt_uint16 usDataOffset = 0;
24541 wpt_uint16 usSendSize = 0;
24542 wpt_uint8 ucRssiThreshold;
24543
24544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 -------------------------------------------------------------------------*/
24547 if (( NULL == pEventData ) ||
24548 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24549 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24550 {
24551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 }
24556
24557 /*-----------------------------------------------------------------------
24558 Get message buffer
24559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024561 sizeof(ucRssiThreshold),
24562 &pSendBuffer, &usDataOffset, &usSendSize))||
24563 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24564 {
24565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24566 "Unable to get send buffer in Set PNO req %x %x %x",
24567 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 }
24571
24572 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24573
Jeff Johnsone7245742012-09-05 17:12:55 -070024574 wpalMemoryCopy( pSendBuffer+usDataOffset,
24575 &ucRssiThreshold,
24576 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024577
24578 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024579 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024580
24581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24585 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024586}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024587#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24588/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024589 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024590
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024591 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024592 by the Device Interface
24593
24594 wdiRoamOffloadScancb: callback for passing back the response
24595 of the Roam Candidate Lookup Req operation received from the
24596 device
24597
24598 pUserData: user data will be passed back with the
24599 callback
24600 @return Result of the function call
24601*/
24602WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024603WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024604(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024605 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024606 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24607 void* pUserData
24608)
24609{
24610 WDI_EventInfoType wdiEventData = {{0}};
24611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24612
24613 /*------------------------------------------------------------------------
24614 Sanity Check
24615 ------------------------------------------------------------------------*/
24616 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24617 {
24618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24619 "WDI API call before module is initialized - Fail request");
24620
24621 return WDI_STATUS_E_NOT_ALLOWED;
24622 }
24623
24624 /*------------------------------------------------------------------------
24625 Fill in Event data and post to the Main FSM
24626 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024627 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24628 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24629 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024630 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24631 wdiEventData.pUserData = pUserData;
24632
24633 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24634}
24635
24636void
24637WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24638{
24639 switch (wdiEdType)
24640 {
24641 case WDI_ED_NONE:
24642 *EdType = eED_NONE;
24643 break;
24644 case WDI_ED_WEP40:
24645 case WDI_ED_WEP104:
24646 *EdType = eED_WEP;
24647 break;
24648 case WDI_ED_TKIP:
24649 *EdType = eED_TKIP;
24650 break;
24651 case WDI_ED_CCMP:
24652#ifdef WLAN_FEATURE_11W
24653 case WDI_ED_AES_128_CMAC:
24654#endif
24655 *EdType = eED_CCMP;
24656 break;
24657#ifdef FEATURE_WLAN_WAPI
24658 case WDI_ED_WPI:
24659 *EdType = eED_WPI;
24660 break;
24661#endif
24662 case WDI_ED_ANY:
24663 *EdType = eED_ANY;
24664 break;
24665
24666 default:
24667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24668 "%s: Unknown Encryption Type", __func__);
24669 break;
24670 }
24671}
24672
24673/**
24674 @brief Helper function to pack Start Roam Candidate Lookup
24675 Request parameters
24676
24677 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024678 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024679 from upper layers
24680 ppSendBuffer, pSize - out pointers of the packed buffer
24681 and its size
24682
24683 @return Result of the function call
24684*/
24685
24686WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024687WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024688(
24689 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024690 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024691 wpt_uint8** ppSendBuffer,
24692 wpt_uint16* pSize
24693)
24694{
24695 wpt_uint8* pSendBuffer = NULL;
24696 wpt_uint16 usDataOffset = 0;
24697 wpt_uint16 usSendSize = 0;
24698 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24699 wpt_uint8 i;
24700 /*-----------------------------------------------------------------------
24701 Get message buffer
24702 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024704 sizeof(tRoamCandidateListParams),
24705 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024706 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024707 {
24708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24709 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024710 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024711 WDI_ASSERT(0);
24712 return WDI_STATUS_E_FAILURE;
24713 }
24714 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024715 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024716 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024717 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024718 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024719 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024720 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024721 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024722 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024723 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024724 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024725
24726 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024727 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024728 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024729 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024730 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24731 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024732 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24733 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24734 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24735 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24736 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24737 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24738 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24739 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24740 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24741 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24742 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24743 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24744 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24745 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024746 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024747 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24748 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24749 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024750
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24752 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24753 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24754 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24755 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24756 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24757 "HomeAwayTime=%d\n",
24758 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24759 pRoamCandidateListParams->RoamScanOffloadEnabled,
24760 pRoamCandidateListParams->Command,
24761 pRoamCandidateListParams->StartScanReason,
24762 pRoamCandidateListParams->NeighborScanTimerPeriod,
24763 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24764 pRoamCandidateListParams->NeighborScanChannelMinTime,
24765 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24766 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24767 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24768 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24769 pRoamCandidateListParams->ConnectedNetwork.authentication,
24770 pRoamCandidateListParams->ConnectedNetwork.encryption,
24771 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24772 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24773 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024774 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024775 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024776 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024777 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024778 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24779 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024780 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024781 pRoamCandidateListParams->us24GProbeSize);
24782 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024783 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024784 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024785 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024786 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24787 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024788 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024789 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024790 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24791 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24792 pRoamCandidateListParams->nProbes =
24793 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24794 pRoamCandidateListParams->HomeAwayTime =
24795 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024797 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24798 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024800 }
24801
24802
24803 /*Set the output values*/
24804 *ppSendBuffer = pSendBuffer;
24805 *pSize = usSendSize;
24806 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024807}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024808
24809/**
24810 @brief Process Start Roam Candidate Lookup Request function
24811
24812 @param pWDICtx: pointer to the WLAN DAL context
24813 pEventData: pointer to the event information structure
24814
24815 @return Result of the function call
24816*/
24817WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024818WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024819(
24820 WDI_ControlBlockType* pWDICtx,
24821 WDI_EventInfoType* pEventData
24822)
24823{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024824 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024825 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24826 wpt_uint8* pSendBuffer = NULL;
24827 wpt_uint16 usSendSize = 0;
24828 WDI_Status wdiStatus;
24829 /*-------------------------------------------------------------------------
24830 Sanity check
24831 -------------------------------------------------------------------------*/
24832 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024833 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024834 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24835 {
24836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24837 "%s: Invalid parameters", __func__);
24838 WDI_ASSERT(0);
24839 return WDI_STATUS_E_FAILURE;
24840 }
24841
24842 /*-------------------------------------------------------------------------
24843 Pack the Start Roam Candidate Lookup request structure based on version
24844 -------------------------------------------------------------------------*/
24845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24846 "%s: Packing Roam Candidate Lookup request ", __func__);
24847
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024848 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024849 &pSendBuffer, &usSendSize);
24850
24851 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24852 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24853 {
24854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24855 "%s: failed to pack request parameters", __func__);
24856 WDI_ASSERT(0);
24857 return wdiStatus;
24858 }
24859
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024860 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24861 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024862
24863 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024864 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024865 -------------------------------------------------------------------------*/
24866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024867 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024868}
24869
24870/**
24871 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24872 response is being received over the bus from HAL)
24873
24874 @param pWDICtx: pointer to the WLAN DAL context
24875 pEventData: pointer to the event information structure
24876
24877 @see
24878 @return Result of the function call
24879*/
24880WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024881WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024882(
24883 WDI_ControlBlockType* pWDICtx,
24884 WDI_EventInfoType* pEventData
24885)
24886{
24887 WDI_Status wdiStatus;
24888 eHalStatus halStatus;
24889 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24890
24891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24892
24893 /*-------------------------------------------------------------------------
24894 Sanity check
24895 -------------------------------------------------------------------------*/
24896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24897 ( NULL == pEventData->pEventData ))
24898 {
24899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24900 "%s: Invalid parameters", __func__);
24901 WDI_ASSERT(0);
24902 return WDI_STATUS_E_FAILURE;
24903 }
24904
24905 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24906
24907 /*-------------------------------------------------------------------------
24908 Extract response and send it to UMAC
24909 -------------------------------------------------------------------------*/
24910 halStatus = *((eHalStatus*)pEventData->pEventData);
24911 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24912
24913 /*Notify UMAC*/
24914 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24915
24916 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024917}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024918#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024919
24920/**
24921 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024922
24923 @param pWDICtx: pointer to the WLAN DAL context
24924 pEventData: pointer to the event information structure
24925
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 @see
24927 @return Result of the function call
24928*/
24929WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024930WDI_PackUpdateScanParamsReq
24931(
24932 WDI_ControlBlockType* pWDICtx,
24933 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24934 wpt_uint8** ppSendBuffer,
24935 wpt_uint16* pSize
24936)
24937{
24938 wpt_uint8* pSendBuffer = NULL;
24939 wpt_uint16 usDataOffset = 0;
24940 wpt_uint16 usSendSize = 0;
24941 tUpdateScanParams updateScanParams = {0};
24942
24943
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024945 "Begin WDI Update Scan Parameters Old Style Params");
24946 /*-----------------------------------------------------------------------
24947 Get message buffer
24948 -----------------------------------------------------------------------*/
24949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24950 sizeof(updateScanParams),
24951 &pSendBuffer, &usDataOffset, &usSendSize))||
24952 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24953 {
24954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24955 "Unable to get send buffer in Update Scan Params req %x",
24956 pwdiUpdateScanParams);
24957 WDI_ASSERT(0);
24958 return WDI_STATUS_E_FAILURE;
24959 }
24960
24961 //
24962 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24963 //
24964
24965 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24966 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24967
24968 updateScanParams.ucChannelCount =
24969 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24970 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24971 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24972 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24973
24974 wpalMemoryCopy( updateScanParams.aChannels,
24975 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24976 updateScanParams.ucChannelCount);
24977
24978
24979 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24980 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24981 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24982 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24983 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24984
24985 wpalMemoryCopy( pSendBuffer+usDataOffset,
24986 &updateScanParams,
24987 sizeof(updateScanParams));
24988
24989 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24990 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24991
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024993 "End Update Scan Parameters Old Style");
24994
24995 /*Set the output values*/
24996 *ppSendBuffer = pSendBuffer;
24997 *pSize = usSendSize;
24998
24999 return WDI_STATUS_SUCCESS;
25000}
25001
25002/**
25003 @brief Process Update Scan Params function
25004
25005 @param pWDICtx: pointer to the WLAN DAL context
25006 pEventData: pointer to the event information structure
25007
25008 @see
25009 @return Result of the function call
25010*/
25011WDI_Status
25012WDI_PackUpdateScanParamsReqEx
25013(
25014 WDI_ControlBlockType* pWDICtx,
25015 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25016 wpt_uint8** ppSendBuffer,
25017 wpt_uint16* pSize
25018)
25019{
25020 wpt_uint8* pSendBuffer = NULL;
25021 wpt_uint16 usDataOffset = 0;
25022 wpt_uint16 usSendSize = 0;
25023 tUpdateScanParamsEx updateScanParams = {0};
25024
25025
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025026 /*-----------------------------------------------------------------------
25027 Get message buffer
25028 -----------------------------------------------------------------------*/
25029 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25030 sizeof(updateScanParams),
25031 &pSendBuffer, &usDataOffset, &usSendSize))||
25032 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25033 {
25034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25035 "Unable to get send buffer in Update Scan Params Ex req %x",
25036 pwdiUpdateScanParams);
25037 WDI_ASSERT(0);
25038 return WDI_STATUS_E_FAILURE;
25039 }
25040
25041 //
25042 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25043 //
25044
25045 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25046 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25047
25048 updateScanParams.ucChannelCount =
25049 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25050 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25051 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25052 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25053
25054 wpalMemoryCopy( updateScanParams.aChannels,
25055 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25056 updateScanParams.ucChannelCount);
25057
25058
25059 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25060 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25061 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25062 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25063 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25064
25065 wpalMemoryCopy( pSendBuffer+usDataOffset,
25066 &updateScanParams,
25067 sizeof(updateScanParams));
25068
25069 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25070 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25071
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025072 /*Set the output values*/
25073 *ppSendBuffer = pSendBuffer;
25074 *pSize = usSendSize;
25075
25076 return WDI_STATUS_SUCCESS;
25077}
25078
25079/**
25080 @brief Process Update Scan Params function
25081
25082 @param pWDICtx: pointer to the WLAN DAL context
25083 pEventData: pointer to the event information structure
25084
25085 @see
25086 @return Result of the function call
25087*/
25088WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025089WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025090(
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 WDI_ControlBlockType* pWDICtx,
25092 WDI_EventInfoType* pEventData
25093)
25094{
25095 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25096 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025099 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025100
25101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025103 -------------------------------------------------------------------------*/
25104 if (( NULL == pEventData ) ||
25105 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25106 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25107 {
25108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 }
25113
25114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25115 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025116
25117 //
25118 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25119 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025120 if ( pWDICtx->wlanVersion.revision < 1 )
25121 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025122 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025123 &pSendBuffer, &usSendSize);
25124 }
25125 else
25126 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025127 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25128 &pSendBuffer, &usSendSize);
25129 }
25130
25131 if(WDI_STATUS_SUCCESS != wdiStatus)
25132 {
25133 //memory allocation failed
25134 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025135 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025136
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025141 wdiUpdateScanParamsCb, pEventData->pUserData,
25142 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025143}
25144
25145/**
25146 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025147
25148 @param pWDICtx: pointer to the WLAN DAL context
25149 pEventData: pointer to the event information structure
25150
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 @see
25152 @return Result of the function call
25153*/
25154WDI_Status
25155WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025156(
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 WDI_ControlBlockType* pWDICtx,
25158 WDI_EventInfoType* pEventData
25159)
25160{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025161 WDI_LowLevelIndType wdiInd;
25162 tpPrefNetwFoundParams pNetwFoundParams;
25163 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025164
25165
25166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 -------------------------------------------------------------------------*/
25169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25170 ( NULL == pEventData->pEventData ))
25171 {
25172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 }
25177
25178 /*-------------------------------------------------------------------------
25179 Extract indication and send it to UMAC
25180 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025181 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25182
25183 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25184 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25185 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25186
25187 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25188 {
25189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25190 "%s: fail to allocate memory", __func__);
25191 return WDI_STATUS_MEM_FAILURE;
25192 }
25193
25194 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25195 (pNetwFoundParams->ssId.length < 32 )?
25196 pNetwFoundParams->ssId.length : 32;
25197 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25198 pNetwFoundParams->ssId.ssId,
25199 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25200 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25201 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25202 pNetwFoundParams->frameLength;
25203 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25204 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25205 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025206
25207 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025208 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025209
Jeff Johnson295189b2012-06-20 16:38:30 -070025210 // DEBUG
25211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025212 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025214 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025216 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025217 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25218
ltimariu034f7d62013-01-24 18:54:33 -080025219 if ( pWDICtx->wdiLowLevelIndCB )
25220 {
25221 /*Notify UMAC*/
25222 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25223 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025224
25225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025226}
25227
25228/**
25229 @brief Process PNO Rsp function (called when a
25230 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025231
25232 @param pWDICtx: pointer to the WLAN DAL context
25233 pEventData: pointer to the event information structure
25234
Jeff Johnson295189b2012-06-20 16:38:30 -070025235 @see
25236 @return Result of the function call
25237*/
25238WDI_Status
25239WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025240(
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 WDI_ControlBlockType* pWDICtx,
25242 WDI_EventInfoType* pEventData
25243)
25244{
25245 WDI_Status wdiStatus;
25246 eHalStatus halStatus;
25247 WDI_PNOScanCb wdiPNOScanCb = NULL;
25248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25249
25250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025252 -------------------------------------------------------------------------*/
25253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25254 ( NULL == pEventData->pEventData ))
25255 {
25256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025260 }
25261
25262
Jeff Johnsone7245742012-09-05 17:12:55 -070025263 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025264
25265 /*-------------------------------------------------------------------------
25266 Extract response and send it to UMAC
25267 -------------------------------------------------------------------------*/
25268 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025269 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025270
25271 /*Notify UMAC*/
25272 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25273
Jeff Johnsone7245742012-09-05 17:12:55 -070025274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025275}/*WDI_ProcessSetPreferredNetworkRsp*/
25276
25277/**
25278 @brief Process RSSI Filter Rsp function (called when a
25279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025280
25281 @param pWDICtx: pointer to the WLAN DAL context
25282 pEventData: pointer to the event information structure
25283
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 @see
25285 @return Result of the function call
25286*/
25287WDI_Status
25288WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025289(
Jeff Johnson295189b2012-06-20 16:38:30 -070025290 WDI_ControlBlockType* pWDICtx,
25291 WDI_EventInfoType* pEventData
25292)
25293{
25294 WDI_Status wdiStatus;
25295 eHalStatus halStatus;
25296 WDI_RssiFilterCb wdiRssiFilterCb;
25297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25298
25299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025301 -------------------------------------------------------------------------*/
25302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25303 ( NULL == pEventData->pEventData ))
25304 {
25305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 }
25310
Jeff Johnsone7245742012-09-05 17:12:55 -070025311 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025312
25313 /*-------------------------------------------------------------------------
25314 Extract response and send it to UMAC
25315 -------------------------------------------------------------------------*/
25316 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025318
25319 /*Notify UMAC*/
25320 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25321
Jeff Johnsone7245742012-09-05 17:12:55 -070025322 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025323}/*WDI_ProcessSetRssiFilterRsp*/
25324
25325/**
25326 @brief Process Update Scan Params Rsp function (called when a
25327 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025328
25329 @param pWDICtx: pointer to the WLAN DAL context
25330 pEventData: pointer to the event information structure
25331
Jeff Johnson295189b2012-06-20 16:38:30 -070025332 @see
25333 @return Result of the function call
25334*/
25335WDI_Status
25336WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025337(
Jeff Johnson295189b2012-06-20 16:38:30 -070025338 WDI_ControlBlockType* pWDICtx,
25339 WDI_EventInfoType* pEventData
25340)
25341{
25342 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025343 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025345 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25347
25348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 -------------------------------------------------------------------------*/
25351 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25352 ( NULL == pEventData->pEventData ))
25353 {
25354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 }
25359
25360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025361 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025362
Jeff Johnsone7245742012-09-05 17:12:55 -070025363 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025364
25365 /*-------------------------------------------------------------------------
25366 Extract response and send it to UMAC
25367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025368 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25369 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 sizeof(halUpdScanParams.status));
25371
25372 uStatus = halUpdScanParams.status;
25373
25374 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025375 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025376
25377 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025378 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025379
Jeff Johnsone7245742012-09-05 17:12:55 -070025380 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025381
25382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025383 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 halUpdScanParams.status);
25385
25386 /*Notify UMAC*/
25387 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25388
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025390}
25391#endif // FEATURE_WLAN_SCAN_PNO
25392
25393#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025394WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025395WDI_8023MulticastListReq
25396(
25397 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25398 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25399 void* pUserData
25400)
25401{
25402 WDI_EventInfoType wdiEventData;
25403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25404
25405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025406 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025407
25408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025410 ------------------------------------------------------------------------*/
25411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25412 {
25413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25414 "WDI API call before module is initialized - Fail request");
25415
Jeff Johnsone7245742012-09-05 17:12:55 -070025416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 }
25418
25419 /*------------------------------------------------------------------------
25420 Fill in Event data and post to the Main FSM
25421 ------------------------------------------------------------------------*/
25422 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025423 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025425 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 wdiEventData.pUserData = pUserData;
25427
25428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25429}
25430
Jeff Johnsone7245742012-09-05 17:12:55 -070025431WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025432WDI_ReceiveFilterSetFilterReq
25433(
25434 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25435 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25436 void* pUserData
25437)
25438{
25439 WDI_EventInfoType wdiEventData;
25440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25441
25442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025443 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025444
25445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025446 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025447 ------------------------------------------------------------------------*/
25448 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25449 {
25450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25451 "WDI API call before module is initialized - Fail request");
25452
Jeff Johnsone7245742012-09-05 17:12:55 -070025453 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 }
25455
25456 /*------------------------------------------------------------------------
25457 Fill in Event data and post to the Main FSM
25458 ------------------------------------------------------------------------*/
25459 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025460 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25461 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025462 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25463 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025464 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025465 wdiEventData.pUserData = pUserData;
25466
25467
25468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25469}
25470
Jeff Johnsone7245742012-09-05 17:12:55 -070025471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025472WDI_FilterMatchCountReq
25473(
25474 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25475 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25476 void* pUserData
25477)
25478{
25479 WDI_EventInfoType wdiEventData;
25480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25481
25482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025483 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025484
25485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 ------------------------------------------------------------------------*/
25488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25489 {
25490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25491 "WDI API call before module is initialized - Fail request");
25492
Jeff Johnsone7245742012-09-05 17:12:55 -070025493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 }
25495
25496 /*------------------------------------------------------------------------
25497 Fill in Event data and post to the Main FSM
25498 ------------------------------------------------------------------------*/
25499 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025500 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025502 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025503 wdiEventData.pUserData = pUserData;
25504
25505
25506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25507}
25508
Jeff Johnsone7245742012-09-05 17:12:55 -070025509WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025510WDI_ReceiveFilterClearFilterReq
25511(
25512 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25513 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25514 void* pUserData
25515)
25516{
25517 WDI_EventInfoType wdiEventData;
25518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25519
25520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025521 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025522
25523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025524 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025525 ------------------------------------------------------------------------*/
25526 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25527 {
25528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25529 "WDI API call before module is initialized - Fail request");
25530
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 }
25533
25534 /*------------------------------------------------------------------------
25535 Fill in Event data and post to the Main FSM
25536 ------------------------------------------------------------------------*/
25537 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025540 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 wdiEventData.pUserData = pUserData;
25542
25543
25544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25545}
25546
25547/**
25548 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025549
25550 @param pWDICtx: pointer to the WLAN DAL context
25551 pEventData: pointer to the event information structure
25552
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 @see
25554 @return Result of the function call
25555*/
25556WDI_Status
25557WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025558(
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 WDI_ControlBlockType* pWDICtx,
25560 WDI_EventInfoType* pEventData
25561)
25562{
25563 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25564 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 wpt_uint16 usDataOffset = 0;
25567 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025568 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 wpt_uint8 ucCurrentBSSSesIdx = 0;
25571 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025572
25573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025574 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025575
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025576 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25577 if( NULL == pRcvFltMcAddrListType )
25578 {
25579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25580 "Failed to alloc in WDI_Process8023MulticastListReq");
25581 return WDI_STATUS_E_FAILURE;
25582 }
25583
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 -------------------------------------------------------------------------*/
25587 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025590 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025591 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25592 {
25593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025594 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025595 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 return WDI_STATUS_E_FAILURE;
25598 }
25599
25600 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25601 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25602 &pBSSSes);
25603 if ( NULL == pBSSSes )
25604 {
25605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025606 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025607 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025609 }
25610
25611 /*-----------------------------------------------------------------------
25612 Get message buffer
25613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25615 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025616 sizeof(tHalRcvFltMcAddrListType),
25617 &pSendBuffer, &usDataOffset, &usSendSize))||
25618 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25619 {
25620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25621 "Unable to get send buffer in "
25622 "WDI_Process8023MulticastListReq() %x %x %x",
25623 pEventData, pwdiFltPktSetMcListReqParamsType,
25624 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025625 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 }
25629
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025630 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025632 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025634 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25636 sizeof(tSirMacAddr));
25637 }
25638
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025639 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025641 pRcvFltMcAddrListType,
25642 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025643
25644 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025645 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025646
25647
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025648 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025654 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025655}
25656
25657/**
25658 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025659
25660 @param pWDICtx: pointer to the WLAN DAL context
25661 pEventData: pointer to the event information structure
25662
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 @see
25664 @return Result of the function call
25665*/
25666WDI_Status
25667WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025668(
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 WDI_ControlBlockType* pWDICtx,
25670 WDI_EventInfoType* pEventData
25671)
25672{
25673 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25674 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 wpt_uint16 usDataOffset = 0;
25677 wpt_uint16 usSendSize = 0;
25678 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025679 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025680 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025681 wpt_uint8 ucCurrentBSSSesIdx = 0;
25682 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025683 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25684 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025685
25686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025687 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025688
25689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 -------------------------------------------------------------------------*/
25692 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025696 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25697 {
25698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 return WDI_STATUS_E_FAILURE;
25702 }
25703
25704 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25705 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25706 &pBSSSes);
25707 if ( NULL == pBSSSes )
25708 {
25709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025710 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 }
25713
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025714 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25715 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025716
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025717 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25718 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25719 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25720
25721 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25722 usSessRcvPktFilterCfgSize);
25723
25724 if(NULL == pSessRcvPktFilterCfg)
25725 {
25726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25727 "%s: Failed to allocate memory for "
25728 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025729 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025730 WDI_ASSERT(0);
25731 return WDI_STATUS_E_FAILURE;
25732 }
25733
25734 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25735
25736 /*-----------------------------------------------------------------------
25737 Get message buffer
25738 -----------------------------------------------------------------------*/
25739
25740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25741 usSessRcvPktFilterCfgSize,
25742 &pSendBuffer, &usDataOffset, &usSendSize))||
25743 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25744 {
25745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25746 "Unable to get send buffer in "
25747 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25748 pEventData, pwdiSetRcvPktFilterReqInfo,
25749 wdiReceiveFilterSetFilterCb);
25750 WDI_ASSERT(0);
25751 wpalMemoryFree(pSessRcvPktFilterCfg);
25752 return WDI_STATUS_E_FAILURE;
25753 }
25754
25755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25756 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25757 usSendSize,pSessRcvPktFilterCfg);
25758
25759 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25760 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25761 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25762 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25763
25764 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25765
25766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25767 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25768 pSessRcvPktFilterCfg->filterType);
25769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25770 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25771 pSessRcvPktFilterCfg->coleasceTime);
25772
25773 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25774 {
25775 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25776 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25777 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25778 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25779 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25780 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25781 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25782 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25783
25784 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25785 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25786 8);
25787 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25788 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25789 8);
25790
25791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25792 "Out:Proto %d Comp Flag %d \n",
25793 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25794 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25795
25796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25797 "Data Offset %d Data Len %d\n",
25798 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25799 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25800
25801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25802 "CData: %d:%d:%d:%d:%d:%d\n",
25803 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25804 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25805 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25806 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25807 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25808 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25809
25810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25811 "MData: %d:%d:%d:%d:%d:%d\n",
25812 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25813 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25814 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25815 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25816 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25817 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25818 }
25819
25820 wpalMemoryCopy( pSendBuffer+usDataOffset,
25821 pSessRcvPktFilterCfg,
25822 usSessRcvPktFilterCfgSize);
25823
25824
25825 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25826 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25827
25828 wpalMemoryFree(pSessRcvPktFilterCfg);
25829
25830 }
25831 /*If SLM_SESSIONIZATION is not supported then do this */
25832 else
25833 {
25834 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25835 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25836 * sizeof(tHalRcvPktFilterParams));
25837
25838 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 usRcvPktFilterCfgSize);
25840
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025841 if(NULL == pRcvPktFilterCfg)
25842 {
25843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25844 "%s: Failed to allocate memory for "
25845 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025846 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025847 WDI_ASSERT(0);
25848 return WDI_STATUS_E_FAILURE;
25849 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025850
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025851 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025853 /*-----------------------------------------------------------------------
25854 Get message buffer
25855 -----------------------------------------------------------------------*/
25856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025857 usRcvPktFilterCfgSize,
25858 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025859 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25860 {
25861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025862 "Unable to get send buffer in "
25863 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25864 pEventData, pwdiSetRcvPktFilterReqInfo,
25865 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025866 WDI_ASSERT(0);
25867 wpalMemoryFree(pRcvPktFilterCfg);
25868 return WDI_STATUS_E_FAILURE;
25869 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025870
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025872 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025873 usSendSize,usRcvPktFilterCfgSize);
25874
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025875 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25876 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25877 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25878 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025879
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025886
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025887 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25888 {
25889 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25890 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25891 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25892 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25893 pRcvPktFilterCfg->paramsData[i].dataOffset =
25894 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25895 pRcvPktFilterCfg->paramsData[i].dataLength =
25896 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025897
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025898 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25900 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025901 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025902 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25903 8);
25904
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025906 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025907 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25909
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25911 "Data Offset %d Data Len %d\n",
25912 pRcvPktFilterCfg->paramsData[i].dataOffset,
25913 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025914
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25916 "CData: %d:%d:%d:%d:%d:%d\n",
25917 pRcvPktFilterCfg->paramsData[i].compareData[0],
25918 pRcvPktFilterCfg->paramsData[i].compareData[1],
25919 pRcvPktFilterCfg->paramsData[i].compareData[2],
25920 pRcvPktFilterCfg->paramsData[i].compareData[3],
25921 pRcvPktFilterCfg->paramsData[i].compareData[4],
25922 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025923
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25925 "MData: %d:%d:%d:%d:%d:%d\n",
25926 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25927 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25928 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25929 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25930 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25931 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25932 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025933
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025934 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 pRcvPktFilterCfg,
25936 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025937
25938
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025939 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25940 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025943 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025944 wpalMemoryFree(pRcvPktFilterCfg);
25945 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025947 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025951 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025952}
25953
25954/**
25955 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025956
25957 @param pWDICtx: pointer to the WLAN DAL context
25958 pEventData: pointer to the event information structure
25959
Jeff Johnson295189b2012-06-20 16:38:30 -070025960 @see
25961 @return Result of the function call
25962*/
25963WDI_Status
25964WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025965(
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 WDI_ControlBlockType* pWDICtx,
25967 WDI_EventInfoType* pEventData
25968)
25969{
25970 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25971 NULL;
25972 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25973 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025974 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 wpt_uint16 usDataOffset = 0;
25976 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025977 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25978 wpt_uint8 ucCurrentBSSSesIdx = 0;
25979 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025980
25981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025982 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025983
25984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 -------------------------------------------------------------------------*/
25987 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025989 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025991 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25992 {
25993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 }
25998
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025999 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26000 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26001 &pBSSSes);
26002 if ( NULL == pBSSSes )
26003 {
26004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026005 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026006 return WDI_STATUS_E_FAILURE;
26007 }
26008
Jeff Johnson295189b2012-06-20 16:38:30 -070026009 /*-----------------------------------------------------------------------
26010 Get message buffer
26011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26013 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026014 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026016 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 {
26018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26019 "Unable to get send buffer in "
26020 "WDI_ProcessFilterMatchCountReq() %x %x %x",
26021 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26022 wdiFilterMatchCountCb);
26023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026025 }
26026
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026027 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26028 wpalMemoryCopy( pSendBuffer+usDataOffset,
26029 &rcvFltPktMatchCntReqParam,
26030 sizeof(rcvFltPktMatchCntReqParam));
26031
Jeff Johnson295189b2012-06-20 16:38:30 -070026032 //
26033 // Don't need to fill send buffer other than header
26034 //
26035 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026037
26038
26039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026040 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26043 wdiFilterMatchCountCb,
26044 pEventData->pUserData,
26045 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026046}
26047
26048/**
26049 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026050
26051 @param pWDICtx: pointer to the WLAN DAL context
26052 pEventData: pointer to the event information structure
26053
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 @see
26055 @return Result of the function call
26056*/
26057WDI_Status
26058WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026059(
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 WDI_ControlBlockType* pWDICtx,
26061 WDI_EventInfoType* pEventData
26062)
Jeff Johnsone7245742012-09-05 17:12:55 -070026063{
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26065 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026066 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026067 wpt_uint16 usDataOffset = 0;
26068 wpt_uint16 usSendSize = 0;
26069 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026070 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026072
26073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026074 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026075
26076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026078 -------------------------------------------------------------------------*/
26079 if (( NULL == pEventData ) ||
26080 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26081 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026082 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26084 {
26085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 return WDI_STATUS_E_FAILURE;
26089 }
26090
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026091 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26093 &pBSSSes);
26094 if ( NULL == pBSSSes )
26095 {
26096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026097 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 }
26100
26101 /*-----------------------------------------------------------------------
26102 Get message buffer
26103 -----------------------------------------------------------------------*/
26104 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026105 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 sizeof(tHalRcvFltPktClearParam),
26107 &pSendBuffer, &usDataOffset, &usSendSize))||
26108 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26109 {
26110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26111 "Unable to get send buffer in "
26112 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26113 pEventData, pwdiRcvFltPktClearReqParamsType,
26114 wdiRcvFltPktClearFilterCb);
26115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 }
26118
26119
26120 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026122 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026123 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026124
Jeff Johnsone7245742012-09-05 17:12:55 -070026125 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26126 wpalMemoryCopy( pSendBuffer+usDataOffset,
26127 &rcvFltPktClearParam,
26128 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026129
26130 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026131 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026132
26133
26134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026135 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026138 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026139 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026140}
26141
26142/**
26143 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026144
26145 @param pWDICtx: pointer to the WLAN DAL context
26146 pEventData: pointer to the event information structure
26147
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 @see
26149 @return Result of the function call
26150*/
26151WDI_Status
26152WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026153(
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 WDI_ControlBlockType* pWDICtx,
26155 WDI_EventInfoType* pEventData
26156)
26157{
Jeff Johnson295189b2012-06-20 16:38:30 -070026158 eHalStatus halStatus;
26159 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026160 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26161 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26163
26164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026165 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026166
26167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026169 -------------------------------------------------------------------------*/
26170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26171 ( NULL == pEventData->pEventData ))
26172 {
26173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026174 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 }
26178
Jeff Johnsone7245742012-09-05 17:12:55 -070026179 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026180
26181 /*-------------------------------------------------------------------------
26182 Extract response and send it to UMAC
26183 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026184 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26185 {
26186 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26187 pEventData->pEventData,
26188 sizeof(halRcvFltPktSetMcListRsp));
26189
26190 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26191 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26192 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26193 halRcvFltPktSetMcListRsp.bssIdx;
26194 }
26195 else
26196 {
26197 halStatus = *((eHalStatus*)pEventData->pEventData);
26198 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26199 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026200
26201 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026202 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026203
Jeff Johnsone7245742012-09-05 17:12:55 -070026204 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026205}
26206
26207/**
26208 @brief Process Set Rsp function (called when a
26209 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026210
26211 @param pWDICtx: pointer to the WLAN DAL context
26212 pEventData: pointer to the event information structure
26213
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 @see
26215 @return Result of the function call
26216*/
26217WDI_Status
26218WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026219(
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 WDI_ControlBlockType* pWDICtx,
26221 WDI_EventInfoType* pEventData
26222)
26223{
Jeff Johnson295189b2012-06-20 16:38:30 -070026224 eHalStatus halStatus;
26225 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026226 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26227 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26229
26230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026231 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026232
26233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026235 -------------------------------------------------------------------------*/
26236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26237 ( NULL == pEventData->pEventData ))
26238 {
26239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 }
26244
26245 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026246 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026247
26248 /*-------------------------------------------------------------------------
26249 Extract response and send it to UMAC
26250 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026251 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26252 {
26253 wpalMemoryCopy( &halSetPktFilterRspParams,
26254 pEventData->pEventData,
26255 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026256
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026257 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26258 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26259 }
26260 else
26261 {
26262 halStatus = *((eHalStatus*)pEventData->pEventData);
26263 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26264 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026265 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026266 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026267
Jeff Johnsone7245742012-09-05 17:12:55 -070026268 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026269}
26270
26271/**
26272 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026273
26274 @param pWDICtx: pointer to the WLAN DAL context
26275 pEventData: pointer to the event information structure
26276
Jeff Johnson295189b2012-06-20 16:38:30 -070026277 @see
26278 @return Result of the function call
26279*/
26280WDI_Status
26281WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026282(
Jeff Johnson295189b2012-06-20 16:38:30 -070026283 WDI_ControlBlockType* pWDICtx,
26284 WDI_EventInfoType* pEventData
26285)
26286{
Jeff Johnson295189b2012-06-20 16:38:30 -070026287 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026289 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26290 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026291
26292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26293
26294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026295 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026296
26297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 -------------------------------------------------------------------------*/
26300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26301 ( NULL == pEventData->pEventData ))
26302 {
26303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 }
26308
Jeff Johnsone7245742012-09-05 17:12:55 -070026309 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026310
26311 /*-------------------------------------------------------------------------
26312 Extract response and send it to UMAC
26313 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026314 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26315 {
26316 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26317 pEventData->pEventData,
26318 sizeof(halRcvFltrPktMatachRsp));
26319
26320 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26321 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26322 }
26323 else
26324 {
26325 halStatus = *((eHalStatus*)pEventData->pEventData);
26326 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26327 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026328
26329 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026330 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026331
Jeff Johnsone7245742012-09-05 17:12:55 -070026332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026333}
26334
26335/**
26336 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026337
26338 @param pWDICtx: pointer to the WLAN DAL context
26339 pEventData: pointer to the event information structure
26340
Jeff Johnson295189b2012-06-20 16:38:30 -070026341 @see
26342 @return Result of the function call
26343*/
26344WDI_Status
26345WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026346(
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 WDI_ControlBlockType* pWDICtx,
26348 WDI_EventInfoType* pEventData
26349)
26350{
Jeff Johnson295189b2012-06-20 16:38:30 -070026351 eHalStatus halStatus;
26352 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026353 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26354 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26356
26357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026358 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026359
26360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 -------------------------------------------------------------------------*/
26363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26364 ( NULL == pEventData->pEventData ))
26365 {
26366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026370 }
26371
26372 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026374
26375 /*-------------------------------------------------------------------------
26376 Extract response and send it to UMAC
26377 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026378 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26379 {
26380 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26381 pEventData->pEventData,
26382 sizeof(halRcvFltPktClearRspMsg));
26383
26384 wdiRcvFltPktClearRspParamsType.wdiStatus =
26385 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26386 wdiRcvFltPktClearRspParamsType.bssIdx =
26387 halRcvFltPktClearRspMsg.bssIdx;
26388 }
26389 else
26390 {
26391 halStatus = *((eHalStatus*)pEventData->pEventData);
26392 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26393 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026394
26395 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026396 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026397
Jeff Johnsone7245742012-09-05 17:12:55 -070026398 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026399}
26400#endif // WLAN_FEATURE_PACKET_FILTERING
26401
26402/**
26403 @brief Process Shutdown Rsp function
26404 There is no shutdown response comming from HAL
26405 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026406
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026409
26410 @see
26411 @return Result of the function call
26412*/
26413WDI_Status
26414WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026415(
Jeff Johnson295189b2012-06-20 16:38:30 -070026416 WDI_ControlBlockType* pWDICtx,
26417 WDI_EventInfoType* pEventData
26418)
26419{
26420 /*There is no shutdown response comming from HAL - function just kept for
26421 simmetry */
26422 WDI_ASSERT(0);
26423 return WDI_STATUS_SUCCESS;
26424}/*WDI_ProcessShutdownRsp*/
26425
26426/**
26427 @brief WDI_SetPowerParamsReq
26428
Jeff Johnsone7245742012-09-05 17:12:55 -070026429 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026430 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026431
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 wdiPowerParamsCb: callback for passing back the response
26433 of the Set Power Params operation received from the
26434 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026435
Jeff Johnson295189b2012-06-20 16:38:30 -070026436 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026437 callback
26438
Jeff Johnson295189b2012-06-20 16:38:30 -070026439 @return Result of the function call
26440*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026441WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026442WDI_SetPowerParamsReq
26443(
26444 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26445 WDI_SetPowerParamsCb wdiPowerParamsCb,
26446 void* pUserData
26447)
26448{
26449 WDI_EventInfoType wdiEventData;
26450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26451
26452 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026453 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 ------------------------------------------------------------------------*/
26455 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26456 {
26457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26458 "WDI API call before module is initialized - Fail request");
26459
Jeff Johnsone7245742012-09-05 17:12:55 -070026460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026461 }
26462
26463 /*------------------------------------------------------------------------
26464 Fill in Event data and post to the Main FSM
26465 ------------------------------------------------------------------------*/
26466 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026467 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026468 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026469 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026470 wdiEventData.pUserData = pUserData;
26471
26472 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26473}/*WDI_SetPowerParamsReq*/
26474
26475/**
26476 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026477
26478 @param pWDICtx: pointer to the WLAN DAL context
26479 pEventData: pointer to the event information structure
26480
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 @see
26482 @return Result of the function call
26483*/
26484WDI_Status
26485WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026486(
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 WDI_ControlBlockType* pWDICtx,
26488 WDI_EventInfoType* pEventData
26489)
26490{
26491 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26492 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026493 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026494 wpt_uint16 usDataOffset = 0;
26495 wpt_uint16 usSendSize = 0;
26496 tSetPowerParamsType powerParams;
26497
26498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026500 -------------------------------------------------------------------------*/
26501 if (( NULL == pEventData ) ||
26502 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26503 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26504 {
26505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026509 }
26510
26511 /*-----------------------------------------------------------------------
26512 Get message buffer
26513 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 sizeof(powerParams),
26516 &pSendBuffer, &usDataOffset, &usSendSize))||
26517 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26518 {
26519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26520 "Unable to get send buffer in Set PNO req %x %x %x",
26521 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026524 }
26525
26526 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026527 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26529
26530 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026531 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026532 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26533
26534 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026535 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026536 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26537
26538 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026539 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26541
26542 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026543 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26545
26546 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 powerParams.uBETInterval =
26548 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026549
Yue Ma0da19492013-05-13 17:01:29 -070026550 /* MAX LI for modulated DTIM */
26551 powerParams.uMaxLIModulatedDTIM =
26552 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026553
26554 wpalMemoryCopy( pSendBuffer+usDataOffset,
26555 &powerParams,
26556 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026557
26558 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026559 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026560
26561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026562 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026564 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26565 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026566}
26567
26568/**
26569 @brief Process Power Params Rsp function (called when a
26570 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026571
26572 @param pWDICtx: pointer to the WLAN DAL context
26573 pEventData: pointer to the event information structure
26574
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 @see
26576 @return Result of the function call
26577*/
26578WDI_Status
26579WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026580(
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 WDI_ControlBlockType* pWDICtx,
26582 WDI_EventInfoType* pEventData
26583)
26584{
26585 WDI_Status wdiStatus;
26586 eHalStatus halStatus;
26587 WDI_SetPowerParamsCb wdiPowerParamsCb;
26588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26589
26590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026592 -------------------------------------------------------------------------*/
26593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26594 ( NULL == pEventData->pEventData ))
26595 {
26596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026600 }
26601
Jeff Johnsone7245742012-09-05 17:12:55 -070026602 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026603
26604 /*-------------------------------------------------------------------------
26605 Extract response and send it to UMAC
26606 -------------------------------------------------------------------------*/
26607 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026608 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026609
26610 /*Notify UMAC*/
26611 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26612
Jeff Johnsone7245742012-09-05 17:12:55 -070026613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026614}/*WDI_ProcessSetPowerParamsRsp*/
26615
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026616/**
26617 @brief WDI_dhcpStartInd
26618 Host will send an event to the FW when DHCP is initiated
26619
26620 @param
26621 WDI_DHCPInd: DHCP Indication
26622 @see
26623 @return Result of the function call
26624*/
26625WDI_Status
26626WDI_dhcpStartInd
26627(
26628 WDI_DHCPInd *wdiDHCPInd
26629)
26630{
26631 WDI_EventInfoType wdiEventData;
26632
26633 /*------------------------------------------------------------------------
26634 Sanity Check
26635 ------------------------------------------------------------------------*/
26636 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26637 {
26638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26639 "WDI API call before module is initialized - Fail request");
26640
26641 return WDI_STATUS_E_NOT_ALLOWED;
26642 }
26643
26644 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26645 wdiEventData.pEventData = wdiDHCPInd;
26646 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26647 wdiEventData.pCBfnc = NULL;
26648 wdiEventData.pUserData = NULL;
26649
26650 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26651}
26652
26653
26654/**
26655 @brief WDI_dhcpStopInd
26656 Host will send an event to the FW when DHCP is completed
26657
26658 @param
26659 WDI_DHCPInd: DHCP Indication
26660 @see
26661 @return Result of the function call
26662*/
26663WDI_Status
26664WDI_dhcpStopInd
26665(
26666 WDI_DHCPInd *wdiDHCPInd
26667)
26668{
26669 WDI_EventInfoType wdiEventData;
26670
26671 /*------------------------------------------------------------------------
26672 Sanity Check
26673 ------------------------------------------------------------------------*/
26674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26675 {
26676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26677 "WDI API call before module is initialized - Fail request");
26678
26679 return WDI_STATUS_E_NOT_ALLOWED;
26680 }
26681
26682 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26683 wdiEventData.pEventData = wdiDHCPInd;
26684 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26685 wdiEventData.pCBfnc = NULL;
26686 wdiEventData.pUserData = NULL;
26687
26688 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26689}
26690
26691
26692/**
26693 @brief Process DHCP Start Indication message and post it to HAL
26694
26695 @param pWDICtx: pointer to the WLAN DAL context
26696 pEventData: pointer to the event information structure
26697
26698 @see
26699 @return Result of the function call
26700*/
26701WDI_Status
26702WDI_ProcessDHCPStartInd
26703(
26704 WDI_ControlBlockType* pWDICtx,
26705 WDI_EventInfoType* pEventData
26706)
26707{
26708 wpt_uint8* pSendBuffer = NULL;
26709 wpt_uint16 usDataOffset = 0;
26710 wpt_uint16 usSendSize = 0;
26711 wpt_uint16 usLen = 0;
26712 WDI_DHCPInd* pwdiDHCPInd = NULL;
26713 tDHCPInfo* pDHCPInfo;
26714
26715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26716
26717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26718 "%s", __func__);
26719
26720 /*-------------------------------------------------------------------------
26721 Sanity check
26722 -------------------------------------------------------------------------*/
26723 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26724 {
26725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26726 "%s: Invalid parameters", __func__);
26727 WDI_ASSERT(0);
26728 return WDI_STATUS_E_FAILURE;
26729 }
26730 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26731 /*-----------------------------------------------------------------------
26732 Get message buffer
26733 -----------------------------------------------------------------------*/
26734
26735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26736 WDI_DHCP_START_IND,
26737 sizeof(tDHCPInfo),
26738 &pSendBuffer, &usDataOffset, &usSendSize))||
26739 ( usSendSize < (usDataOffset + usLen )))
26740 {
26741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26742 "Unable to get send buffer in DHCP Start req %p ",
26743 pEventData);
26744 WDI_ASSERT(0);
26745 return WDI_STATUS_E_FAILURE;
26746 }
26747
26748 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26749 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26750 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26751 WDI_MAC_ADDR_LEN);
26752
26753 pWDICtx->pReqStatusUserData = NULL;
26754 pWDICtx->pfncRspCB = NULL;
26755
26756 /*-------------------------------------------------------------------------
26757 Send DHCP Start Indication to HAL
26758 -------------------------------------------------------------------------*/
26759 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26760
26761}/*WDI_ProcessDHCPStartInd*/
26762
26763/**
26764 @brief Process DHCP Stop indication message and post it to HAL
26765
26766 @param pWDICtx: pointer to the WLAN DAL context
26767 pEventData: pointer to the event information structure
26768
26769 @see
26770 @return Result of the function call
26771*/
26772WDI_Status
26773WDI_ProcessDHCPStopInd
26774(
26775 WDI_ControlBlockType* pWDICtx,
26776 WDI_EventInfoType* pEventData
26777)
26778{
26779 wpt_uint8* pSendBuffer = NULL;
26780 wpt_uint16 usDataOffset = 0;
26781 wpt_uint16 usSendSize = 0;
26782 wpt_uint16 usLen = 0;
26783 WDI_DHCPInd* pwdiDHCPInd = NULL;
26784 tDHCPInfo* pDHCPInfo;
26785
26786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26787
26788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26789 "%s", __func__);
26790
26791 /*-------------------------------------------------------------------------
26792 Sanity check
26793 -------------------------------------------------------------------------*/
26794
26795 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26796 {
26797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26798 "%s: Invalid parameters", __func__);
26799 WDI_ASSERT(0);
26800 return WDI_STATUS_E_FAILURE;
26801 }
26802 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26803 /*-----------------------------------------------------------------------
26804 Get message buffer
26805 -----------------------------------------------------------------------*/
26806
26807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26808 WDI_DHCP_STOP_IND,
26809 sizeof(tDHCPInfo),
26810 &pSendBuffer, &usDataOffset, &usSendSize))||
26811 ( usSendSize < (usDataOffset + usLen )))
26812 {
26813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26814 "Unable to get send buffer in DHCP Start req %p ",
26815 pEventData);
26816 WDI_ASSERT(0);
26817 return WDI_STATUS_E_FAILURE;
26818 }
26819
26820 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26821 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26822 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26823 WDI_MAC_ADDR_LEN);
26824
26825 pWDICtx->pReqStatusUserData = NULL;
26826 pWDICtx->pfncRspCB = NULL;
26827 /*-------------------------------------------------------------------------
26828 Send DHCP Stop indication to HAL
26829 -------------------------------------------------------------------------*/
26830 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26831
26832}/*WDI_ProcessDHCPStopInd*/
26833
26834
Jeff Johnson295189b2012-06-20 16:38:30 -070026835#ifdef WLAN_FEATURE_GTK_OFFLOAD
26836/**
26837 @brief WDI_GTKOffloadReq will be called when the upper MAC
26838 wants to set GTK Rekey Counter while in power save. Upon
26839 the call of this API the WLAN DAL will pack and send a
26840 HAL GTK offload request message to the lower RIVA
26841 sub-system if DAL is in state STARTED.
26842
26843 In state BUSY this request will be queued. Request won't
26844 be allowed in any other state.
26845
26846 WDI_PostAssocReq must have been called.
26847
26848 @param pwdiGtkOffloadParams: the GTK offload as specified
26849 by the Device Interface
26850
26851 wdiGtkOffloadCb: callback for passing back the response
26852 of the GTK offload operation received from the device
26853
26854 pUserData: user data will be passed back with the
26855 callback
26856
26857 @see WDI_PostAssocReq
26858 @return Result of the function call
26859*/
26860WDI_Status
26861WDI_GTKOffloadReq
26862(
26863 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26864 WDI_GtkOffloadCb wdiGtkOffloadCb,
26865 void* pUserData
26866)
26867{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026868 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26870
26871 /*------------------------------------------------------------------------
26872 Sanity Check
26873 ------------------------------------------------------------------------*/
26874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26875 {
26876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26877 "WDI API call before module is initialized - Fail request");
26878
26879 return WDI_STATUS_E_NOT_ALLOWED;
26880 }
26881
26882 /*------------------------------------------------------------------------
26883 Fill in Event data and post to the Main FSM
26884 ------------------------------------------------------------------------*/
26885 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26886 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026887 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026888 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26889 wdiEventData.pUserData = pUserData;
26890
26891 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26892}
26893
26894
26895/**
26896 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26897 MAC wants to get GTK Rekey Counter while in power save.
26898 Upon the call of this API the WLAN DAL will pack and
26899 send a HAL GTK offload request message to the lower RIVA
26900 sub-system if DAL is in state STARTED.
26901
26902 In state BUSY this request will be queued. Request won't
26903 be allowed in any other state.
26904
26905 WDI_PostAssocReq must have been called.
26906
26907 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26908 Information Message as specified by the
26909 Device Interface
26910
26911 wdiGtkOffloadGetInfoCb: callback for passing back the
26912 response of the GTK offload operation received from the
26913 device
26914
26915 pUserData: user data will be passed back with the
26916 callback
26917
26918 @see WDI_PostAssocReq
26919 @return Result of the function call
26920*/
26921WDI_Status
26922WDI_GTKOffloadGetInfoReq
26923(
26924 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26925 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26926 void* pUserData
26927)
26928{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026929 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26931
26932 /*------------------------------------------------------------------------
26933 Sanity Check
26934 ------------------------------------------------------------------------*/
26935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26936 {
26937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26938 "WDI API call before module is initialized - Fail request");
26939
26940 return WDI_STATUS_E_NOT_ALLOWED;
26941 }
26942
26943 /*------------------------------------------------------------------------
26944 Fill in Event data and post to the Main FSM
26945 ------------------------------------------------------------------------*/
26946 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26947 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26948 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26949 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26950 wdiEventData.pUserData = pUserData;
26951
26952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26953}
26954
26955
26956/**
26957 @brief Process set GTK Offload Request function
26958
26959 @param pWDICtx: pointer to the WLAN DAL context
26960 pEventData: pointer to the event information structure
26961
26962 @see
26963 @return Result of the function call
26964*/
26965WDI_Status
26966WDI_ProcessGTKOffloadReq
26967(
26968 WDI_ControlBlockType* pWDICtx,
26969 WDI_EventInfoType* pEventData
26970)
26971{
26972 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26973 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26974 wpt_uint8* pSendBuffer = NULL;
26975 wpt_uint16 usDataOffset = 0;
26976 wpt_uint16 usSendSize = 0;
26977 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026978 wpt_uint8 ucCurrentSessionId = 0;
26979 WDI_BSSSessionType* pBSSSes = NULL;
26980
Jeff Johnson295189b2012-06-20 16:38:30 -070026981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26982
26983 /*-------------------------------------------------------------------------
26984 Sanity check
26985 -------------------------------------------------------------------------*/
26986 if (( NULL == pEventData ) ||
26987 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26988 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26989 {
26990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026992 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026993 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026994 }
26995
26996 /*-----------------------------------------------------------------------
26997 Get message buffer
26998 -----------------------------------------------------------------------*/
26999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27000 sizeof(gtkOffloadReqParams),
27001 &pSendBuffer, &usDataOffset, &usSendSize))||
27002 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27003 {
27004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27005 "Unable to get send buffer in GTK offload req %x %x %x",
27006 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27007 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027008 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027009 }
27010
27011 //
27012 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27013 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027014 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27015 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27016 &pBSSSes);
27017 if ( NULL == pBSSSes )
27018 {
27019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027020 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027021 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027022 }
27023
27024 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27025
Jeff Johnson295189b2012-06-20 16:38:30 -070027026 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27027 // Copy KCK
27028 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27029 // Copy KEK
27030 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27031 // Copy KeyReplayCounter
27032 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27033
27034 wpalMemoryCopy( pSendBuffer+usDataOffset,
27035 &gtkOffloadReqParams,
27036 sizeof(gtkOffloadReqParams));
27037
27038 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27039 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27040
27041 /*-------------------------------------------------------------------------
27042 Send Get STA Request to HAL
27043 -------------------------------------------------------------------------*/
27044 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27045 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027046
27047fail:
27048 // Release the message buffer so we don't leak
27049 wpalMemoryFree(pSendBuffer);
27050
27051failRequest:
27052 //WDA should have failure check to avoid the memory leak
27053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027054}
27055
27056
27057/**
27058 @brief Process GTK Offload Get Information Request function
27059
27060 @param pWDICtx: pointer to the WLAN DAL context
27061 pEventData: pointer to the event information structure
27062
27063 @see
27064 @return Result of the function call
27065*/
27066WDI_Status
27067WDI_ProcessGTKOffloadGetInfoReq
27068(
27069 WDI_ControlBlockType* pWDICtx,
27070 WDI_EventInfoType* pEventData
27071)
27072{
27073 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27074 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27075 wpt_uint8* pSendBuffer = NULL;
27076 wpt_uint16 usDataOffset = 0;
27077 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027078 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27079 wpt_uint8 ucCurrentSessionId = 0;
27080 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027081
27082 /*-------------------------------------------------------------------------
27083 Sanity check
27084 -------------------------------------------------------------------------*/
27085 if (( NULL == pEventData ) ||
27086 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27087 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27088 {
27089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027091 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027092 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027093 }
27094
27095 /*-----------------------------------------------------------------------
27096 Get message buffer
27097 -----------------------------------------------------------------------*/
27098 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027099 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027100 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027101 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 {
27103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27104 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27105 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027107 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027109 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27110 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27111 &pBSSSes);
27112 if ( NULL == pBSSSes )
27113 {
27114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027115 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027116 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027117 }
27118 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027119
27120 //
27121 // Don't need to fill send buffer other than header
27122 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027123 wpalMemoryCopy( pSendBuffer+usDataOffset,
27124 &halGtkOffloadGetInfoReqParams,
27125 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027126
27127 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27128 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27129
27130 /*-------------------------------------------------------------------------
27131 Send Get STA Request to HAL
27132 -------------------------------------------------------------------------*/
27133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27134 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027135fail:
27136 // Release the message buffer so we don't leak
27137 wpalMemoryFree(pSendBuffer);
27138
27139failRequest:
27140 //WDA should have failure check to avoid the memory leak
27141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027142}
27143
27144/**
27145 @brief Process host offload Rsp function (called when a
27146 response is being received over the bus from HAL)
27147
27148 @param pWDICtx: pointer to the WLAN DAL context
27149 pEventData: pointer to the event information structure
27150
27151 @see
27152 @return Result of the function call
27153*/
27154WDI_Status
27155WDI_ProcessGtkOffloadRsp
27156(
27157 WDI_ControlBlockType* pWDICtx,
27158 WDI_EventInfoType* pEventData
27159)
27160{
Jeff Johnson295189b2012-06-20 16:38:30 -070027161 eHalStatus halStatus;
27162 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027163 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27164 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27166
27167 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27168
27169 /*-------------------------------------------------------------------------
27170 Sanity check
27171 -------------------------------------------------------------------------*/
27172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27173 ( NULL == pEventData->pEventData))
27174 {
27175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027177 WDI_ASSERT(0);
27178 return WDI_STATUS_E_FAILURE;
27179 }
27180
27181 /*-------------------------------------------------------------------------
27182 Extract response and send it to UMAC
27183 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027184 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27185 {
27186 wpalMemoryCopy( &halGtkOffloadRspParams,
27187 pEventData->pEventData,
27188 sizeof(halGtkOffloadRspParams));
27189
27190 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027191 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027192 wdiGtkOffloadRsparams.bssIdx =
27193 halGtkOffloadRspParams.bssIdx;
27194 }
27195 else
27196 {
27197 halStatus = *((eHalStatus*)pEventData->pEventData);
27198 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27199 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027200
27201 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027202 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027203
27204 return WDI_STATUS_SUCCESS;
27205}
27206
27207/**
27208 @brief Process GTK Offload Get Information Response function
27209
27210 @param pWDICtx: pointer to the WLAN DAL context
27211 pEventData: pointer to the event information structure
27212
27213 @see
27214 @return Result of the function call
27215*/
27216WDI_Status
27217WDI_ProcessGTKOffloadGetInfoRsp
27218(
27219 WDI_ControlBlockType* pWDICtx,
27220 WDI_EventInfoType* pEventData
27221)
27222{
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027225 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27226 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027227 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027228
27229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27230
27231 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27232
27233 /*-------------------------------------------------------------------------
27234 Sanity check
27235 -------------------------------------------------------------------------*/
27236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27237 ( NULL == pEventData->pEventData ))
27238 {
27239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027241 WDI_ASSERT(0);
27242 return WDI_STATUS_E_FAILURE;
27243 }
27244
27245 /*-------------------------------------------------------------------------
27246 Extract response and send it to UMAC
27247 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027248 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27249 {
27250 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27251 pEventData->pEventData,
27252 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027253
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027254 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027255 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027256 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27257 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27258 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27259 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27260 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27261 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27262 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27263 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027264
27265 wpalMutexAcquire(&pWDICtx->wptMutex);
27266 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27267 &pBSSSes);
27268
27269 if ( NULL == pBSSSes )
27270 {
27271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27272 "Association sequence for this BSS does not exist or "
27273 "association no longer in progress - mysterious HAL response");
27274 wpalMutexRelease(&pWDICtx->wptMutex);
27275 return WDI_STATUS_E_NOT_ALLOWED;
27276 }
27277
27278 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27279 sizeof (wpt_macAddr));
27280 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027281 }
27282 else
27283 {
27284 halStatus = *((eHalStatus*)pEventData->pEventData);
27285 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27286 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027287 /*Notify UMAC*/
27288 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27289 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027290 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027291
27292 return WDI_STATUS_SUCCESS;
27293}
27294#endif // WLAN_FEATURE_GTK_OFFLOAD
27295
27296#ifdef WLAN_WAKEUP_EVENTS
27297WDI_Status
27298WDI_ProcessWakeReasonInd
27299(
27300 WDI_ControlBlockType* pWDICtx,
27301 WDI_EventInfoType* pEventData
27302)
27303{
27304 WDI_LowLevelIndType *pWdiInd;
27305 tpWakeReasonParams pWakeReasonParams;
27306 wpt_uint32 allocSize = 0;
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 /*-------------------------------------------------------------------------
27312 Sanity check
27313 -------------------------------------------------------------------------*/
27314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27315 ( NULL == pEventData->pEventData ))
27316 {
27317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027319 WDI_ASSERT( 0 );
27320 return WDI_STATUS_E_FAILURE;
27321 }
27322
27323 /*-------------------------------------------------------------------------
27324 Extract indication and send it to UMAC
27325 -------------------------------------------------------------------------*/
27326 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27327
27328 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27329
27330 //Allocate memory for WDI_WakeReasonIndType structure
27331 pWdiInd = wpalMemoryAllocate(allocSize) ;
27332
27333 if(NULL == pWdiInd)
27334 {
27335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27336 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027337 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 WDI_ASSERT(0);
27339 return WDI_STATUS_E_FAILURE;
27340 }
27341
27342 wpalMemoryZero(pWdiInd, allocSize);
27343
27344 /* Fill in the indication parameters*/
27345 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27346 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27347 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27348 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27349 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27350 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27351 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27352 &(pWakeReasonParams->aDataStart[0]),
27353 pWakeReasonParams->ulStoredDataLen);
27354
ltimariu034f7d62013-01-24 18:54:33 -080027355
27356 if ( pWDICtx->wdiLowLevelIndCB )
27357 {
27358 /*Notify UMAC*/
27359 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27360 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027361
27362 //Free memory allocated for WDI_WakeReasonIndType structure
27363 wpalMemoryFree(pWdiInd);
27364
27365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027366 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027367
27368 return WDI_STATUS_SUCCESS;
27369}
27370#endif // WLAN_WAKEUP_EVENTS
27371
27372void WDI_GetWcnssCompiledApiVersion
27373(
27374 WDI_WlanVersionType *pWcnssApiVersion
27375)
27376{
27377 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27378 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27379 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27380 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27381}
27382
27383/**
27384 @brief Process Set TM Level Rsp function (called when a
27385 response is being received over the bus from HAL)
27386
27387 @param pWDICtx: pointer to the WLAN DAL context
27388 pEventData: pointer to the event information structure
27389
27390 @see
27391 @return Result of the function call
27392*/
27393WDI_Status
27394WDI_ProcessSetTmLevelRsp
27395(
27396 WDI_ControlBlockType* pWDICtx,
27397 WDI_EventInfoType* pEventData
27398)
27399{
27400 WDI_Status wdiStatus;
27401 eHalStatus halStatus;
27402 WDI_SetTmLevelCb wdiSetTmLevelCb;
27403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27404
27405 /*-------------------------------------------------------------------------
27406 Sanity check
27407 -------------------------------------------------------------------------*/
27408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27409 ( NULL == pEventData->pEventData ))
27410 {
27411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 WDI_ASSERT(0);
27414 return WDI_STATUS_E_FAILURE;
27415 }
27416
27417 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27418
27419 /*-------------------------------------------------------------------------
27420 Extract response and send it to UMAC
27421 -------------------------------------------------------------------------*/
27422 halStatus = *((eHalStatus*)pEventData->pEventData);
27423 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27424
27425 /*Notify UMAC*/
27426 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27427
27428 return WDI_STATUS_SUCCESS;
27429}/*WDI_ProcessSetTmLevelRsp*/
27430
27431/**
27432 @brief Process Set Thermal Mitigation level Changed request
27433
27434 @param pWDICtx: pointer to the WLAN DAL context
27435 pEventData: pointer to the event information structure
27436
27437 @see
27438 @return Result of the function call
27439*/
27440WDI_Status
27441WDI_ProcessSetTmLevelReq
27442(
27443 WDI_ControlBlockType* pWDICtx,
27444 WDI_EventInfoType* pEventData
27445)
27446{
27447 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27448 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27449 wpt_uint8* pSendBuffer = NULL;
27450 wpt_uint16 usDataOffset = 0;
27451 wpt_uint16 usSendSize = 0;
27452 tSetThermalMitgationType halTmMsg;
27453
27454 /*-------------------------------------------------------------------------
27455 Sanity check
27456 -------------------------------------------------------------------------*/
27457 if (( NULL == pEventData ) ||
27458 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27459 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27460 {
27461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027463 WDI_ASSERT(0);
27464 return WDI_STATUS_E_FAILURE;
27465 }
27466
27467 /*-----------------------------------------------------------------------
27468 Get message buffer
27469 -----------------------------------------------------------------------*/
27470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27471 sizeof(halTmMsg),
27472 &pSendBuffer, &usDataOffset, &usSendSize))||
27473 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27474 {
27475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27476 "Unable to get send buffer in Set PNO req %x %x %x",
27477 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27478 WDI_ASSERT(0);
27479 return WDI_STATUS_E_FAILURE;
27480 }
27481
27482 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27483 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27484
27485 wpalMemoryCopy( pSendBuffer+usDataOffset,
27486 &halTmMsg,
27487 sizeof(halTmMsg));
27488
27489 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27490 pWDICtx->pfncRspCB = NULL;
27491 /*-------------------------------------------------------------------------
27492 Send Get STA Request to HAL
27493 -------------------------------------------------------------------------*/
27494 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27495 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27496}
27497
27498/* Fill the value from the global features enabled array to the global capabilities
27499 * bitmap struct
27500 */
27501static void
27502FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27503{
27504 wpt_int8 i;
27505 for (i=0; i<len; i++)
27506 {
27507 setFeatCaps(fCaps, enabledFeat[i]);
27508 }
27509}
27510
27511/**
27512 @brief WDI_featureCapsExchangeReq
27513 Post feature capability bitmap exchange event.
27514 Host will send its own capability to FW in this req and
27515 expect FW to send its capability back as a bitmap in Response
27516
27517 @param
27518
27519 wdiFeatureCapsExchangeCb: callback called on getting the response.
27520 It is kept to mantain similarity between WDI reqs and if needed, can
27521 be used in future. Currently, It is set to NULL
27522
27523 pUserData: user data will be passed back with the
27524 callback
27525
27526 @see
27527 @return Result of the function call
27528*/
27529WDI_Status
27530WDI_featureCapsExchangeReq
27531(
27532 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27533 void* pUserData
27534)
27535{
27536 WDI_EventInfoType wdiEventData;
27537 wpt_int32 fCapsStructSize;
27538
27539 /*------------------------------------------------------------------------
27540 Sanity Check
27541 ------------------------------------------------------------------------*/
27542 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27543 {
27544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27545 "WDI API call before module is initialized - Fail request");
27546
27547 return WDI_STATUS_E_NOT_ALLOWED;
27548 }
27549
27550 /* Allocate memory separately for global variable carrying FW caps */
27551 fCapsStructSize = sizeof(tWlanFeatCaps);
27552 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27553 if ( NULL == gpHostWlanFeatCaps )
27554 {
27555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27556 "Cannot allocate memory for host capability info\n");
27557 WDI_ASSERT(0);
27558 return WDI_STATUS_MEM_FAILURE;
27559 }
27560
27561 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27562
27563 /*------------------------------------------------------------------------
27564 Fill in Event data and post to the Main FSM
27565 ------------------------------------------------------------------------*/
27566 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27567 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027569 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027570 gpHostWlanFeatCaps->featCaps[0],
27571 gpHostWlanFeatCaps->featCaps[1],
27572 gpHostWlanFeatCaps->featCaps[2],
27573 gpHostWlanFeatCaps->featCaps[3]
27574 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27576 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027577 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27578 wdiEventData.pEventData = gpHostWlanFeatCaps;
27579 wdiEventData.uEventDataSize = fCapsStructSize;
27580 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27581 wdiEventData.pUserData = pUserData;
27582
27583 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27584}
27585
27586/**
Yathishd8713192012-12-10 14:21:35 -080027587 @brief Disable Active mode offload in Host
27588
27589 @param void
27590 @see
27591 @return void
27592*/
27593void
27594WDI_disableCapablityFeature(wpt_uint8 feature_index)
27595{
27596 supportEnabledFeatures[feature_index] = 0;
27597 return;
27598}
27599
27600/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 @brief Process Host-FW Capability Exchange Request function
27602
27603 @param pWDICtx: pointer to the WLAN DAL context
27604 pEventData: pointer to the event information structure
27605
27606 @see
27607 @return Result of the function call
27608*/
27609WDI_Status
27610WDI_ProcessFeatureCapsExchangeReq
27611(
27612 WDI_ControlBlockType* pWDICtx,
27613 WDI_EventInfoType* pEventData
27614)
27615{
27616 wpt_uint8* pSendBuffer = NULL;
27617 wpt_uint16 usDataOffset = 0;
27618 wpt_uint16 usSendSize = 0;
27619 wpt_uint16 usLen = 0;
27620
27621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27622
27623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027624 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027625
27626 /*-------------------------------------------------------------------------
27627 Sanity check
27628 -------------------------------------------------------------------------*/
27629 /* Call back function is NULL since not required for cap exchange req */
27630 if (( NULL == pEventData ) ||
27631 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27632 {
27633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027635 WDI_ASSERT(0);
27636 return WDI_STATUS_E_FAILURE;
27637 }
27638
27639 /*-----------------------------------------------------------------------
27640 Get message buffer
27641 -----------------------------------------------------------------------*/
27642 usLen = sizeof(tWlanFeatCaps);
27643
27644 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27645 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27646 usLen,
27647 &pSendBuffer, &usDataOffset, &usSendSize))||
27648 ( usSendSize < (usDataOffset + usLen )))
27649 {
27650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27651 "Unable to get send buffer in feat caps exchange req %x %x",
27652 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27653 WDI_ASSERT(0);
27654 return WDI_STATUS_E_FAILURE;
27655 }
27656
27657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027658 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027659 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27660 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27661 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27662 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27663 );
27664
27665 /* Copy host caps after the offset in the send buffer */
27666 wpalMemoryCopy( pSendBuffer+usDataOffset,
27667 (tWlanFeatCaps *)pEventData->pEventData,
27668 usLen);
27669
27670 /*-------------------------------------------------------------------------
27671 Send Start Request to HAL
27672 -------------------------------------------------------------------------*/
27673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27674 (WDI_StartRspCb)pEventData->pCBfnc,
27675 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27676
27677}/*WDI_ProcessFeatureCapsExchangeReq*/
27678
27679/**
27680 @brief Process Host-FW Capability Exchange Response function
27681
27682 @param pWDICtx: pointer to the WLAN DAL context
27683 pEventData: pointer to the event information structure
27684
27685 @see
27686 @return Result of the function call
27687*/
27688WDI_Status
27689WDI_ProcessFeatureCapsExchangeRsp
27690(
27691 WDI_ControlBlockType* pWDICtx,
27692 WDI_EventInfoType* pEventData
27693)
27694{
27695 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27696 wpt_int32 fCapsStructSize;
27697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27698
27699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027700 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027701
27702 /*-------------------------------------------------------------------------
27703 Sanity check
27704 -------------------------------------------------------------------------*/
27705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27706 ( NULL == pEventData->pEventData ))
27707 {
27708 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027710 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 WDI_ASSERT(0);
27712 return WDI_STATUS_E_FAILURE;
27713 }
27714
27715 /* Allocate memory separately for global variable carrying FW caps */
27716 fCapsStructSize = sizeof(tWlanFeatCaps);
27717 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27718 if ( NULL == gpFwWlanFeatCaps )
27719 {
27720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27721 "Cannot allocate memory for host capability info\n");
27722 WDI_ASSERT(0);
27723 return WDI_STATUS_MEM_FAILURE;
27724 }
27725
27726 /*-------------------------------------------------------------------------
27727 Unpack HAL Response Message - the header was already extracted by the
27728 main Response Handling procedure
27729 -------------------------------------------------------------------------*/
27730 /*-------------------------------------------------------------------------
27731 Extract response and send it to UMAC
27732 -------------------------------------------------------------------------*/
27733
27734 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27735 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027737 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027738 gpFwWlanFeatCaps->featCaps[0],
27739 gpFwWlanFeatCaps->featCaps[1],
27740 gpFwWlanFeatCaps->featCaps[2],
27741 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027742 );
27743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27744 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027745 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27746
27747 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27748 if (wdiFeatureCapsExchangeCb != NULL)
27749 wdiFeatureCapsExchangeCb(NULL, NULL);
27750
27751 return WDI_STATUS_SUCCESS;
27752}
27753
Mohit Khanna4a70d262012-09-11 16:30:12 -070027754#ifdef WLAN_FEATURE_11AC
27755WDI_Status
27756WDI_ProcessUpdateVHTOpModeRsp
27757(
27758 WDI_ControlBlockType* pWDICtx,
27759 WDI_EventInfoType* pEventData
27760)
27761{
27762 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27763 WDI_Status wdiStatus;
27764 eHalStatus halStatus;
27765
27766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27767
27768 /*-------------------------------------------------------------------------
27769 Sanity check
27770 -------------------------------------------------------------------------*/
27771 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27772 ( NULL == pEventData->pEventData))
27773 {
27774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027775 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027776 WDI_ASSERT(0);
27777 return WDI_STATUS_E_FAILURE;
27778 }
27779 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27780
27781 /*-------------------------------------------------------------------------
27782 Extract response and send it to UMAC
27783 -------------------------------------------------------------------------*/
27784 halStatus = *((eHalStatus*)pEventData->pEventData);
27785 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27786
27787 /*Notify UMAC*/
27788 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27789
27790 return WDI_STATUS_SUCCESS;
27791}
27792#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027793/**
27794 @brief WDI_getHostWlanFeatCaps
27795 WDI API that returns whether the feature passed to it as enum value in
27796 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27797 variable storing host capability bitmap to find this. This can be used by
27798 other moduels to decide certain things like call different APIs based on
27799 whether a particular feature is supported.
27800
27801 @param
27802
27803 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27804
27805 @see
27806 @return
27807 0 - if the feature is NOT supported in host
27808 any non-zero value - if the feature is SUPPORTED in host.
27809*/
27810wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27811{
27812 wpt_uint8 featSupported = 0;
27813 if (gpHostWlanFeatCaps != NULL)
27814 {
27815 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27816 }
27817 else
27818 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027820 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027821 }
27822 return featSupported;
27823}
27824
27825/**
27826 @brief WDI_getFwWlanFeatCaps
27827 WDI API that returns whether the feature passed to it as enum value in
27828 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27829 variable storing host capability bitmap to find this. This can be used by
27830 other moduels to decide certain things like call different APIs based on
27831 whether a particular feature is supported.
27832
27833 @param
27834
27835 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27836 in wlan_hal_msg.h.
27837
27838 @see
27839 @return
27840 0 - if the feature is NOT supported in FW
27841 any non-zero value - if the feature is SUPPORTED in FW.
27842*/
27843wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27844{
27845 wpt_uint8 featSupported = 0;
27846 if (gpFwWlanFeatCaps != NULL)
27847 {
27848 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27849 }
27850 else
27851 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027853 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027854 }
27855 return featSupported;
27856}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027857
27858#ifdef WLAN_FEATURE_11AC
27859WDI_Status
27860WDI_ProcessUpdateVHTOpModeReq
27861(
27862 WDI_ControlBlockType* pWDICtx,
27863 WDI_EventInfoType* pEventData
27864)
27865{
27866 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27867 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27868 wpt_uint8* pSendBuffer = NULL;
27869 wpt_uint16 usDataOffset = 0;
27870 wpt_uint16 usSendSize = 0;
27871
27872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27873
27874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027875 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027876
27877 /*-------------------------------------------------------------------------
27878 Sanity check
27879 -------------------------------------------------------------------------*/
27880 if (( NULL == pEventData ) ||
27881 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27882 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27883 {
27884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027885 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027886 WDI_ASSERT(0);
27887 return WDI_STATUS_E_FAILURE;
27888 }
27889
27890 /*-----------------------------------------------------------------------
27891 Get message buffer
27892 -----------------------------------------------------------------------*/
27893 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27894 sizeof(WDI_UpdateVHTOpMode),
27895 &pSendBuffer, &usDataOffset, &usSendSize))||
27896 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27897 {
27898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27899 "Unable to get send buffer in update vht opMode req");
27900 WDI_ASSERT(0);
27901 return WDI_STATUS_E_FAILURE;
27902 }
27903
27904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27905 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27906
27907 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27908 sizeof(WDI_UpdateVHTOpMode));
27909
27910 /*-------------------------------------------------------------------------
27911 Send Start Request to HAL
27912 -------------------------------------------------------------------------*/
27913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27914 wdiVHTOpModeCb,
27915 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27916
27917}
27918
27919WDI_Status
27920WDI_UpdateVHTOpModeReq
27921(
27922 WDI_UpdateVHTOpMode *pData,
27923 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27924 void* pUserData
27925)
27926{
27927 WDI_EventInfoType wdiEventData;
27928
27929 /*------------------------------------------------------------------------
27930 Sanity Check
27931 ------------------------------------------------------------------------*/
27932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27933 {
27934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27935 "WDI API call before module is initialized - Fail request");
27936
27937 return WDI_STATUS_E_NOT_ALLOWED;
27938 }
27939
27940 /*------------------------------------------------------------------------
27941 Fill in Event data and post to the Main FSM
27942 ------------------------------------------------------------------------*/
27943 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27944 wdiEventData.pEventData = pData;
27945 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27946 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27947 wdiEventData.pUserData = pUserData;
27948
27949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27950 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27951
27952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27953
27954}
27955#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027956
27957/**
27958 @brief WDI_TransportChannelDebug -
27959 Display DXE Channel debugging information
27960 User may request to display DXE channel snapshot
27961 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027962
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027963 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027964 @param enableStallDetect : Enable stall detect feature
27965 This feature will take effect to data performance
27966 Not integrate till fully verification
27967 @see
27968 @return none
27969*/
27970void WDI_TransportChannelDebug
27971(
27972 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027973 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027974)
27975{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027976 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027977 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027978}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027979/**
27980 @brief WDI_SsrTimerCB
27981 Callback function for SSR timer, if this is called then the graceful
27982 shutdown for Riva did not happen.
27983
27984 @param pUserData : user data to timer
27985
27986 @see
27987 @return none
27988*/
27989void
27990WDI_SsrTimerCB
27991(
27992 void *pUserData
27993)
27994{
27995 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
27996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27997
27998 if (NULL == pWDICtx )
27999 {
28000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028001 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028002 WDI_ASSERT(0);
28003 return;
28004 }
28005 wpalRivaSubystemRestart();
28006
28007 return;
28008
28009}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028010
28011/**
28012 @brief WDI_SetEnableSSR -
28013 This API is called to enable/disable SSR on WDI timeout.
28014
28015 @param enableSSR : enable/disable SSR
28016
28017 @see
28018 @return none
28019*/
28020void WDI_SetEnableSSR(wpt_boolean enableSSR)
28021{
28022 gWDICb.bEnableSSR = enableSSR;
28023}
Leo Chang00bc9132013-08-01 19:21:11 -070028024
28025
28026#ifdef FEATURE_WLAN_LPHB
28027/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028028 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028029 This function will be invoked when FW detects low power
28030 heart beat failure
28031
28032 @param pWDICtx : wdi context
28033 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028034 @see
28035 @return Result of the function call
28036*/
28037WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028038WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028039(
28040 WDI_ControlBlockType* pWDICtx,
28041 WDI_EventInfoType* pEventData
28042)
28043{
28044 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028045 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28047
28048 /*-------------------------------------------------------------------------
28049 Sanity check
28050 -------------------------------------------------------------------------*/
28051 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28052 (NULL == pEventData->pEventData))
28053 {
28054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28055 "%s: Invalid parameters", __func__);
28056 WDI_ASSERT(0);
28057 return WDI_STATUS_E_FAILURE;
28058 }
28059
28060 /*-------------------------------------------------------------------------
28061 Extract indication and send it to UMAC
28062 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028063 wpalMemoryCopy(&lphbIndicationParam,
28064 pEventData->pEventData,
28065 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028066
Leo Chang8d19a5f2013-09-26 13:32:26 -070028067 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028068 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028069 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028070 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028071 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028072 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028073 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028074 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028075 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028076 /*Notify UMAC*/
28077 if (pWDICtx->wdiLowLevelIndCB)
28078 {
28079 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28080 }
28081
28082 return WDI_STATUS_SUCCESS;
28083}
28084
28085/**
28086 @brief WDI_ProcessLphbCfgRsp -
28087 LPHB configuration response from FW
28088
28089 @param pWDICtx : wdi context
28090 pEventData : indication data
28091
28092 @see
28093 @return Result of the function call
28094*/
28095WDI_Status WDI_ProcessLphbCfgRsp
28096(
28097 WDI_ControlBlockType* pWDICtx,
28098 WDI_EventInfoType* pEventData
28099)
28100{
28101 WDI_Status wdiStatus;
28102 eHalStatus halStatus;
28103 WDI_LphbCfgCb wdiLphbCfgCb;
28104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28105
28106 /*-------------------------------------------------------------------------
28107 Sanity check
28108 -------------------------------------------------------------------------*/
28109 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28110 (NULL == pEventData->pEventData))
28111 {
28112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28113 "%s: Invalid parameters", __func__);
28114 WDI_ASSERT(0);
28115 return WDI_STATUS_E_FAILURE;
28116 }
28117
28118 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28119
28120 /*-------------------------------------------------------------------------
28121 Extract response and send it to UMAC
28122 -------------------------------------------------------------------------*/
28123 halStatus = *((eHalStatus*)pEventData->pEventData);
28124 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28125
28126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28127 "LPHB Cfg Rsp Return status %d", wdiStatus);
28128 /*Notify UMAC*/
28129 if (NULL != wdiLphbCfgCb)
28130 {
28131 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28132 }
28133
28134 return WDI_STATUS_SUCCESS;
28135}
28136
28137/**
28138 @brief WDI_ProcessLPHBConfReq -
28139 LPHB configuration request to FW
28140
28141 @param pWDICtx : wdi context
28142 pEventData : indication data
28143
28144 @see
28145 @return none
28146*/
28147WDI_Status WDI_ProcessLPHBConfReq
28148(
28149 WDI_ControlBlockType* pWDICtx,
28150 WDI_EventInfoType* pEventData
28151)
28152{
28153 WDI_LPHBReq *pLphbReqParams;
28154 WDI_Status wdiStatus;
28155 wpt_uint8* pSendBuffer = NULL;
28156 wpt_uint16 usDataOffset = 0;
28157 wpt_uint16 usSendSize = 0;
28158 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28160
28161 /*-------------------------------------------------------------------------
28162 Sanity check
28163 -------------------------------------------------------------------------*/
28164 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28165 {
28166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28167 "%s: Invalid parameters in Suspend ind",__func__);
28168 WDI_ASSERT(0);
28169 return WDI_STATUS_E_FAILURE;
28170 }
28171
28172 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28173
28174 /*-----------------------------------------------------------------------
28175 Get message buffer
28176 -----------------------------------------------------------------------*/
28177 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28178 WDI_LPHB_CFG_REQ,
28179 sizeof(tHalLowPowerHeartBeatReqMsg),
28180 &pSendBuffer, &usDataOffset, &usSendSize))||
28181 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28182 {
28183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28184 "Unable to get send buffer in LPHB Ind ");
28185 WDI_ASSERT(0);
28186 return WDI_STATUS_E_FAILURE;
28187 }
28188
28189 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28190 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28191
28192 halLphbReqRarams->lowPowerHeartBeatCmdType =
28193 (tANI_U16)(++pLphbReqParams->cmd);
28194 switch ((tANI_U16)pLphbReqParams->cmd)
28195 {
28196 case WDI_LPHB_SET_EN_PARAMS_INDID:
28197 halLphbReqRarams->sessionIdx =
28198 pLphbReqParams->params.lphbEnableReq.session;
28199 halLphbReqRarams->options.control.heartBeatEnable =
28200 pLphbReqParams->params.lphbEnableReq.enable;
28201 halLphbReqRarams->options.control.heartBeatType =
28202 pLphbReqParams->params.lphbEnableReq.item;
28203 break;
28204
28205 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28206 halLphbReqRarams->sessionIdx =
28207 pLphbReqParams->params.lphbTcpParamReq.session;
28208 halLphbReqRarams->options.tcpParams.timeOutSec =
28209 pLphbReqParams->params.lphbTcpParamReq.timeout;
28210 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28211 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28212 sizeof(v_U32_t));
28213 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28214 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28215 sizeof(v_U32_t));
28216
28217 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28218 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28219 WDI_MAC_ADDR_LEN);
28220
28221 halLphbReqRarams->options.tcpParams.hostPort =
28222 pLphbReqParams->params.lphbTcpParamReq.src_port;
28223 halLphbReqRarams->options.tcpParams.destPort =
28224 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028225 halLphbReqRarams->options.tcpParams.timePeriodSec =
28226 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28227 halLphbReqRarams->options.tcpParams.tcpSn =
28228 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028229 break;
28230
28231 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28232 halLphbReqRarams->sessionIdx =
28233 pLphbReqParams->params.lphbTcpFilterReq.session;
28234 halLphbReqRarams->options.tcpUdpFilter.offset =
28235 pLphbReqParams->params.lphbTcpFilterReq.offset;
28236 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28237 pLphbReqParams->params.lphbTcpFilterReq.length;
28238 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28239 pLphbReqParams->params.lphbTcpFilterReq.filter,
28240 WDI_LPHB_FILTER_LEN);
28241 break;
28242
28243 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28244 halLphbReqRarams->sessionIdx =
28245 pLphbReqParams->params.lphbUdpParamReq.session;
28246 halLphbReqRarams->options.udpParams.timeOutSec =
28247 pLphbReqParams->params.lphbUdpParamReq.timeout;
28248 halLphbReqRarams->options.udpParams.timePeriodSec =
28249 pLphbReqParams->params.lphbUdpParamReq.interval;
28250 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28251 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28252 sizeof(v_U32_t));
28253 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28254 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28255 sizeof(v_U32_t));
28256
28257 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28258 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28259 WDI_MAC_ADDR_LEN);
28260
28261 halLphbReqRarams->options.udpParams.hostPort =
28262 pLphbReqParams->params.lphbUdpParamReq.src_port;
28263 halLphbReqRarams->options.udpParams.destPort =
28264 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28265 break;
28266
28267 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28268 halLphbReqRarams->sessionIdx =
28269 pLphbReqParams->params.lphbUdpFilterReq.session;
28270 halLphbReqRarams->options.tcpUdpFilter.offset =
28271 pLphbReqParams->params.lphbUdpFilterReq.offset;
28272 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28273 pLphbReqParams->params.lphbUdpFilterReq.length;
28274 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28275 pLphbReqParams->params.lphbUdpFilterReq.filter,
28276 WDI_LPHB_FILTER_LEN);
28277 break;
28278
28279 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28280 /* NA */
28281 break;
28282
28283 default:
28284 break;
28285 }
28286
28287 /*-------------------------------------------------------------------------
28288 Send Suspend Request to HAL
28289 -------------------------------------------------------------------------*/
28290 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28291 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28292
28293 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28294 usSendSize, pWDICtx->pfncRspCB,
28295 pWDICtx->pReqStatusUserData,
28296 WDI_LPHB_CFG_RESP);
28297
28298 return wdiStatus;
28299}
28300
28301/**
28302 @brief WDI_LPHBConfReq -
28303 LPHB configuration request API
28304
28305 @param lphbconfParam : configuration parameter
28306 usrData : client context
28307 lphbCfgCb : callback function pointer
28308
28309 @see
28310 @return Success or fail status code
28311*/
28312WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28313 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28314{
28315 WDI_EventInfoType wdiEventData;
28316
28317 /*------------------------------------------------------------------------
28318 Sanity Check
28319 ------------------------------------------------------------------------*/
28320 if (eWLAN_PAL_FALSE == gWDIInitialized)
28321 {
28322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28323 "WDI API call before module is initialized - Fail request");
28324
28325 return WDI_STATUS_E_NOT_ALLOWED;
28326 }
28327
28328 /*------------------------------------------------------------------------
28329 Fill in Event data and post to the Main FSM
28330 ------------------------------------------------------------------------*/
28331 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28332 wdiEventData.pEventData = lphbconfParam;
28333 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28334 wdiEventData.pCBfnc = lphbCfgCb;
28335 wdiEventData.pUserData = usrData;
28336
28337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28338}
28339#endif /* FEATURE_WLAN_LPHB */
28340
Ravi Joshi96d77342013-07-23 08:37:49 -070028341/**
28342 @brief WDI_ProcessIbssPeerInactivityInd
28343 Process peer inactivity indication coming from HAL
28344
28345 @param pWDICtx: pointer to the WLAN DAL context
28346 pEventData: pointer to the event information structure
28347 @see
28348 @return Result of the function call
28349*/
28350WDI_Status
28351WDI_ProcessIbssPeerInactivityInd
28352(
28353 WDI_ControlBlockType* pWDICtx,
28354 WDI_EventInfoType* pEventData
28355)
28356{
28357 WDI_LowLevelIndType wdiInd;
28358 tIbssPeerInactivityIndMsg halIbssIndMsg;
28359
28360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28361
28362 /*-------------------------------------------------------------------------
28363 Sanity check
28364 -------------------------------------------------------------------------*/
28365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28366 ( NULL == pEventData->pEventData ))
28367 {
28368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28369 "%s: Invalid parameters", __func__);
28370 WDI_ASSERT( 0 );
28371 return WDI_STATUS_E_FAILURE;
28372 }
28373
28374 /*-------------------------------------------------------------------------
28375 Extract indication and send it to UMAC
28376 -------------------------------------------------------------------------*/
28377 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28378 pEventData->pEventData,
28379 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28380
28381 /*Fill in the indication parameters*/
28382 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28383
28384 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28385 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28386
28387 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28388 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28389
28390 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28391 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28392 sizeof(tSirMacAddr));
28393
28394 /*Notify UMAC*/
28395 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28396
28397 return WDI_STATUS_SUCCESS;
28398
28399} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028400
28401#ifdef FEATURE_WLAN_BATCH_SCAN
28402
28403/**
28404 @brief Process stop batch indication from WDA
28405
28406 @param pWDICtx: pointer to the WLAN DAL context
28407 pEventData: pointer to the event information structure
28408
28409 @see
28410 @return Result of the function call
28411*/
28412WDI_Status
28413WDI_ProcessStopBatchScanInd
28414(
28415 WDI_ControlBlockType* pWDICtx,
28416 WDI_EventInfoType* pEventData
28417)
28418{
28419 wpt_uint8* pSendBuffer = NULL;
28420 wpt_uint16 usDataOffset = 0;
28421 wpt_uint16 usSendSize = 0;
28422 WDI_Status wdiStatus;
28423 tHalBatchScanStopIndParam *pHalInd = NULL;
28424 WDI_StopBatchScanIndType *pWdiInd = NULL;
28425
28426
28427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28428
28429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28430 "%s", __func__);
28431
28432 /*-------------------------------------------------------------------------
28433 Sanity check
28434 -------------------------------------------------------------------------*/
28435
28436 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28437 {
28438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28439 "%s: Invalid parameters", __func__);
28440 WDI_ASSERT(0);
28441 return WDI_STATUS_E_FAILURE;
28442 }
28443 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28444 /*-----------------------------------------------------------------------
28445 Get message buffer
28446 -----------------------------------------------------------------------*/
28447
28448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28449 WDI_STOP_BATCH_SCAN_IND,
28450 sizeof(tHalBatchScanStopIndParam),
28451 &pSendBuffer, &usDataOffset, &usSendSize))||
28452 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28453 {
28454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28455 "Unable to get send buffer in stop batch scan ind %p ",
28456 pEventData);
28457 WDI_ASSERT(0);
28458 return WDI_STATUS_E_FAILURE;
28459 }
28460
28461 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28462 pHalInd->param = pWdiInd->param;
28463
28464 pWDICtx->pReqStatusUserData = NULL;
28465 pWDICtx->pfncRspCB = NULL;
28466 /*-------------------------------------------------------------------------
28467 Send Stop batch scan indication to HAL
28468 -------------------------------------------------------------------------*/
28469 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28470 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28471}
28472
28473/**
28474 @brief This API is called to trigger batch scan results from FW
28475
28476 @param pWDICtx: pointer to the WLAN DAL context
28477 pEventData: pointer to the event information structure
28478
28479 @see
28480 @return Result of the function call
28481*/
28482WDI_Status
28483WDI_ProcessTriggerBatchScanResultInd
28484(
28485 WDI_ControlBlockType* pWDICtx,
28486 WDI_EventInfoType* pEventData
28487)
28488{
28489 WDI_Status wdiStatus;
28490 wpt_uint8* pSendBuffer = NULL;
28491 wpt_uint16 usDataOffset = 0;
28492 wpt_uint16 usSendSize = 0;
28493 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28494 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28495
28496
28497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28498
28499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28500 "%s", __func__);
28501
28502 /*-------------------------------------------------------------------------
28503 Sanity check
28504 -------------------------------------------------------------------------*/
28505
28506 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28507 {
28508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28509 "%s: Invalid parameters", __func__);
28510 WDI_ASSERT(0);
28511 return WDI_STATUS_E_FAILURE;
28512 }
28513 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28514 /*-----------------------------------------------------------------------
28515 Get message buffer
28516 -----------------------------------------------------------------------*/
28517
28518 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28519 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28520 sizeof(tHalBatchScanTriggerResultParam),
28521 &pSendBuffer, &usDataOffset, &usSendSize))||
28522 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28523 {
28524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28525 "Unable to get send buffer in stop batch scan ind %p ",
28526 pEventData);
28527 WDI_ASSERT(0);
28528 return WDI_STATUS_E_FAILURE;
28529 }
28530
28531 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28532 pHalInd->param = pWdiInd->param;
28533
28534 pWDICtx->pReqStatusUserData = NULL;
28535 pWDICtx->pfncRspCB = NULL;
28536 /*-------------------------------------------------------------------------
28537 Send trigger batch scan result indication to HAL
28538 -------------------------------------------------------------------------*/
28539 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28540 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28541}
28542
28543
28544/**
28545 @brief Process set batch scan response from FW
28546
28547 @param pWDICtx: pointer to the WLAN DAL context
28548 pEventData: pointer to the event information structure
28549
28550 @see
28551 @return Result of the function call
28552*/
28553WDI_Status
28554WDI_ProcessSetBatchScanRsp
28555(
28556 WDI_ControlBlockType* pWDICtx,
28557 WDI_EventInfoType* pEventData
28558)
28559{
28560 WDI_SetBatchScanCb wdiSetBatchScanCb;
28561 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28562
28563 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28565
28566 /*sanity check*/
28567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28568 ( NULL == pEventData->pEventData))
28569 {
28570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28571 "%s: Invalid parameters", __func__);
28572 WDI_ASSERT(0);
28573 return WDI_STATUS_E_FAILURE;
28574 }
28575
28576 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28577 if ( NULL == wdiSetBatchScanCb)
28578 {
28579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28580 "%s: call back function is NULL", __func__);
28581 WDI_ASSERT(0);
28582 return WDI_STATUS_E_FAILURE;
28583 }
28584
28585 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28586
28587 if (NULL == pSetBatchScanRsp)
28588 {
28589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28590 "Failed to allocate memory in set batch scan response %x %x %x ",
28591 pWDICtx, pEventData, pEventData->pEventData);
28592 WDI_ASSERT(0);
28593 return WDI_STATUS_E_FAILURE;
28594 }
28595
28596 /*extract response and send it to UMAC*/
28597 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28598
28599 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28600
28601 /*Notify UMAC*/
28602 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28603
28604 wpalMemoryFree(pSetBatchScanRsp);
28605
28606 return WDI_STATUS_SUCCESS;
28607}/*WDI_ProcessSetBatchScanRsp*/
28608
28609/**
28610 @brief Process batch scan result indication from FW
28611
28612 @param pWDICtx: pointer to the WLAN DAL context
28613 pEventData: pointer to the event information structure
28614
28615 @see
28616 @return Result of the function call
28617*/
28618WDI_Status
28619WDI_ProcessBatchScanResultInd
28620(
28621 WDI_ControlBlockType* pWDICtx,
28622 WDI_EventInfoType* pEventData
28623)
28624{
28625 void *pBatchScanResultInd;
28626 WDI_LowLevelIndType wdiInd;
28627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28628
28629 /*sanity check*/
28630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28631 ( NULL == pEventData->pEventData))
28632 {
28633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28634 "%s: Invalid parameters", __func__);
28635 WDI_ASSERT(0);
28636 return WDI_STATUS_E_FAILURE;
28637 }
28638
28639 /*extract response and send it to UMAC*/
28640 pBatchScanResultInd = (void *)pEventData->pEventData;
28641
28642 /*Fill in the indication parameters*/
28643 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28644
28645 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28646
28647 /*Notify UMAC*/
28648 if (pWDICtx->wdiLowLevelIndCB)
28649 {
28650 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28651 }
28652 else
28653 {
28654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28655 "%s: WDILowLevelIndCb is null", __func__);
28656 WDI_ASSERT(0);
28657 return WDI_STATUS_E_FAILURE;
28658 }
28659
28660 return WDI_STATUS_SUCCESS;
28661} /*End of WDI_ProcessBatchScanResultInd*/
28662
28663/**
28664 @brief WDI_ProcessSetBatchScanReq -
28665 Set batch scan request to FW
28666
28667 @param pWDICtx : wdi context
28668 pEventData : indication data
28669
28670 @see
28671 @return none
28672*/
28673WDI_Status WDI_ProcessSetBatchScanReq
28674(
28675 WDI_ControlBlockType* pWDICtx,
28676 WDI_EventInfoType* pEventData
28677)
28678{
28679 WDI_SetBatchScanReqType *pWdiReq;
28680 WDI_Status wdiStatus;
28681 wpt_uint8* pSendBuffer = NULL;
28682 wpt_uint16 usDataOffset = 0;
28683 wpt_uint16 usSendSize = 0;
28684 tHalBatchScanSetParams *pHalReq;
28685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28686
28687 /*sanity check*/
28688 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28689 {
28690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28691 "%s: Invalid parameters in set batch scan request", __func__);
28692 WDI_ASSERT(0);
28693 return WDI_STATUS_E_FAILURE;
28694 }
28695
28696
28697 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
28698
28699
28700 /*get message buffer*/
28701 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28702 WDI_SET_BATCH_SCAN_REQ,
28703 sizeof(tHalBatchScanSetParams),
28704 &pSendBuffer, &usDataOffset, &usSendSize))||
28705 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
28706 {
28707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28708 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
28709 WDI_ASSERT(0);
28710 return WDI_STATUS_E_FAILURE;
28711 }
28712
28713 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
28714
28715 pHalReq->rtt = pWdiReq->rtt;
28716 pHalReq->rfBand = pWdiReq->rfBand;
28717 pHalReq->bestNetworks = pWdiReq->bestNetwork;
28718 pHalReq->scanInterval = pWdiReq->scanFrequency;
28719 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
28720
28721 /*send set batch scan request to fw*/
28722 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28723 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28724
28725 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28726 usSendSize, pWDICtx->pfncRspCB,
28727 pWDICtx->pReqStatusUserData,
28728 WDI_SET_BATCH_SCAN_RESP);
28729
28730 return wdiStatus;
28731}
28732
28733/**
28734 @brief WDI_SetBatchScanReq
28735 This API is called to set batch scan request in FW
28736
28737 @param pBatchScanReqParam : pointer to set batch scan re param
28738 usrData : Client context
28739 setBatchScanRspCb : set batch scan resp callback
28740 @see
28741 @return SUCCESS or FAIL
28742*/
28743WDI_Status WDI_SetBatchScanReq
28744(
28745 void *pBatchScanReqParam,
28746 void *usrData,
28747 WDI_SetBatchScanCb setBatchScanRspCb
28748)
28749{
28750 WDI_EventInfoType wdiEventData;
28751
28752 /*sanity check*/
28753 if (eWLAN_PAL_FALSE == gWDIInitialized)
28754 {
28755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28756 "WDI API call before module is initialized - Fail request");
28757
28758 return WDI_STATUS_E_NOT_ALLOWED;
28759 }
28760
28761 /* fill in event data and post to the main FSM */
28762 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
28763 wdiEventData.pEventData = pBatchScanReqParam;
28764 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
28765 wdiEventData.pCBfnc = setBatchScanRspCb;
28766 wdiEventData.pUserData = usrData;
28767
28768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28769}
28770
28771/**
28772 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
28773
28774 @param None
28775
28776 @see
28777
28778 @return Status of the request
28779*/
28780WDI_Status
28781WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
28782{
28783 WDI_EventInfoType wdiEventData;
28784
28785 /*-------------------------------------------------------------------------
28786 Sanity Check
28787 ------------------------------------------------------------------------*/
28788 if (eWLAN_PAL_FALSE == gWDIInitialized)
28789 {
28790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28791 "WDI API call before module is initialized - Fail request!");
28792
28793 return WDI_STATUS_E_NOT_ALLOWED;
28794 }
28795
28796 /*-------------------------------------------------------------------------
28797 Fill in Event data and post to the Main FSM
28798 ------------------------------------------------------------------------*/
28799 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
28800 wdiEventData.pEventData = pWdiReq;
28801 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
28802 wdiEventData.pCBfnc = NULL;
28803 wdiEventData.pUserData = NULL;
28804
28805 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28806}
28807
28808/**
28809 @brief WDI_TriggerBatchScanResultInd
28810 This API is called to pull batch scan result from FW
28811
28812 @param pWdiReq : pointer to get batch scan ind param
28813 @see
28814 @return SUCCESS or FAIL
28815*/
28816WDI_Status WDI_TriggerBatchScanResultInd
28817(
28818 WDI_TriggerBatchScanResultIndType *pWdiReq
28819)
28820{
28821 WDI_EventInfoType wdiEventData;
28822 /*-------------------------------------------------------------------------
28823 Sanity Check
28824 ------------------------------------------------------------------------*/
28825 if (eWLAN_PAL_FALSE == gWDIInitialized)
28826 {
28827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28828 "WDI API call before module is initialized - Fail request!");
28829
28830 return WDI_STATUS_E_NOT_ALLOWED;
28831 }
28832
28833 /*-------------------------------------------------------------------------
28834 Fill in Event data and post to the Main FSM
28835 ------------------------------------------------------------------------*/
28836 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
28837 wdiEventData.pEventData = pWdiReq;
28838 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
28839 wdiEventData.pCBfnc = NULL;
28840 wdiEventData.pUserData = NULL;
28841
28842 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28843}
28844
28845#endif /*FEATURE_WLAN_BATCH_SCAN*/