blob: 04a4ff982bac036b67e82a85167dc7c2dcc517df [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__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011076 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011077
11078 return WDI_STATUS_E_FAILURE;
11079 }
11080
11081 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11082 halAddPeriodicTxPtrn->ucPtrnId =
11083 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11084 halAddPeriodicTxPtrn->usPtrnSize =
11085 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11086 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11087 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11088
11089 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11090 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11091 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11092
11093 /*-------------------------------------------------------------------------
11094 Send Indication to HAL
11095 -------------------------------------------------------------------------*/
11096 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11097 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11098
11099 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11100
11101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11102 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11103
11104 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11105} /* WDI_ProcessAddPeriodicTxPtrnInd */
11106
11107/**
11108 @brief Process Delete Periodic Tx Pattern Indication function (called when
11109 Main FSM allows it)
11110
11111 @param pWDICtx: pointer to the WLAN DAL context
11112 pEventData: pointer to the event information structure
11113
11114 @see
11115 @return Result of the function call
11116*/
11117WDI_Status
11118WDI_ProcessDelPeriodicTxPtrnInd
11119(
11120 WDI_ControlBlockType* pWDICtx,
11121 WDI_EventInfoType* pEventData
11122)
11123{
11124 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11125 wpt_uint8* pSendBuffer = NULL;
11126 wpt_uint16 usDataOffset = 0;
11127 wpt_uint16 usSendSize = 0;
11128 WDI_Status wdiStatus;
11129 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11130 wpt_uint8 selfStaIdx = 0;
11131
11132 /*-------------------------------------------------------------------------
11133 Sanity check
11134 -------------------------------------------------------------------------*/
11135 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11136 {
11137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11138 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11139 WDI_ASSERT(0);
11140 return WDI_STATUS_E_FAILURE;
11141 }
11142
11143 pDelPeriodicTxPtrnParams =
11144 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11145
11146 /*------------------------------------------------------------------------
11147 Get message buffer
11148 ------------------------------------------------------------------------*/
11149 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11150 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11151 &pSendBuffer, &usDataOffset, &usSendSize))||
11152 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11153 {
11154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11155 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11156 __func__);
11157 WDI_ASSERT(0);
11158 return WDI_STATUS_E_FAILURE;
11159 }
11160
11161 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11162
11163 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11164 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11165 &selfStaIdx))
11166 {
11167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11168 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011169 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011170
11171 return WDI_STATUS_E_FAILURE;
11172 }
11173
11174 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11175 halDelPeriodicTxPtrn->uPatternIdBitmap =
11176 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11177
11178 /*-------------------------------------------------------------------------
11179 Send Indication to HAL
11180 -------------------------------------------------------------------------*/
11181 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11182 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11183
11184 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11185
11186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11187 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11188
11189 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11190} /* WDI_ProcessDelPeriodicTxPtrnInd */
11191
Jeff Johnson295189b2012-06-20 16:38:30 -070011192/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011194==========================================================================*/
11195/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011198
11199 @param pWDICtx: pointer to the WLAN DAL context
11200 pEventData: pointer to the event information structure
11201
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 @see
11203 @return Result of the function call
11204*/
11205WDI_Status
11206WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011207(
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 WDI_ControlBlockType* pWDICtx,
11209 WDI_EventInfoType* pEventData
11210)
11211{
11212 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11213 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 wpt_uint16 usDataOffset = 0;
11216 wpt_uint16 usSendSize = 0;
11217 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11219
11220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 -------------------------------------------------------------------------*/
11223 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11224 ( NULL == pEventData->pCBfnc ))
11225 {
11226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 }
11231
11232 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11233 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11234 /*-----------------------------------------------------------------------
11235 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 sizeof(halSwitchChannelReq.switchChannelParams),
11240 &pSendBuffer, &usDataOffset, &usSendSize))||
11241 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11242 {
11243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11244 "Unable to get send buffer in channel switch req %x %x %x",
11245 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 }
11249
Jeff Johnsone7245742012-09-05 17:12:55 -070011250 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011252#ifndef WLAN_FEATURE_VOWIFI
11253 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11255#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11258
11259#ifdef WLAN_FEATURE_VOWIFI
11260 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11263 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11264 WDI_MAC_ADDR_LEN);
11265 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11266 pwdiSwitchChParams->wdiChInfo.macBSSId,
11267 WDI_MAC_ADDR_LEN);
11268#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 wpalMemoryCopy( pSendBuffer+usDataOffset,
11270 &halSwitchChannelReq.switchChannelParams,
11271 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011272
11273 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011275
11276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11280 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011281}/*WDI_ProcessChannelSwitchReq*/
11282
11283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011286
11287 @param pWDICtx: pointer to the WLAN DAL context
11288 pEventData: pointer to the event information structure
11289
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 @see
11291 @return Result of the function call
11292*/
11293WDI_Status
11294WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011295(
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 WDI_ControlBlockType* pWDICtx,
11297 WDI_EventInfoType* pEventData
11298)
11299{
11300 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11301 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 wpt_uint16 usDataOffset = 0;
11306 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011308
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 tConfigStaReqMsg halConfigStaReqMsg;
11310 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11312
11313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 -------------------------------------------------------------------------*/
11316 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11317 ( NULL == pEventData->pCBfnc ))
11318 {
11319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 }
11324
11325 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11326 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11327 /*-------------------------------------------------------------------------
11328 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011330 -------------------------------------------------------------------------*/
11331 wpalMutexAcquire(&pWDICtx->wptMutex);
11332
11333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11337 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11338 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011339
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11343 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11344 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011345
11346 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 }
11349
11350 /*------------------------------------------------------------------------
11351 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 ------------------------------------------------------------------------*/
11354 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11355 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11357 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11358 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011359
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011362 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 }
11364
11365 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011366
11367 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11368#ifdef WLAN_FEATURE_11AC
11369 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011370 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 else
11372#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011373 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011374
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 /*-----------------------------------------------------------------------
11376 Get message buffer
11377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11379 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011381 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011382 {
11383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11384 "Unable to get send buffer in config sta req %x %x %x",
11385 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 }
11389
11390 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 &pwdiConfigSTAParams->wdiReqInfo);
11393
11394 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11395 {
11396 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 WDI_STATableFindStaidByAddr(pWDICtx,
11399 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 {
11402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11403 "This station does not exist in the WDI Station Table %d");
11404 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011405 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 }
11408 }
11409 else
11410 {
11411 /* Need to fill in the STA Index to invalid, since at this point we have not
11412 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011413 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 }
11415
11416 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011418
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 wpalMemoryCopy( pSendBuffer+usDataOffset,
11420 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011421 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011422
11423 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011425
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11427 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011428 sizeof(pWDICtx->wdiCachedConfigStaReq));
11429
11430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011432 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11434 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011435}/*WDI_ProcessConfigStaReq*/
11436
11437
11438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011441
11442 @param pWDICtx: pointer to the WLAN DAL context
11443 pEventData: pointer to the event information structure
11444
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 @see
11446 @return Result of the function call
11447*/
11448WDI_Status
11449WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011450(
Jeff Johnson295189b2012-06-20 16:38:30 -070011451 WDI_ControlBlockType* pWDICtx,
11452 WDI_EventInfoType* pEventData
11453)
11454{
11455 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11456 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 wpt_uint16 usDataOffset = 0;
11461 wpt_uint16 usSendSize = 0;
11462 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11465
11466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011468 -------------------------------------------------------------------------*/
11469 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11470 ( NULL == pEventData->pCBfnc ))
11471 {
11472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 }
11477
11478 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11479 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11480 /*-------------------------------------------------------------------------
11481 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 -------------------------------------------------------------------------*/
11484 wpalMutexAcquire(&pWDICtx->wptMutex);
11485
11486 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11490 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11491 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011492
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011496 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11497 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 }
11499 else
11500 {
11501 /*------------------------------------------------------------------------
11502 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 ------------------------------------------------------------------------*/
11505 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11506 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11508 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11509 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11510
11511 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 }
11515 }
11516 /* If the link is set to enter IDLE - the Session allocated for this BSS
11517 will be deleted on the Set Link State response coming from HAL
11518 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11521
11522 wpalMutexRelease(&pWDICtx->wptMutex);
11523 /*-----------------------------------------------------------------------
11524 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011527
11528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 sizeof(halLinkStateReqMsg),
11530 &pSendBuffer, &usDataOffset, &usSendSize))||
11531 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11532 {
11533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11534 "Unable to get send buffer in set bss key req %x %x %x",
11535 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 }
11539
11540 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11541 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11542
11543 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11544 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11545
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11548
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 wpalMemoryCopy( pSendBuffer+usDataOffset,
11550 &halLinkStateReqMsg,
11551 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
11553 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011555
11556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11560 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011561}/*WDI_ProcessSetLinkStateReq*/
11562
11563
11564/**
11565 @brief Process Get Stats Request function (called when Main FSM
11566 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011567
11568 @param pWDICtx: pointer to the WLAN DAL context
11569 pEventData: pointer to the event information structure
11570
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 @see
11572 @return Result of the function call
11573*/
11574WDI_Status
11575WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011576(
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 WDI_ControlBlockType* pWDICtx,
11578 WDI_EventInfoType* pEventData
11579)
11580{
11581 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11582 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 wpt_uint16 usDataOffset = 0;
11585 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 WDI_BSSSessionType* pBSSSes = NULL;
11588 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 tHalStatsReqMsg halStatsReqMsg;
11591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11592
11593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 -------------------------------------------------------------------------*/
11596 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11597 ( NULL == pEventData->pCBfnc ) )
11598 {
11599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 }
11604
11605 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11606 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11607
11608 /*-------------------------------------------------------------------------
11609 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 -------------------------------------------------------------------------*/
11612 wpalMutexAcquire(&pWDICtx->wptMutex);
11613
11614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11618 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 &macBSSID))
11620 {
11621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11622 "This station does not exist in the WDI Station Table %d");
11623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 }
11626
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11628 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11631 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11632 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011633
11634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 }
11637
11638 /*------------------------------------------------------------------------
11639 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 ------------------------------------------------------------------------*/
11642 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11643 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11645 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11646 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011647
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011650 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 }
11652
11653
11654 wpalMutexRelease(&pWDICtx->wptMutex);
11655
11656 /*-----------------------------------------------------------------------
11657 Get message buffer
11658 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 sizeof(halStatsReqMsg.statsReqParams),
11661 &pSendBuffer, &usDataOffset, &usSendSize))||
11662 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11663 {
11664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11665 "Unable to get send buffer in set bss key req %x %x %x",
11666 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 }
11670
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 wpalMemoryCopy( pSendBuffer+usDataOffset,
11676 &halStatsReqMsg.statsReqParams,
11677 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011678
11679 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011681
11682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11686 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011687}/*WDI_ProcessGetStatsReq*/
11688
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011689#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11690/**
11691 @brief Process Get Roam Rssi Request function (called when Main FSM
11692 allows it)
11693
11694 @param pWDICtx: pointer to the WLAN DAL context
11695 pEventData: pointer to the event information structure
11696
11697 @see
11698 @return Result of the function call
11699*/
11700WDI_Status
11701WDI_ProcessGetRoamRssiReq
11702(
11703 WDI_ControlBlockType* pWDICtx,
11704 WDI_EventInfoType* pEventData
11705)
11706{
11707 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11708 WDI_GetStatsRspCb wdiGetStatsRspCb;
11709 wpt_uint8* pSendBuffer = NULL;
11710 wpt_uint16 usDataOffset = 0;
11711 wpt_uint16 usSendSize = 0;
11712 wpt_uint8 ucCurrentBSSSesIdx = 0;
11713 WDI_BSSSessionType* pBSSSes = NULL;
11714 wpt_macAddr macBSSID;
11715 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11716 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11718 /*-------------------------------------------------------------------------
11719 Sanity check
11720 -------------------------------------------------------------------------*/
11721 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11722 ( NULL == pEventData->pCBfnc ) )
11723 {
11724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11725 "%s: Invalid parameters", __func__);
11726 WDI_ASSERT(0);
11727 return WDI_STATUS_E_FAILURE;
11728 }
11729
11730 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11731 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11732
11733 /*-------------------------------------------------------------------------
11734 Check to see if we are in the middle of an association, if so queue, if
11735 not it means it is free to process request
11736 -------------------------------------------------------------------------*/
11737 wpalMutexAcquire(&pWDICtx->wptMutex);
11738
11739 /*------------------------------------------------------------------------
11740 Find the BSS for which the request is made
11741 ------------------------------------------------------------------------*/
11742 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11743 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11744 &macBSSID))
11745 {
11746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11747 "This station does not exist in the WDI Station Table %d");
11748 wpalMutexRelease(&pWDICtx->wptMutex);
11749 return WDI_STATUS_E_FAILURE;
11750 }
11751
11752 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11753 if ( NULL == pBSSSes )
11754 {
11755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11756 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11757 __func__, MAC_ADDR_ARRAY(macBSSID));
11758
11759 wpalMutexRelease(&pWDICtx->wptMutex);
11760 return WDI_STATUS_E_NOT_ALLOWED;
11761 }
11762
11763 /*------------------------------------------------------------------------
11764 Check if this BSS is being currently processed or queued,
11765 if queued - queue the new request as well
11766 ------------------------------------------------------------------------*/
11767 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11768 {
11769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11770 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11771 __func__, MAC_ADDR_ARRAY(macBSSID));
11772
11773 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11774 wpalMutexRelease(&pWDICtx->wptMutex);
11775 return wdiStatus;
11776 }
11777
11778 wpalMutexRelease(&pWDICtx->wptMutex);
11779
11780 /*-----------------------------------------------------------------------
11781 Get message buffer
11782 -----------------------------------------------------------------------*/
11783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11784 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11785 &pSendBuffer, &usDataOffset, &usSendSize))||
11786 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11787 {
11788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11789 "Unable to get send buffer in set bss key req %x %x %x",
11790 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11791 WDI_ASSERT(0);
11792 return WDI_STATUS_E_FAILURE;
11793 }
11794
11795 halRssiRoamReqMsg.roamRssiReqParams.staId =
11796 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11797 wpalMemoryCopy( pSendBuffer+usDataOffset,
11798 &halRssiRoamReqMsg.roamRssiReqParams,
11799 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11800
11801 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11802 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11803
11804 /*-------------------------------------------------------------------------
11805 Send Get STA Request to HAL
11806 -------------------------------------------------------------------------*/
11807 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11808 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11809}/*WDI_ProcessGetRoamRssiReq*/
11810#endif
11811
Jeff Johnson295189b2012-06-20 16:38:30 -070011812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011815
11816 @param pWDICtx: pointer to the WLAN DAL context
11817 pEventData: pointer to the event information structure
11818
Jeff Johnson295189b2012-06-20 16:38:30 -070011819 @see
11820 @return Result of the function call
11821*/
11822WDI_Status
11823WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011824(
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 WDI_ControlBlockType* pWDICtx,
11826 WDI_EventInfoType* pEventData
11827)
11828{
11829 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11830 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11831
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011833 wpt_uint16 usDataOffset = 0;
11834 wpt_uint16 usSendSize = 0;
11835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11836
11837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 -------------------------------------------------------------------------*/
11840 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11841 ( NULL == pEventData->pCBfnc))
11842 {
11843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 }
11848
11849 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11850 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11851
11852 /*-----------------------------------------------------------------------
11853 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 -----------------------------------------------------------------------*/
11856
Jeff Johnsone7245742012-09-05 17:12:55 -070011857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011858 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11859 &pSendBuffer, &usDataOffset, &usSendSize))||
11860 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11861 {
11862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11863 "Unable to get send buffer in set bss key req %x %x %x",
11864 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 }
11868
Jeff Johnsone7245742012-09-05 17:12:55 -070011869 wpalMemoryCopy( pSendBuffer+usDataOffset,
11870 &pwdiUpdateCfgParams->uConfigBufferLen,
11871 sizeof(wpt_uint32));
11872 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11873 pwdiUpdateCfgParams->pConfigBuffer,
11874 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011875
11876 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011878
11879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011880 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 -------------------------------------------------------------------------*/
11882
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11884 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011885
11886}/*WDI_ProcessUpdateCfgReq*/
11887
11888
11889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011892
11893 @param pWDICtx: pointer to the WLAN DAL context
11894 pEventData: pointer to the event information structure
11895
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 @see
11897 @return Result of the function call
11898*/
11899WDI_Status
11900WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011901(
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 WDI_ControlBlockType* pWDICtx,
11903 WDI_EventInfoType* pEventData
11904)
11905{
11906 WDI_AddBAReqParamsType* pwdiAddBAParams;
11907 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 wpt_uint16 usDataOffset = 0;
11912 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 wpt_macAddr macBSSID;
11915
11916 tAddBAReqMsg halAddBAReq;
11917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11918
11919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 -------------------------------------------------------------------------*/
11922 if (( NULL == pEventData ) ||
11923 ( NULL == pEventData->pEventData) ||
11924 ( NULL == pEventData->pCBfnc ))
11925 {
11926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 }
11931
11932 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11933 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11934
11935 /*-------------------------------------------------------------------------
11936 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 -------------------------------------------------------------------------*/
11939 wpalMutexAcquire(&pWDICtx->wptMutex);
11940
11941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11945 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 &macBSSID))
11947 {
11948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11949 "This station does not exist in the WDI Station Table %d");
11950 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 }
11953
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11955 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11958 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11959 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011960
11961 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 }
11964
11965 /*------------------------------------------------------------------------
11966 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 ------------------------------------------------------------------------*/
11969 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11972 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11973 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011974
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 }
11979
11980
11981 wpalMutexRelease(&pWDICtx->wptMutex);
11982 /*-----------------------------------------------------------------------
11983 Get message buffer
11984 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 sizeof(halAddBAReq.addBAParams),
11987 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11990 {
11991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11992 "Unable to get send buffer in Add BA req %x %x %x",
11993 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 }
11997
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12000 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12001#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12004#endif
12005
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 wpalMemoryCopy( pSendBuffer+usDataOffset,
12007 &halAddBAReq.addBAParams,
12008 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012009
12010 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012012
12013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12017 wdiAddBARspCb, pEventData->pUserData,
12018 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012019}/*WDI_ProcessAddBAReq*/
12020
12021
12022
12023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012026
12027 @param pWDICtx: pointer to the WLAN DAL context
12028 pEventData: pointer to the event information structure
12029
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 @see
12031 @return Result of the function call
12032*/
12033WDI_Status
12034WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012035(
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 WDI_ControlBlockType* pWDICtx,
12037 WDI_EventInfoType* pEventData
12038)
12039{
12040 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12041 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 wpt_uint16 usDataOffset = 0;
12046 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 wpt_uint16 index;
12049 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012050
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 tTriggerBAReqMsg halTriggerBAReq;
12052 tTriggerBaReqCandidate* halTriggerBACandidate;
12053 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12055
12056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 -------------------------------------------------------------------------*/
12059 if (( NULL == pEventData ) ||
12060 ( NULL == pEventData->pEventData ) ||
12061 ( NULL == pEventData->pCBfnc ))
12062 {
12063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 }
12068
12069 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12070 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12071 /*-------------------------------------------------------------------------
12072 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012073 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012074 -------------------------------------------------------------------------*/
12075 wpalMutexAcquire(&pWDICtx->wptMutex);
12076
12077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12081 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 &macBSSID))
12083 {
12084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12085 "This station does not exist in the WDI Station Table %d");
12086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 }
12089
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12091 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12094 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12095 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012096
12097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 }
12100
12101 /*------------------------------------------------------------------------
12102 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 ------------------------------------------------------------------------*/
12105 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12106 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12108 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12109 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012110
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012112 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012113 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 }
12115
12116
12117 wpalMutexRelease(&pWDICtx->wptMutex);
12118 /*-----------------------------------------------------------------------
12119 Get message buffer
12120 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12122 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12126 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12131 {
12132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12133 "Unable to get send buffer in Trigger BA req %x %x %x",
12134 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 }
12138
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12143
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 wpalMemoryCopy( pSendBuffer+usDataOffset,
12145 &halTriggerBAReq.triggerBAParams,
12146 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012147
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12150 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12151 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012152
12153 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 index++)
12155 {
12156 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12157 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12158 halTriggerBACandidate++;
12159 wdiTriggerBACandidate++;
12160 }
12161
12162 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012163 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012164
12165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12169 wdiTriggerBARspCb, pEventData->pUserData,
12170 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012171}/*WDI_ProcessTriggerBAReq*/
12172
12173
12174
12175/**
12176 @brief Process Update Beacon Params Request function (called when Main FSM
12177 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012178
12179 @param pWDICtx: pointer to the WLAN DAL context
12180 pEventData: pointer to the event information structure
12181
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 @see
12183 @return Result of the function call
12184*/
12185WDI_Status
12186WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012187(
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 WDI_ControlBlockType* pWDICtx,
12189 WDI_EventInfoType* pEventData
12190)
12191{
12192 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12193 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 wpt_uint16 usDataOffset = 0;
12196 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012197 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12199
12200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 -------------------------------------------------------------------------*/
12203 if (( NULL == pEventData ) ||
12204 ( NULL == pEventData->pEventData) ||
12205 ( NULL == pEventData->pCBfnc))
12206 {
12207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 }
12212
12213 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12214 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12215 /*-----------------------------------------------------------------------
12216 Get message buffer
12217 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 sizeof(halUpdateBeaconParams),
12220 &pSendBuffer, &usDataOffset, &usSendSize))||
12221 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12222 {
12223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12224 "Unable to get send buffer in set bss key req %x %x %x",
12225 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 }
12229
12230 /*BSS Index of the BSS*/
12231 halUpdateBeaconParams.bssIdx =
12232 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12233 /*shortPreamble mode. HAL should update all the STA rates when it
12234 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012236 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12237 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12240 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012242 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12243
12244 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12257 halUpdateBeaconParams.fRIFSMode =
12258 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12261
Jeff Johnsone7245742012-09-05 17:12:55 -070012262 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12263 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012264
12265 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012267
12268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12272 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012273}/*WDI_ProcessUpdateBeaconParamsReq*/
12274
12275
12276
12277/**
12278 @brief Process Send Beacon template Request function (called when Main FSM
12279 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012280
12281 @param pWDICtx: pointer to the WLAN DAL context
12282 pEventData: pointer to the event information structure
12283
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 @see
12285 @return Result of the function call
12286*/
12287WDI_Status
12288WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012289(
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 WDI_ControlBlockType* pWDICtx,
12291 WDI_EventInfoType* pEventData
12292)
12293{
12294 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12295 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 wpt_uint16 usDataOffset = 0;
12298 wpt_uint16 usSendSize = 0;
12299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12300
12301 tSendBeaconReqMsg halSendBeaconReq;
12302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 -------------------------------------------------------------------------*/
12305 if (( NULL == pEventData ) ||
12306 ( NULL == pEventData->pEventData ) ||
12307 ( NULL == pEventData->pCBfnc ))
12308 {
12309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 }
12314
12315 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12316 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12317 /*-----------------------------------------------------------------------
12318 Get message buffer
12319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 sizeof(halSendBeaconReq.sendBeaconParam),
12322 &pSendBuffer, &usDataOffset, &usSendSize))||
12323 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12324 {
12325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12326 "Unable to get send buffer in send beacon req %x %x %x",
12327 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 }
12331
12332 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12333 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12334 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12337 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12338 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12339 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012342 /* usP2PIeOffset should be atleast greater than timIeOffset */
12343 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12344 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12345 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12346 {
12347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12348 "Invalid usP2PIeOffset %hu",
12349 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12350 WDI_ASSERT(0);
12351 return WDI_STATUS_E_FAILURE;
12352 }
12353
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 wpalMemoryCopy( pSendBuffer+usDataOffset,
12358 &halSendBeaconReq.sendBeaconParam,
12359 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012360
12361 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012363
12364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12368 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012369}/*WDI_ProcessSendBeaconParamsReq*/
12370
12371/**
12372 @brief Process Update Beacon Params Request function (called when Main FSM
12373 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012374
12375 @param pWDICtx: pointer to the WLAN DAL context
12376 pEventData: pointer to the event information structure
12377
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 @see
12379 @return Result of the function call
12380*/
12381WDI_Status
12382WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012383(
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 WDI_ControlBlockType* pWDICtx,
12385 WDI_EventInfoType* pEventData
12386)
12387{
12388 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12389 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 wpt_uint16 usDataOffset = 0;
12392 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12395
12396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 -------------------------------------------------------------------------*/
12399 if (( NULL == pEventData ) ||
12400 ( NULL == pEventData->pEventData) ||
12401 ( NULL == pEventData->pCBfnc))
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 }
12408
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12413 /*-----------------------------------------------------------------------
12414 Get message buffer
12415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 sizeof(halUpdateProbeRspTmplParams),
12418 &pSendBuffer, &usDataOffset, &usSendSize))||
12419 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12420 {
12421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12422 "Unable to get send buffer in set bss key req %x %x %x",
12423 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 }
12427
12428 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 WDI_MAC_ADDR_LEN);
12431
Jeff Johnsone7245742012-09-05 17:12:55 -070012432 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012433 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12434
12435 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12436 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012438
12439
12440 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12441 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12442 WDI_PROBE_REQ_BITMAP_IE_LEN);
12443
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 wpalMemoryCopy( pSendBuffer+usDataOffset,
12445 &halUpdateProbeRspTmplParams,
12446 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012447
12448 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012450
12451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12455 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12456 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012457}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12458
12459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012462
12463 @param pWDICtx: pointer to the WLAN DAL context
12464 pEventData: pointer to the event information structure
12465
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 @see
12467 @return Result of the function call
12468*/
12469WDI_Status
12470WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012471(
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 WDI_ControlBlockType* pWDICtx,
12473 WDI_EventInfoType* pEventData
12474)
12475{
12476
12477 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12478 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12479
12480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 -------------------------------------------------------------------------*/
12483 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012486 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12488 {
12489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 }
12494
12495 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12498
12499 /*cache the wdi nv request message here if the the first fragment
12500 * To issue the request to HAL for the next fragment */
12501 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12502 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12504 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012505 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12506
12507 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12508 pWDICtx->pRspCBUserData = pEventData->pUserData;
12509 }
12510
12511 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12512}
12513
12514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012517
12518 @param pWDICtx: pointer to the WLAN DAL context
12519 pEventData: pointer to the event information structure
12520
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 @see
12522 @return Result of the function call
12523*/
12524WDI_Status WDI_ProcessSetMaxTxPowerReq
12525(
12526 WDI_ControlBlockType* pWDICtx,
12527 WDI_EventInfoType* pEventData
12528)
12529{
12530 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12531 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 wpt_uint16 usDataOffset = 0;
12534 wpt_uint16 usSendSize = 0;
12535 tSetMaxTxPwrReq halSetMaxTxPower;
12536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12537
12538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 -------------------------------------------------------------------------*/
12541 if (( NULL == pEventData ) ||
12542 ( NULL == pEventData->pEventData ) ||
12543 ( NULL == pEventData->pCBfnc ))
12544 {
12545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12554
12555 /*-----------------------------------------------------------------------
12556 Get message buffer
12557 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012558if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12560 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012562)))
12563 {
12564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12565 "Unable to get Set Max Tx Power req %x %x %x",
12566 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 }
12570
12571 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12572 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12573 WDI_MAC_ADDR_LEN);
12574
12575 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12576 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12577 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012580
12581 wpalMemoryCopy( pSendBuffer+usDataOffset,
12582 &halSetMaxTxPower.setMaxTxPwrParams,
12583 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012584
12585 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012587
12588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12592 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12593 WDI_SET_MAX_TX_POWER_RESP);
12594
Jeff Johnson295189b2012-06-20 16:38:30 -070012595}
12596
schangd82195a2013-03-13 18:41:24 -070012597/**
12598 @brief Process Set Tx Power Request function (called when Main
12599 FSM allows it)
12600
12601 @param pWDICtx: pointer to the WLAN DAL context
12602 pEventData: pointer to the event information structure
12603
12604 @see
12605 @return Result of the function call
12606*/
12607WDI_Status WDI_ProcessSetTxPowerReq
12608(
12609 WDI_ControlBlockType* pWDICtx,
12610 WDI_EventInfoType* pEventData
12611)
12612{
12613 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12614 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12615 wpt_uint8* pSendBuffer = NULL;
12616 wpt_uint16 usDataOffset = 0;
12617 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012618 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12620
12621 /*-------------------------------------------------------------------------
12622 Sanity check
12623 -------------------------------------------------------------------------*/
12624 if (( NULL == pEventData ) ||
12625 ( NULL == pEventData->pEventData ) ||
12626 ( NULL == pEventData->pCBfnc ))
12627 {
12628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12629 "%s: Invalid parameters", __func__);
12630 WDI_ASSERT(0);
12631 return WDI_STATUS_E_FAILURE;
12632 }
12633
12634 pwdiSetTxPowerParams =
12635 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12636 wdiSetTxPowerRspCb =
12637 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12638
12639 /*-----------------------------------------------------------------------
12640 Get message buffer
12641 -----------------------------------------------------------------------*/
12642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12643 sizeof(tSetTxPwrReqParams),
12644 &pSendBuffer, &usDataOffset, &usSendSize))||
12645 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12646 )))
12647 {
12648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12649 "Unable to get Set Max Tx Power req %x %x %x",
12650 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12651 WDI_ASSERT(0);
12652 return WDI_STATUS_E_FAILURE;
12653 }
12654
Leo Changa37e2a92013-03-25 17:39:58 -070012655 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12656 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12657 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012658
12659 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12660 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12661
12662 /*-------------------------------------------------------------------------
12663 Send Set Tx Power Request to HAL
12664 -------------------------------------------------------------------------*/
12665 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12666 wdiSetTxPowerRspCb, pEventData->pUserData,
12667 WDI_SET_TX_POWER_RESP);
12668}
Jeff Johnson295189b2012-06-20 16:38:30 -070012669
12670/**
12671 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12672 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012673
12674 @param pWDICtx: pointer to the WLAN DAL context
12675 pEventData: pointer to the event information structure
12676
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 @see
12678 @return Result of the function call
12679*/
12680WDI_Status
12681WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012682(
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 WDI_ControlBlockType* pWDICtx,
12684 WDI_EventInfoType* pEventData
12685)
12686{
12687 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12688 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 wpt_uint16 usDataOffset = 0;
12691 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12694
12695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 -------------------------------------------------------------------------*/
12698 if (( NULL == pEventData ) ||
12699 ( NULL == pEventData->pEventData) ||
12700 ( NULL == pEventData->pCBfnc))
12701 {
12702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 }
12707
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12712 /*-----------------------------------------------------------------------
12713 Get message buffer
12714 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12716 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 sizeof(halSetP2PGONOAParams),
12718 &pSendBuffer, &usDataOffset, &usSendSize))||
12719 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12720 {
12721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12722 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12723 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 }
12727
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12732 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12741
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 wpalMemoryCopy( pSendBuffer+usDataOffset,
12743 &halSetP2PGONOAParams,
12744 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012745
12746 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012747 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012748
12749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12753 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12754 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012755}/*WDI_ProcessP2PGONOAReq*/
12756
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012757#ifdef FEATURE_WLAN_TDLS
12758
12759/**
12760 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12761 allows it)
12762
12763 @param pWDICtx: pointer to the WLAN DAL context
12764 pEventData: pointer to the event information structure
12765
12766 @see
12767 @return Result of the function call
12768*/
12769WDI_Status
12770WDI_ProcessTdlsLinkEstablishReq
12771(
12772 WDI_ControlBlockType* pWDICtx,
12773 WDI_EventInfoType* pEventData
12774)
12775{
12776 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12777 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12778 wpt_uint8* pSendBuffer = NULL;
12779 wpt_uint16 usDataOffset = 0;
12780 wpt_uint16 usSendSize = 0;
12781
12782 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12784
12785 /*-------------------------------------------------------------------------
12786 Sanity check
12787 -------------------------------------------------------------------------*/
12788 if (( NULL == pEventData ) ||
12789 ( NULL == pEventData->pEventData) ||
12790 ( NULL == pEventData->pCBfnc))
12791 {
12792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12793 "%s: Invalid parameters", __func__);
12794 WDI_ASSERT(0);
12795 return WDI_STATUS_E_FAILURE;
12796 }
12797 pwdiTDLSLinkEstablishReqParams =
12798 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12799 wdiTDLSLinkEstablishReqRspCb =
12800 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12801
12802
12803 /*-----------------------------------------------------------------------
12804 Get message buffer
12805 -----------------------------------------------------------------------*/
12806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12807 WDI_TDLS_LINK_ESTABLISH_REQ,
12808 sizeof(halSetTDLSLinkEstablishParams),
12809 &pSendBuffer, &usDataOffset, &usSendSize))||
12810 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12811 {
12812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12813 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12814 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12815 WDI_ASSERT(0);
12816 return WDI_STATUS_E_FAILURE;
12817 }
12818
12819 halSetTDLSLinkEstablishParams.staIdx =
12820 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12821 halSetTDLSLinkEstablishParams.bIsResponder =
12822 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12823 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12824 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12825 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12826 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12827 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12828 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12829 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12830 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12831 halSetTDLSLinkEstablishParams.aAck = 0;
12832 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12833 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12834 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12835
12836 wpalMemoryCopy( pSendBuffer+usDataOffset,
12837 &halSetTDLSLinkEstablishParams,
12838 sizeof(halSetTDLSLinkEstablishParams));
12839
12840 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12841 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12842
12843 /*-------------------------------------------------------------------------
12844 Send Update Probe Resp Template Request to HAL
12845 -------------------------------------------------------------------------*/
12846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12847 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12848 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12849 return 0;
12850}/*WDI_ProcessTdlsLinkEstablishReq*/
12851
12852
12853#endif
12854
Jeff Johnson295189b2012-06-20 16:38:30 -070012855
12856
12857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 @param None
12861
12862 @see
12863 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012864*/
12865void
12866WDI_SetPowerStateCb
12867(
12868 wpt_status status,
12869 unsigned int dxePhyAddr,
12870 void *pContext
12871)
12872{
12873 wpt_status wptStatus;
12874 WDI_ControlBlockType *pCB = NULL;
12875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12876 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12877 {
12878 //it shouldn't happen, put an error msg
12879 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 /*
12881 * Trigger the event to bring the Enter BMPS req function to come
12882 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012883*/
12884 if( NULL != pContext )
12885 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 }
12888 else
12889 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 pCB = &gWDICb;
12892 }
12893 pCB->dxePhyAddr = dxePhyAddr;
12894 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12895 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12896 {
12897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12898 "Failed to set an event");
12899
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 }
12902 return;
12903}
12904
12905
12906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012909
12910 @param pWDICtx: pointer to the WLAN DAL context
12911 pEventData: pointer to the event information structure
12912
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 @see
12914 @return Result of the function call
12915*/
12916WDI_Status
12917WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012918(
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 WDI_ControlBlockType* pWDICtx,
12920 WDI_EventInfoType* pEventData
12921)
12922{
Jeff Johnson43971f52012-07-17 12:26:56 -070012923 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 wpt_uint16 usDataOffset = 0;
12927 wpt_uint16 usSendSize = 0;
12928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12929
12930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 -------------------------------------------------------------------------*/
12933 if (( NULL == pEventData ) ||
12934 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12935 {
12936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012939 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 }
12941
12942 /*-----------------------------------------------------------------------
12943 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 0,
12948 &pSendBuffer, &usDataOffset, &usSendSize))||
12949 ( usSendSize < (usDataOffset )))
12950 {
12951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12952 "Unable to get send buffer in Enter IMPS req %x %x",
12953 pEventData, wdiEnterImpsRspCb);
12954 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012955 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 }
12957
12958 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012959 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 {
12962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12963 "WDI Init failed to reset an event");
12964
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012966 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 }
12968
12969 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012970 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12971 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12973 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12974 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012975 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012977
12978 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012979 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012981 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12982 WDI_SET_POWER_STATE_TIMEOUT);
12983 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012984 {
12985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12986 "WDI Init failed to wait on an event");
12987
Jeff Johnsone7245742012-09-05 17:12:55 -070012988 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012989 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 }
12991
12992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12996 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012997
12998fail:
12999 // Release the message buffer so we don't leak
13000 wpalMemoryFree(pSendBuffer);
13001
13002failRequest:
13003 //WDA should have failure check to avoid the memory leak
13004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013005}/*WDI_ProcessEnterImpsReq*/
13006
13007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013010
13011 @param pWDICtx: pointer to the WLAN DAL context
13012 pEventData: pointer to the event information structure
13013
Jeff Johnson295189b2012-06-20 16:38:30 -070013014 @see
13015 @return Result of the function call
13016*/
13017WDI_Status
13018WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013019(
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 WDI_ControlBlockType* pWDICtx,
13021 WDI_EventInfoType* pEventData
13022)
13023{
13024 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 wpt_uint16 usDataOffset = 0;
13027 wpt_uint16 usSendSize = 0;
13028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13029
13030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 -------------------------------------------------------------------------*/
13033 if (( NULL == pEventData ) ||
13034 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13035 {
13036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 }
13041
13042 /*-----------------------------------------------------------------------
13043 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 0,
13048 &pSendBuffer, &usDataOffset, &usSendSize))||
13049 ( usSendSize < (usDataOffset )))
13050 {
13051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13052 "Unable to get send buffer in Exit IMPS req %x %x",
13053 pEventData, wdiExitImpsRspCb);
13054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 }
13057
13058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13062 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013063}/*WDI_ProcessExitImpsReq*/
13064
13065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013068
13069 @param pWDICtx: pointer to the WLAN DAL context
13070 pEventData: pointer to the event information structure
13071
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 @see
13073 @return Result of the function call
13074*/
13075WDI_Status
13076WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013077(
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 WDI_ControlBlockType* pWDICtx,
13079 WDI_EventInfoType* pEventData
13080)
13081{
13082 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13083 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 wpt_uint16 usDataOffset = 0;
13086 wpt_uint16 usSendSize = 0;
13087 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013088 wpt_status wptStatus;
13089
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13091
13092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 -------------------------------------------------------------------------*/
13095 if (( NULL == pEventData ) ||
13096 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13097 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13098 {
13099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013102 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 }
13104
13105 /*-----------------------------------------------------------------------
13106 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 sizeof(enterBmpsReq),
13111 &pSendBuffer, &usDataOffset, &usSendSize))||
13112 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13113 {
13114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13115 "Unable to get send buffer in Enter BMPS req %x %x %x",
13116 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13117 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013118 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 }
13120
13121 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013122 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13123 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 {
13125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13126 "WDI Init failed to reset an event");
13127
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013129 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 }
13131
13132 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013133 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13134 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13135 {
13136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13137 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13138 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013139 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013140 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013141
13142/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013145 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13146 WDI_SET_POWER_STATE_TIMEOUT);
13147 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 {
13149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13150 "WDI Init failed to wait on an event");
13151
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013153 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 }
13155
13156 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13157
13158 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13159 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13160 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13161 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13162
13163 // For CCX and 11R Roaming
13164 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13165 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13166 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13167
13168 wpalMemoryCopy( pSendBuffer+usDataOffset,
13169 &enterBmpsReq,
13170 sizeof(enterBmpsReq));
13171
13172 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013174
13175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13179 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013180
13181fail:
13182 // Release the message buffer so we don't leak
13183 wpalMemoryFree(pSendBuffer);
13184
13185failRequest:
13186 //WDA should have failure check to avoid the memory leak
13187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013188}/*WDI_ProcessEnterBmpsReq*/
13189
13190/**
13191 @brief Process Exit BMPS Request function (called when Main FSM
13192 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013193
13194 @param pWDICtx: pointer to the WLAN DAL context
13195 pEventData: pointer to the event information structure
13196
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 @see
13198 @return Result of the function call
13199*/
13200WDI_Status
13201WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013202(
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 WDI_ControlBlockType* pWDICtx,
13204 WDI_EventInfoType* pEventData
13205)
13206{
13207 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13208 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 wpt_uint16 usDataOffset = 0;
13211 wpt_uint16 usSendSize = 0;
13212 tHalExitBmpsReqParams exitBmpsReq;
13213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13214
13215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 -------------------------------------------------------------------------*/
13218 if (( NULL == pEventData ) ||
13219 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13220 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13221 {
13222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 }
13227
13228 /*-----------------------------------------------------------------------
13229 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 sizeof(exitBmpsReq),
13234 &pSendBuffer, &usDataOffset, &usSendSize))||
13235 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13236 {
13237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13238 "Unable to get send buffer in Exit BMPS req %x %x %x",
13239 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 }
13243 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13244
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13246
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 wpalMemoryCopy( pSendBuffer+usDataOffset,
13248 &exitBmpsReq,
13249 sizeof(exitBmpsReq));
13250
13251 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253
13254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13258 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013259}/*WDI_ProcessExitBmpsReq*/
13260
13261/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013264
13265 @param pWDICtx: pointer to the WLAN DAL context
13266 pEventData: pointer to the event information structure
13267
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 @see
13269 @return Result of the function call
13270*/
13271WDI_Status
13272WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013273(
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 WDI_ControlBlockType* pWDICtx,
13275 WDI_EventInfoType* pEventData
13276)
13277{
13278 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13279 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 wpt_uint16 usDataOffset = 0;
13282 wpt_uint16 usSendSize = 0;
13283 tUapsdReqParams enterUapsdReq;
13284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13285
13286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 -------------------------------------------------------------------------*/
13289 if (( NULL == pEventData ) ||
13290 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13291 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13292 {
13293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 }
13298
13299 /*-----------------------------------------------------------------------
13300 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 sizeof(enterUapsdReq),
13305 &pSendBuffer, &usDataOffset, &usSendSize))||
13306 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13307 {
13308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13309 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13310 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 }
13314
13315 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13316 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13317 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13318 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13319 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13320 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13321 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13322 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013324
Jeff Johnsone7245742012-09-05 17:12:55 -070013325 wpalMemoryCopy( pSendBuffer+usDataOffset,
13326 &enterUapsdReq,
13327 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013328
13329 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013330 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
13332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13336 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013337}/*WDI_ProcessEnterUapsdReq*/
13338
13339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013342
13343 @param pWDICtx: pointer to the WLAN DAL context
13344 pEventData: pointer to the event information structure
13345
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 @see
13347 @return Result of the function call
13348*/
13349WDI_Status
13350WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013351(
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 WDI_ControlBlockType* pWDICtx,
13353 WDI_EventInfoType* pEventData
13354)
13355{
13356 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 wpt_uint16 usDataOffset = 0;
13359 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013360 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13361 wpt_uint8 bssIdx = 0;
13362
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13364
13365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 -------------------------------------------------------------------------*/
13368 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013369 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13371 {
13372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 }
13377
13378 /*-----------------------------------------------------------------------
13379 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013383 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013385 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 {
13387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13388 "Unable to get send buffer in Exit UAPSD req %x %x",
13389 pEventData, wdiExitUapsdRspCb);
13390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 }
13393
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013394 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13395
13396 wpalMemoryCopy( pSendBuffer+usDataOffset,
13397 &bssIdx,
13398 sizeof(wpt_uint8));
13399
13400 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13401 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13402
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13407 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013408}/*WDI_ProcessExitUapsdReq*/
13409
13410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013413
13414 @param pWDICtx: pointer to the WLAN DAL context
13415 pEventData: pointer to the event information structure
13416
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 @see
13418 @return Result of the function call
13419*/
13420WDI_Status
13421WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013422(
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 WDI_ControlBlockType* pWDICtx,
13424 WDI_EventInfoType* pEventData
13425)
13426{
13427 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13428 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 wpt_uint16 usDataOffset = 0;
13431 wpt_uint16 usSendSize = 0;
13432 tUapsdInfo uapsdAcParamsReq;
13433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13434
13435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 -------------------------------------------------------------------------*/
13438 if (( NULL == pEventData ) ||
13439 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13440 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13441 {
13442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 }
13447
13448 /*-----------------------------------------------------------------------
13449 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 sizeof(uapsdAcParamsReq),
13454 &pSendBuffer, &usDataOffset, &usSendSize))||
13455 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13456 {
13457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13458 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13459 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 }
13463
13464 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13465 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13466 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13467 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13468 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13469 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13470
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 wpalMemoryCopy( pSendBuffer+usDataOffset,
13472 &uapsdAcParamsReq,
13473 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013474
13475 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013477
13478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13482 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013483}/*WDI_ProcessSetUapsdAcParamsReq*/
13484
13485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013488
13489 @param pWDICtx: pointer to the WLAN DAL context
13490 pEventData: pointer to the event information structure
13491
Jeff Johnson295189b2012-06-20 16:38:30 -070013492 @see
13493 @return Result of the function call
13494*/
13495WDI_Status
13496WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013497(
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 WDI_ControlBlockType* pWDICtx,
13499 WDI_EventInfoType* pEventData
13500)
13501{
13502 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13503 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 wpt_uint16 usDataOffset = 0;
13506 wpt_uint16 usSendSize = 0;
13507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13508
13509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 -------------------------------------------------------------------------*/
13512 if (( NULL == pEventData ) ||
13513 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13514 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13515 {
13516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 }
13521
13522 /*-----------------------------------------------------------------------
13523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13528 &pSendBuffer, &usDataOffset, &usSendSize))||
13529 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13530 {
13531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13532 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13533 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 }
13537
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 wpalMemoryCopy( pSendBuffer+usDataOffset,
13539 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13540 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013541
13542 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013544
13545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13549 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013550}/*WDI_ProcessUpdateUapsdParamsReq*/
13551
13552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013553 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013555
13556 @param pWDICtx: pointer to the WLAN DAL context
13557 pEventData: pointer to the event information structure
13558
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 @see
13560 @return Result of the function call
13561*/
13562WDI_Status
13563WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013564(
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 WDI_ControlBlockType* pWDICtx,
13566 WDI_EventInfoType* pEventData
13567)
13568{
13569 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13570 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 wpt_uint16 usDataOffset = 0;
13573 wpt_uint16 usSendSize = 0;
13574 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13575
13576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13577
13578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 -------------------------------------------------------------------------*/
13581 if (( NULL == pEventData ) ||
13582 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13583 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13584 {
13585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 }
13590
13591 /*-----------------------------------------------------------------------
13592 Get message buffer
13593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 sizeof(halRxpFilterParams),
13596 &pSendBuffer, &usDataOffset, &usSendSize))||
13597 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13598 {
13599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13600 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13601 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 }
13605
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13610
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 wpalMemoryCopy( pSendBuffer+usDataOffset,
13612 &halRxpFilterParams,
13613 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013614
13615 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013617
13618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13622 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013623}/*WDI_ProcessConfigureRxpFilterReq*/
13624
13625/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013628
13629 @param pWDICtx: pointer to the WLAN DAL context
13630 pEventData: pointer to the event information structure
13631
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 @see
13633 @return Result of the function call
13634*/
13635WDI_Status
13636WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013637(
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 WDI_ControlBlockType* pWDICtx,
13639 WDI_EventInfoType* pEventData
13640)
13641{
13642 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13643 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 wpt_uint16 usDataOffset = 0;
13646 wpt_uint16 usSendSize = 0;
13647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13648
13649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 -------------------------------------------------------------------------*/
13652 if (( NULL == pEventData ) ||
13653 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13654 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13655 {
13656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 }
13661
13662 /*-----------------------------------------------------------------------
13663 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13668 &pSendBuffer, &usDataOffset, &usSendSize))||
13669 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13670 {
13671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13672 "Unable to get send buffer in Set beacon filter req %x %x %x",
13673 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013676 }
13677
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 wpalMemoryCopy( pSendBuffer+usDataOffset,
13679 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13680 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13681 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13682 &pwdiBeaconFilterParams->aFilters[0],
13683 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013684
13685 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013686 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013687
13688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13692 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013693}/*WDI_ProcessSetBeaconFilterReq*/
13694
13695/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013698
13699 @param pWDICtx: pointer to the WLAN DAL context
13700 pEventData: pointer to the event information structure
13701
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 @see
13703 @return Result of the function call
13704*/
13705WDI_Status
13706WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013707(
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 WDI_ControlBlockType* pWDICtx,
13709 WDI_EventInfoType* pEventData
13710)
13711{
13712 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13713 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 wpt_uint16 usDataOffset = 0;
13716 wpt_uint16 usSendSize = 0;
13717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13718
13719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 -------------------------------------------------------------------------*/
13722 if (( NULL == pEventData ) ||
13723 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13724 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13725 {
13726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 }
13731
13732 /*-----------------------------------------------------------------------
13733 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13738 &pSendBuffer, &usDataOffset, &usSendSize))||
13739 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13740 {
13741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13742 "Unable to get send buffer in remove beacon filter req %x %x %x",
13743 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 }
13747
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 wpalMemoryCopy( pSendBuffer+usDataOffset,
13749 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13750 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013751
13752 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013754
13755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013756 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13759 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013760}
13761
13762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013765
13766 @param pWDICtx: pointer to the WLAN DAL context
13767 pEventData: pointer to the event information structure
13768
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 @see
13770 @return Result of the function call
13771*/
13772WDI_Status
13773WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013774(
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 WDI_ControlBlockType* pWDICtx,
13776 WDI_EventInfoType* pEventData
13777)
13778{
13779 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13780 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 wpt_uint16 usDataOffset = 0;
13783 wpt_uint16 usSendSize = 0;
13784 tHalRSSIThresholds rssiThresholdsReq;
13785 WDI_Status ret_status = 0;
13786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13787
13788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 -------------------------------------------------------------------------*/
13791 if (( NULL == pEventData ) ||
13792 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13793 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13794 {
13795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 }
13800
13801 /*-----------------------------------------------------------------------
13802 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013806 sizeof(rssiThresholdsReq),
13807 &pSendBuffer, &usDataOffset, &usSendSize))||
13808 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13809 {
13810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13811 "Unable to get send buffer in remove beacon filter req %x %x %x",
13812 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013815 }
13816
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013822 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13837
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 wpalMemoryCopy( pSendBuffer+usDataOffset,
13839 &rssiThresholdsReq,
13840 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013841
13842 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844
13845 /*-------------------------------------------------------------------------
13846 Send Set threshold req to HAL
13847 -------------------------------------------------------------------------*/
13848 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13849 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13850 {
13851 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13852 // req. Then as a result of processing the threshold cross ind, we trigger
13853 // a Set threshold req, then we need to indicate to WDI that it needs to
13854 // go to busy state as a result of the indication as we sent a req in the
13855 // same WDI context.
13856 // Hence expected state transition is to busy.
13857 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13858 }
13859
13860 return ret_status;
13861}
13862
13863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013866
13867 @param pWDICtx: pointer to the WLAN DAL context
13868 pEventData: pointer to the event information structure
13869
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 @see
13871 @return Result of the function call
13872*/
13873WDI_Status
13874WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013875(
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 WDI_ControlBlockType* pWDICtx,
13877 WDI_EventInfoType* pEventData
13878)
13879{
13880 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13881 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 wpt_uint16 usDataOffset = 0;
13884 wpt_uint16 usSendSize = 0;
13885 tHalHostOffloadReq hostOffloadParams;
13886 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013887 wpt_uint8 ucCurrentBSSSesIdx = 0;
13888 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013889
13890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13891
13892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 -------------------------------------------------------------------------*/
13895 if (( NULL == pEventData ) ||
13896 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13897 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13898 {
13899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013902 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 }
13904
13905 /*-----------------------------------------------------------------------
13906 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13911 &pSendBuffer, &usDataOffset, &usSendSize))||
13912 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13913 {
13914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13915 "Unable to get send buffer in host offload req %x %x %x",
13916 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13917 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013918 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 }
13920
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013921 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13922 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13923 &pBSSSes);
13924 if ( NULL == pBSSSes )
13925 {
13926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013927 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13928 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013929 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013930 }
13931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13933 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013934
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13936 {
13937 // ARP Offload
13938 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13939 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13940 4);
13941 }
13942 else
13943 {
13944 // NS Offload
13945 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13946 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13947 16);
13948
13949#ifdef WLAN_NS_OFFLOAD
13950 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13951 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13952 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13953 16);
13954 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13955 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13956 16);
13957 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13958 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13959 16);
13960 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13961 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13962 16);
13963 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13964 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13965 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013966 nsOffloadParams.srcIPv6AddrValid =
13967 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13968
13969 nsOffloadParams.targetIPv6Addr1Valid =
13970 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13971
13972 nsOffloadParams.targetIPv6Addr2Valid =
13973 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13974
13975 nsOffloadParams.slotIndex =
13976 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013977
Jeff Johnson295189b2012-06-20 16:38:30 -070013978#endif // WLAN_NS_OFFLOAD
13979 }
13980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013981 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13982
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 // copy hostOffloadParams into pSendBuffer
13984 wpalMemoryCopy( pSendBuffer+usDataOffset,
13985 &hostOffloadParams,
13986 sizeof(hostOffloadParams));
13987
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013988 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013990 // copy nsOffloadParams into pSendBuffer
13991 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 &nsOffloadParams,
13993 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013994 }
13995 else
13996 {
13997#ifdef WLAN_NS_OFFLOAD
13998 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13999 {
14000 // copy nsOffloadParams into pSendBuffer
14001 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14002 &nsOffloadParams,
14003 sizeof(nsOffloadParams));
14004 }
14005#endif
14006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014007
14008 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014010
14011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14015 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014016
14017fail:
14018 // Release the message buffer so we don't leak
14019 wpalMemoryFree(pSendBuffer);
14020
14021failRequest:
14022 //WDA should have failure check to avoid the memory leak
14023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014024}/*WDI_ProcessHostOffloadReq*/
14025
14026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014029
14030 @param pWDICtx: pointer to the WLAN DAL context
14031 pEventData: pointer to the event information structure
14032
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 @see
14034 @return Result of the function call
14035*/
14036WDI_Status
14037WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014038(
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 WDI_ControlBlockType* pWDICtx,
14040 WDI_EventInfoType* pEventData
14041)
14042{
14043 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14044 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014045 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 wpt_uint16 usDataOffset = 0;
14047 wpt_uint16 usSendSize = 0;
14048 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014049 wpt_uint8 ucCurrentBSSSesIdx = 0;
14050 WDI_BSSSessionType* pBSSSes = NULL;
14051
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14053
14054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 -------------------------------------------------------------------------*/
14057 if (( NULL == pEventData ) ||
14058 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14059 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14060 {
14061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14062 "Invalid parameters in Keep Alive req");
14063 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014064 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 }
14066
14067 /*-----------------------------------------------------------------------
14068 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 sizeof(keepAliveReq),
14073 &pSendBuffer, &usDataOffset, &usSendSize))||
14074 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14075 {
14076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14077 "Unable to get send buffer in keep alive req %x %x %x",
14078 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14079 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014080 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 }
14082
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014083 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14084 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14085 &pBSSSes);
14086 if ( NULL == pBSSSes )
14087 {
14088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014089 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014090 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014091 }
14092
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14094 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14095
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014096 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014097
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14099 {
14100 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14101 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14102 HAL_IPV4_ADDR_LEN);
14103 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14104 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 wpalMemoryCopy(keepAliveReq.destMacAddr,
14107 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14108 HAL_MAC_ADDR_LEN);
14109 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014110
14111 wpalMemoryCopy( pSendBuffer+usDataOffset,
14112 &keepAliveReq,
14113 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014114
14115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14116 "Process keep alive req %d",sizeof(keepAliveReq));
14117
14118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14119 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14120
14121 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014123
14124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14125 "Sending keep alive req to HAL");
14126
14127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14131 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014132
14133fail:
14134 // Release the message buffer so we don't leak
14135 wpalMemoryFree(pSendBuffer);
14136
14137failRequest:
14138 //WDA should have failure check to avoid the memory leak
14139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140}/*WDI_ProcessKeepAliveReq*/
14141
14142
14143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014144 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014145 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014146
14147 @param pWDICtx: pointer to the WLAN DAL context
14148 pEventData: pointer to the event information structure
14149
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 @see
14151 @return Result of the function call
14152*/
14153WDI_Status
14154WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014155(
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 WDI_ControlBlockType* pWDICtx,
14157 WDI_EventInfoType* pEventData
14158)
14159{
14160 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14161 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014162 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 wpt_uint16 usDataOffset = 0;
14164 wpt_uint16 usSendSize = 0;
14165 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014166 wpt_uint8 ucCurrentBSSSesIdx = 0;
14167 WDI_BSSSessionType* pBSSSes = NULL;
14168
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14170
14171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 -------------------------------------------------------------------------*/
14174 if (( NULL == pEventData ) ||
14175 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14176 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14177 {
14178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014181 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 }
14183
14184 /*-----------------------------------------------------------------------
14185 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 sizeof(wowlAddBcPtrnReq),
14190 &pSendBuffer, &usDataOffset, &usSendSize))||
14191 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14192 {
14193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14194 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14195 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14196 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014197 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014198 }
14199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014200 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14201 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14202 &pBSSSes);
14203 if ( NULL == pBSSSes )
14204 {
14205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014206 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014207 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014208 }
14209
Jeff Johnsone7245742012-09-05 17:12:55 -070014210 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014212 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014213 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14218
14219 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14220 {
14221 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14222 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14223 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14224 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14225 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14226 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14227 }
14228 else
14229 {
14230 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14231 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14232 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14233 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14234 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14235 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14236
14237 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14238 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14239 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14240 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14241 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14242 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14243 }
14244
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014245 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14246
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 wpalMemoryCopy( pSendBuffer+usDataOffset,
14248 &wowlAddBcPtrnReq,
14249 sizeof(wowlAddBcPtrnReq));
14250
14251 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014253
14254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14258 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014259fail:
14260 // Release the message buffer so we don't leak
14261 wpalMemoryFree(pSendBuffer);
14262
14263failRequest:
14264 //WDA should have failure check to avoid the memory leak
14265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014266}/*WDI_ProcessWowlAddBcPtrnReq*/
14267
14268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014271
14272 @param pWDICtx: pointer to the WLAN DAL context
14273 pEventData: pointer to the event information structure
14274
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 @see
14276 @return Result of the function call
14277*/
14278WDI_Status
14279WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014280(
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 WDI_ControlBlockType* pWDICtx,
14282 WDI_EventInfoType* pEventData
14283)
14284{
14285 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14286 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 wpt_uint16 usDataOffset = 0;
14289 wpt_uint16 usSendSize = 0;
14290 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014291 wpt_uint8 ucCurrentBSSSesIdx = 0;
14292 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14294
14295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 -------------------------------------------------------------------------*/
14298 if (( NULL == pEventData ) ||
14299 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14300 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14301 {
14302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014305 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 }
14307
14308 /*-----------------------------------------------------------------------
14309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 sizeof(wowlDelBcPtrnReq),
14314 &pSendBuffer, &usDataOffset, &usSendSize))||
14315 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14316 {
14317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14318 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14319 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14320 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014321 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 }
14323
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014324 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14325 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14326 &pBSSSes);
14327 if ( NULL == pBSSSes )
14328 {
14329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014330 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014331 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014332 }
14333
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014336
14337 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14338
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 wpalMemoryCopy( pSendBuffer+usDataOffset,
14340 &wowlDelBcPtrnReq,
14341 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014342
14343 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014345
14346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14350 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014351
14352fail:
14353 // Release the message buffer so we don't leak
14354 wpalMemoryFree(pSendBuffer);
14355
14356failRequest:
14357 //WDA should have failure check to avoid the memory leak
14358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359}/*WDI_ProcessWowlDelBcPtrnReq*/
14360
14361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014364
14365 @param pWDICtx: pointer to the WLAN DAL context
14366 pEventData: pointer to the event information structure
14367
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 @see
14369 @return Result of the function call
14370*/
14371WDI_Status
14372WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014373(
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 WDI_ControlBlockType* pWDICtx,
14375 WDI_EventInfoType* pEventData
14376)
14377{
14378 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14379 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 wpt_uint16 usDataOffset = 0;
14382 wpt_uint16 usSendSize = 0;
14383 tHalWowlEnterParams wowlEnterReq;
14384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14385
14386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 -------------------------------------------------------------------------*/
14389 if (( NULL == pEventData ) ||
14390 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14391 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14392 {
14393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 }
14398
14399 /*-----------------------------------------------------------------------
14400 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 sizeof(wowlEnterReq),
14405 &pSendBuffer, &usDataOffset, &usSendSize))||
14406 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14407 {
14408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14409 "Unable to get send buffer in Wowl enter req %x %x %x",
14410 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014413 }
14414
Kumar Anand21a26022013-07-22 14:35:34 -070014415 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14416
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14433
14434#ifdef WLAN_WAKEUP_EVENTS
14435 wowlEnterReq.ucWoWEAPIDRequestEnable =
14436 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14437
14438 wowlEnterReq.ucWoWEAPOL4WayEnable =
14439 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14440
14441 wowlEnterReq.ucWowNetScanOffloadMatch =
14442 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14443
14444 wowlEnterReq.ucWowGTKRekeyError =
14445 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14446
14447 wowlEnterReq.ucWoWBSSConnLoss =
14448 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14449#endif // WLAN_WAKEUP_EVENTS
14450
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014451 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14452
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14454 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14455 sizeof(tSirMacAddr));
14456
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 wpalMemoryCopy( pSendBuffer+usDataOffset,
14458 &wowlEnterReq,
14459 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014460
14461 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014463
14464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14468 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014469}/*WDI_ProcessWowlEnterReq*/
14470
14471/**
14472 @brief Process Wowl exit Request function (called when Main FSM
14473 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014474
14475 @param pWDICtx: pointer to the WLAN DAL context
14476 pEventData: pointer to the event information structure
14477
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 @see
14479 @return Result of the function call
14480*/
14481WDI_Status
14482WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014483(
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 WDI_ControlBlockType* pWDICtx,
14485 WDI_EventInfoType* pEventData
14486)
14487{
14488 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014489 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 wpt_uint16 usDataOffset = 0;
14492 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014493 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14495
14496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 -------------------------------------------------------------------------*/
14499 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014500 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14502 {
14503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014504 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 }
14508
14509 /*-----------------------------------------------------------------------
14510 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014514 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014516 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 {
14518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14519 "Unable to get send buffer in Wowl Exit req %x %x",
14520 pEventData, wdiWowlExitCb);
14521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 }
14524
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014525 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14526
14527 wpalMemoryCopy( pSendBuffer+usDataOffset,
14528 &wowlExitparams,
14529 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14534 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014535}/*WDI_ProcessWowlExitReq*/
14536
14537/**
14538 @brief Process Configure Apps Cpu Wakeup State Request function
14539 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014540
14541 @param pWDICtx: pointer to the WLAN DAL context
14542 pEventData: pointer to the event information structure
14543
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 @see
14545 @return Result of the function call
14546*/
14547WDI_Status
14548WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014549(
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 WDI_ControlBlockType* pWDICtx,
14551 WDI_EventInfoType* pEventData
14552)
14553{
14554 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14555 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014556 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 wpt_uint16 usDataOffset = 0;
14558 wpt_uint16 usSendSize = 0;
14559 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14561
14562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 -------------------------------------------------------------------------*/
14565 if (( NULL == pEventData ) ||
14566 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14567 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14568 {
14569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 }
14574
14575 /*-----------------------------------------------------------------------
14576 Get message buffer
14577 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 sizeof(halCfgAppsCpuWakeupStateReqParams),
14580 &pSendBuffer, &usDataOffset, &usSendSize))||
14581 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14582 {
14583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14584 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14585 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 }
14589
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14592
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 wpalMemoryCopy( pSendBuffer+usDataOffset,
14594 &halCfgAppsCpuWakeupStateReqParams,
14595 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014596
14597 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014599
14600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14604 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14605 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014606}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14607
14608#ifdef WLAN_FEATURE_VOWIFI_11R
14609/**
14610 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14611 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014612
14613 @param pWDICtx: pointer to the WLAN DAL context
14614 pEventData: pointer to the event information structure
14615
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 @see
14617 @return Result of the function call
14618*/
14619WDI_Status
14620WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014621(
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 WDI_ControlBlockType* pWDICtx,
14623 WDI_EventInfoType* pEventData
14624)
14625{
14626 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14627 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 wpt_uint16 usDataOffset = 0;
14632 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014633 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 wpt_macAddr macBSSID;
14635 tAggrAddTsReq halAggrAddTsReq;
14636 int i;
14637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14638
14639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 -------------------------------------------------------------------------*/
14642 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14643 ( NULL == pEventData->pCBfnc ))
14644 {
14645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 }
14650 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14651 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14652 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14653 /*-------------------------------------------------------------------------
14654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 -------------------------------------------------------------------------*/
14657 wpalMutexAcquire(&pWDICtx->wptMutex);
14658
14659 /*------------------------------------------------------------------------
14660 Find the BSS for which the request is made and identify WDI session
14661 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14663 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 &macBSSID))
14665 {
14666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14667 "This station does not exist in the WDI Station Table %d");
14668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 }
14671
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14673 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14676 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14677 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014678
14679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014682
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 /*------------------------------------------------------------------------
14684 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 ------------------------------------------------------------------------*/
14687 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14688 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14690 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14691 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014692
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 }
14697
14698 wpalMutexRelease(&pWDICtx->wptMutex);
14699 /*-----------------------------------------------------------------------
14700 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 sizeof(tAggrAddTsParams),
14705 &pSendBuffer, &usDataOffset, &usSendSize))||
14706 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14707 {
14708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14709 "Unable to get send buffer in set bss key req %x %x %x",
14710 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 }
14714
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14719
14720 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14721 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14728 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14731 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14734 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14737 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14740 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14743 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14746 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14749 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014754
14755
14756 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14786 }
14787
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 wpalMemoryCopy( pSendBuffer+usDataOffset,
14789 &halAggrAddTsReq,
14790 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014791
14792 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794
14795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014801}/*WDI_ProcessAggrAddTSpecReq*/
14802#endif /* WLAN_FEATURE_VOWIFI_11R */
14803
14804/**
14805 @brief Process Shutdown Request function (called when Main FSM
14806 allows it)
14807
14808 @param pWDICtx: pointer to the WLAN DAL context
14809 pEventData: pointer to the event information structure
14810
14811 @see
14812 @return Result of the function call
14813*/
14814WDI_Status
14815WDI_ProcessShutdownReq
14816(
14817 WDI_ControlBlockType* pWDICtx,
14818 WDI_EventInfoType* pEventData
14819 )
14820{
14821 wpt_status wptStatus;
14822
14823
14824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14825
14826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 -------------------------------------------------------------------------*/
14829 if ( NULL == pEventData )
14830 {
14831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 WDI_ASSERT(0);
14834 return WDI_STATUS_E_FAILURE;
14835 }
14836
14837 wpalMutexAcquire(&pWDICtx->wptMutex);
14838
14839
14840 gWDIInitialized = eWLAN_PAL_FALSE;
14841 /*! TO DO: stop the data services */
14842 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14843 {
14844 /*Stop the STA Table !UT- check this logic again
14845 It is safer to do it here than on the response - because a stop is imminent*/
14846 WDI_STATableStop(pWDICtx);
14847
14848 /* Stop Transport Driver, DXE */
14849 WDTS_Stop(pWDICtx);
14850 }
14851
14852 /*Clear all pending request*/
14853 WDI_ClearPendingRequests(pWDICtx);
14854 /* Close Data transport*/
14855 /* FTM mode does not open Data Path */
14856 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14857 {
14858 WDTS_Close(pWDICtx);
14859 }
14860 /*Close the STA Table !UT- check this logic again*/
14861 WDI_STATableClose(pWDICtx);
14862 /*close the PAL */
14863 wptStatus = wpalClose(pWDICtx->pPALContext);
14864 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14865 {
14866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14867 "Failed to wpal Close %d", wptStatus);
14868 WDI_ASSERT(0);
14869 }
14870
14871 /*Transition back to init state*/
14872 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14873
14874 wpalMutexRelease(&pWDICtx->wptMutex);
14875
14876 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878
14879
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881}/*WDI_ProcessShutdownReq*/
14882
14883/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014885========================================================================*/
14886
14887/**
14888 @brief Process Start Response function (called when a response
14889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014890
14891 @param pWDICtx: pointer to the WLAN DAL context
14892 pEventData: pointer to the event information structure
14893
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 @see
14895 @return Result of the function call
14896*/
14897WDI_Status
14898WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014899(
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 WDI_ControlBlockType* pWDICtx,
14901 WDI_EventInfoType* pEventData
14902)
14903{
14904 WDI_StartRspParamsType wdiRspParams;
14905 WDI_StartRspCb wdiStartRspCb = NULL;
14906
14907 tHalMacStartRspParams* startRspParams;
14908
14909#ifndef HAL_SELF_STA_PER_BSS
14910 WDI_AddStaParams wdiAddSTAParam = {0};
14911#endif
14912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14913
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 -------------------------------------------------------------------------*/
14918 if (( NULL == pEventData ) ||
14919 ( NULL == pEventData->pEventData) ||
14920 ( NULL == wdiStartRspCb ))
14921 {
14922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 }
14927
14928 /*-------------------------------------------------------------------------
14929 Extract response and send it to UMAC
14930 -------------------------------------------------------------------------*/
14931 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14932 {
14933 // not enough data was received
14934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14935 "Invalid response length in Start Resp Expect %x Rcvd %x",
14936 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 }
14940
14941 /*-------------------------------------------------------------------------
14942 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 -------------------------------------------------------------------------*/
14945 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14946
14947 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14948 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14949 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14950 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14951 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14952 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14953 wdiRspParams.wlanReportedVersion.major =
14954 startRspParams->wcnssWlanVersion.major;
14955 wdiRspParams.wlanReportedVersion.minor =
14956 startRspParams->wcnssWlanVersion.minor;
14957 wdiRspParams.wlanReportedVersion.version =
14958 startRspParams->wcnssWlanVersion.version;
14959 wdiRspParams.wlanReportedVersion.revision =
14960 startRspParams->wcnssWlanVersion.revision;
14961 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14962 startRspParams->wcnssCrmVersionString,
14963 sizeof(wdiRspParams.wcnssSoftwareVersion));
14964 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14965 startRspParams->wcnssWlanVersionString,
14966 sizeof(wdiRspParams.wcnssHardwareVersion));
14967 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14968
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014969 /*Save the HAL Version*/
14970 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14971
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 wpalMutexAcquire(&pWDICtx->wptMutex);
14973 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14974 {
14975 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14976
14977 /*Cache the start response for further use*/
14978 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 sizeof(pWDICtx->wdiCachedStartRspParams));
14981
14982 }
14983 else
14984 {
14985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14986 "Failed to start device with status %s(%d)",
14987 WDI_getHALStatusMsgString(startRspParams->status),
14988 startRspParams->status);
14989
14990 /*Set the expected state transition to stopped - because the start has
14991 failed*/
14992 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14993
14994 wpalMutexRelease(&pWDICtx->wptMutex);
14995
14996 /*Notify UMAC*/
14997 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014998
Jeff Johnson295189b2012-06-20 16:38:30 -070014999 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15000
15001 /*Although the response is an error - it was processed by our function
15002 so as far as the caller is concerned this is a succesful reponse processing*/
15003 return WDI_STATUS_SUCCESS;
15004 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015005
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 wpalMutexRelease(&pWDICtx->wptMutex);
15007
15008 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15009 {
15010 /* FTM mode does not need to execute below */
15011 /* Notify UMAC */
15012 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15013 return WDI_STATUS_SUCCESS;
15014 }
15015
15016 /* START the Data transport */
15017 WDTS_startTransport(pWDICtx);
15018
15019 /*Start the STA Table !- check this logic again*/
15020 WDI_STATableStart(pWDICtx);
15021
15022#ifndef HAL_SELF_STA_PER_BSS
15023 /* Store the Self STA Index */
15024 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15025
15026 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15027 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15028 WDI_MAC_ADDR_LEN);
15029
15030 /* At this point add the self-STA */
15031
15032 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15033 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15034 /*! TO DO: wdiAddSTAParam.dpuSig */
15035 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15036 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15037 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15038
15039 //all DPU indices are the same for self STA
15040 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15041 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015042 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15044 WDI_MAC_ADDR_LEN);
15045 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15046 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15047
15048 /* Note: Since we don't get an explicit config STA request for self STA, we
15049 add the self STA upon receiving the Start response message. But the
15050 self STA entry in the table is deleted when WDI gets an explicit delete STA
15051 request */
15052 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15053#endif
15054
15055 /*Notify UMAC*/
15056 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15057
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015059}/*WDI_ProcessStartRsp*/
15060
15061
15062/**
15063 @brief Process Stop Response function (called when a response
15064 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015065
15066 @param pWDICtx: pointer to the WLAN DAL context
15067 pEventData: pointer to the event information structure
15068
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 @see
15070 @return Result of the function call
15071*/
15072WDI_Status
15073WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015074(
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 WDI_ControlBlockType* pWDICtx,
15076 WDI_EventInfoType* pEventData
15077)
15078{
15079 WDI_Status wdiStatus;
15080 WDI_StopRspCb wdiStopRspCb = NULL;
15081
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15084
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 -------------------------------------------------------------------------*/
15089 if (( NULL == pEventData ) ||
15090 ( NULL == pEventData->pEventData) ||
15091 ( NULL == wdiStopRspCb ))
15092 {
15093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 }
15098
15099 /*-------------------------------------------------------------------------
15100 Extract response and send it to UMAC
15101 -------------------------------------------------------------------------*/
15102 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15103 {
15104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15105 "Invalid response length in Stop Resp %x %x",
15106 pEventData->uEventDataSize);
15107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 }
15110
15111 /*-------------------------------------------------------------------------
15112 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015114 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015115 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15116 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 sizeof(halMacStopRspMsg.stopRspParams));
15118
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015120
15121 wpalMutexAcquire(&pWDICtx->wptMutex);
15122
15123 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015124 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 --------------------------------------------------------------------------*/
15126 if ( WDI_STATUS_SUCCESS != wdiStatus )
15127 {
15128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15129 "Failed to stop the device with status %s (%d)",
15130 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15131 halMacStopRspMsg.stopRspParams.status);
15132
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15134
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015138
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15140
15141 /*Transition now as WDI may get preempted imediately after it sends
15142 up the Stop Response and it will not get to process the state transition
15143 from Main Rsp function*/
15144 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15145 wpalMutexRelease(&pWDICtx->wptMutex);
15146
15147 /*! TO DO: - STOP the Data transport */
15148
15149 /*Notify UMAC*/
15150 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15151
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015153}/*WDI_ProcessStopRsp*/
15154
15155/**
15156 @brief Process Close Rsp function (called when a response
15157 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015158
15159 @param pWDICtx: pointer to the WLAN DAL context
15160 pEventData: pointer to the event information structure
15161
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 @see
15163 @return Result of the function call
15164*/
15165WDI_Status
15166WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015167(
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 WDI_ControlBlockType* pWDICtx,
15169 WDI_EventInfoType* pEventData
15170)
15171{
15172 /*There is no close response comming from HAL - function just kept for
15173 simmetry */
15174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015176}/*WDI_ProcessCloseRsp*/
15177
15178
15179/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015181============================================================================*/
15182
15183/**
15184 @brief Process Init Scan Rsp function (called when a response
15185 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015186
15187 @param pWDICtx: pointer to the WLAN DAL context
15188 pEventData: pointer to the event information structure
15189
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 @see
15191 @return Result of the function call
15192*/
15193WDI_Status
15194WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015195(
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 WDI_ControlBlockType* pWDICtx,
15197 WDI_EventInfoType* pEventData
15198)
15199{
15200 WDI_Status wdiStatus;
15201 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015203 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15205
15206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 -------------------------------------------------------------------------*/
15209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15210 ( NULL == pEventData->pEventData))
15211 {
15212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 }
15217
15218 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15219 if( NULL == wdiInitScanRspCb)
15220 {
15221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015222 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 }
15226
15227 /*-------------------------------------------------------------------------
15228 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15232 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 sizeof(halInitScanRspMsg.initScanRspParams));
15234
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015236
15237 if ( pWDICtx->bInBmps )
15238 {
15239 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015240 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15241 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15243 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15244 WDI_ASSERT(0);
15245 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 }
15247
15248 /*Notify UMAC*/
15249 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15250
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015252}/*WDI_ProcessInitScanRsp*/
15253
15254
15255/**
15256 @brief Process Start Scan Rsp function (called when a response
15257 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015258
15259 @param pWDICtx: pointer to the WLAN DAL context
15260 pEventData: pointer to the event information structure
15261
Jeff Johnson295189b2012-06-20 16:38:30 -070015262 @see
15263 @return Result of the function call
15264*/
15265WDI_Status
15266WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015267(
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 WDI_ControlBlockType* pWDICtx,
15269 WDI_EventInfoType* pEventData
15270)
15271{
15272 WDI_StartScanRspParamsType wdiStartScanParams;
15273 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015274
15275 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15277
15278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 -------------------------------------------------------------------------*/
15281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15282 ( NULL == pEventData->pEventData))
15283 {
15284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 }
15289
15290 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15291 if( NULL == wdiStartScanRspCb)
15292 {
15293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015294 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 }
15298
15299 /*-------------------------------------------------------------------------
15300 Extract response and send it to UMAC
15301 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15303 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 sizeof(halStartScanRspMsg.startScanRspParams));
15305
15306 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15307 halStartScanRspMsg.startScanRspParams.status);
15308#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 halStartScanRspMsg.startScanRspParams.startTSF,
15313 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015314#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015315
15316 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15317 {
15318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15319 "Start scan failed with status %s (%d)",
15320 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15321 halStartScanRspMsg.startScanRspParams.status);
15322 /* send the status to UMAC, don't return from here*/
15323 }
15324
15325 /*Notify UMAC*/
15326 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15327
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015329
15330}/*WDI_ProcessStartScanRsp*/
15331
15332
15333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015336
15337 @param pWDICtx: pointer to the WLAN DAL context
15338 pEventData: pointer to the event information structure
15339
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 @see
15341 @return Result of the function call
15342*/
15343WDI_Status
15344WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015345(
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 WDI_ControlBlockType* pWDICtx,
15347 WDI_EventInfoType* pEventData
15348)
15349{
15350 WDI_Status wdiStatus;
15351 tHalEndScanRspMsg halEndScanRspMsg;
15352 WDI_EndScanRspCb wdiEndScanRspCb;
15353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15354
15355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 -------------------------------------------------------------------------*/
15358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15359 ( NULL == pEventData->pEventData))
15360 {
15361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 }
15366
15367 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15368
15369 /*-------------------------------------------------------------------------
15370 Extract response and send it to UMAC
15371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15373 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 sizeof(halEndScanRspMsg.endScanRspParams));
15375
Jeff Johnsone7245742012-09-05 17:12:55 -070015376 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015377
15378 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15379 {
15380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15381 "End Scan failed with status %s (%d )",
15382 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15383 halEndScanRspMsg.endScanRspParams.status);
15384 /* send the status to UMAC, don't return from here*/
15385 }
15386
15387 /*Notify UMAC*/
15388 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15389
Jeff Johnsone7245742012-09-05 17:12:55 -070015390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015391}/*WDI_ProcessEndScanRsp*/
15392
15393
15394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015397
15398 @param pWDICtx: pointer to the WLAN DAL context
15399 pEventData: pointer to the event information structure
15400
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 @see
15402 @return Result of the function call
15403*/
15404WDI_Status
15405WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015406(
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 WDI_ControlBlockType* pWDICtx,
15408 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015409)
Jeff Johnson295189b2012-06-20 16:38:30 -070015410{
15411 WDI_Status wdiStatus;
15412 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015413
15414 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15416
15417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 -------------------------------------------------------------------------*/
15420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15421 ( NULL == pEventData->pEventData))
15422 {
15423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 }
15428
15429 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15430
15431 /*-------------------------------------------------------------------------
15432 Extract response and send it to UMAC
15433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15435 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15437
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015439
15440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 halFinishScanRspMsg.finishScanRspParams.status);
15443
15444 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15445 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15446 {
15447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15448 "Finish Scan failed with status %s (%d)",
15449 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15450 halFinishScanRspMsg.finishScanRspParams.status);
15451 /* send the status to UMAC, don't return from here*/
15452 }
15453
15454 /*Notify UMAC*/
15455 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15456
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015458}/*WDI_ProcessFinishScanRsp*/
15459
15460/**
15461 @brief Process Join Response function (called when a response
15462 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015463
15464 @param pWDICtx: pointer to the WLAN DAL context
15465 pEventData: pointer to the event information structure
15466
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 @see
15468 @return Result of the function call
15469*/
15470WDI_Status
15471WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015472(
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 WDI_ControlBlockType* pWDICtx,
15474 WDI_EventInfoType* pEventData
15475)
15476{
15477 WDI_Status wdiStatus;
15478 WDI_JoinRspCb wdiJoinRspCb;
15479 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015480
15481 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15483
15484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 -------------------------------------------------------------------------*/
15487 if (( NULL == pWDICtx ) ||
15488 ( NULL == pWDICtx->pfncRspCB ) ||
15489 ( NULL == pEventData ) ||
15490 ( NULL == pEventData->pEventData))
15491 {
15492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
15498 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15499
15500 /*-------------------------------------------------------------------------
15501 Extract response and send it to UMAC
15502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015503 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15504 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 sizeof(halJoinRspMsg.joinRspParams));
15506
Jeff Johnsone7245742012-09-05 17:12:55 -070015507 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015508
15509 wpalMutexAcquire(&pWDICtx->wptMutex);
15510
15511 /*-----------------------------------------------------------------------
15512 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15517 {
15518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015519 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15520 "association no longer in progress %d - mysterious HAL response",
15521 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015522
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 }
15527
15528 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15529
15530 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 -----------------------------------------------------------------------*/
15533 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15534 {
15535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15536 "Join only allowed in Joining state - failure state is %d "
15537 "strange HAL response", pBSSSes->wdiAssocState);
15538
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15540
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015543 }
15544
15545
15546 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 -----------------------------------------------------------------------*/
15549 if ( WDI_STATUS_SUCCESS != wdiStatus )
15550 {
15551 /*Association was failed by HAL - remove session*/
15552 WDI_DeleteSession(pWDICtx, pBSSSes);
15553
15554 /*Association no longer in progress */
15555 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15556
15557 /*Association no longer in progress - prepare pending assoc for processing*/
15558 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015559
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 }
15561 else
15562 {
15563 /*Transition to state Joining - this may be redundant as we are supposed
15564 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015565 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015566 }
15567
15568 wpalMutexRelease(&pWDICtx->wptMutex);
15569
15570 /*Notify UMAC*/
15571 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15572
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574}/*WDI_ProcessJoinRsp*/
15575
15576
15577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015580
15581 @param pWDICtx: pointer to the WLAN DAL context
15582 pEventData: pointer to the event information structure
15583
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 @see
15585 @return Result of the function call
15586*/
15587WDI_Status
15588WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015589(
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 WDI_ControlBlockType* pWDICtx,
15591 WDI_EventInfoType* pEventData
15592)
15593{
15594 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15595 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 WDI_BSSSessionType* pBSSSes = NULL;
15598
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15601 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015602
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15604
15605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 -------------------------------------------------------------------------*/
15608 if (( NULL == pEventData ) ||
15609 ( NULL == pEventData->pEventData))
15610 {
15611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 }
15616
15617 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15618
15619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15623 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 sizeof(halConfigBssRspMsg.configBssRspParams));
15625
15626 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15627 halConfigBssRspMsg.configBssRspParams.status);
15628 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15629 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015630 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15632 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015633
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635
15636 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015638
15639 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015643
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15647 #endif
15648 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15649 halConfigBssRspMsg.configBssRspParams.staMac,
15650 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015651
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 wpalMutexAcquire(&pWDICtx->wptMutex);
15653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15657 wdiConfigBSSParams.macBSSID,
15658 &pBSSSes);
15659
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 /*-----------------------------------------------------------------------
15661 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015662 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 -----------------------------------------------------------------------*/
15664 if ( NULL == pBSSSes )
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15667 "Association sequence for this BSS does not yet exist "
15668 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015669
15670 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15671
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015675
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 /*Save data for this BSS*/
15677 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15678 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15689 pBSSSes->bcastStaIdx =
15690 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015691
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015693
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 /*-------------------------------------------------------------------------
15695 Add Peer STA
15696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015697 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15699 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015700
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 wdiAddSTAParam.ucHTCapable =
15705 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15706 wdiAddSTAParam.ucStaType =
15707 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15708
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15711 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015713
15714 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15715 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15716 WDI_MAC_ADDR_LEN);
15717
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015720 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015721 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015731
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15733 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015734
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15736 /*-------------------------------------------------------------------------
15737 Add Broadcast STA only in AP mode
15738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015740 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 {
15742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15743 "Add BCAST STA to table for index: %d",
15744 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015745
15746 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015748
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15750 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15751 }
15752 wpalMutexRelease(&pWDICtx->wptMutex);
15753 }
15754 else
15755 {
15756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15757 "Config BSS RSP failed with status : %s(%d)",
15758 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 halConfigBssRspMsg.configBssRspParams.status);
15761
Jeff Johnsone7245742012-09-05 17:12:55 -070015762
Jeff Johnson295189b2012-06-20 16:38:30 -070015763 /*Association was failed by HAL - remove session*/
15764 WDI_DeleteSession(pWDICtx, pBSSSes);
15765
15766 /*Association no longer in progress */
15767 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15768
15769 /*Association no longer in progress - prepare pending assoc for processing*/
15770 WDI_DequeueAssocRequest(pWDICtx);
15771
15772 }
15773
15774 /*Notify UMAC*/
15775 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15776
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015778}/*WDI_ProcessConfigBSSRsp*/
15779
15780
15781/**
15782 @brief Process Del BSS Response function (called when a response
15783 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015784
15785 @param pWDICtx: pointer to the WLAN DAL context
15786 pEventData: pointer to the event information structure
15787
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 @see
15789 @return Result of the function call
15790*/
15791WDI_Status
15792WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015793(
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 WDI_ControlBlockType* pWDICtx,
15795 WDI_EventInfoType* pEventData
15796)
15797{
15798 WDI_DelBSSRspParamsType wdiDelBSSParams;
15799 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 WDI_BSSSessionType* pBSSSes = NULL;
15802
Jeff Johnsone7245742012-09-05 17:12:55 -070015803 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15805
15806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 -------------------------------------------------------------------------*/
15809 if (( NULL == pEventData ) ||
15810 ( NULL == pEventData->pEventData))
15811 {
15812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 }
15817
15818 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15819
15820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15824 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 sizeof(halDelBssRspMsg.deleteBssRspParams));
15826
15827
15828 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015829 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015830
15831 wpalMutexAcquire(&pWDICtx->wptMutex);
15832
15833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15837 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15838 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015839
15840 /*-----------------------------------------------------------------------
15841 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 -----------------------------------------------------------------------*/
15844 if ( NULL == pBSSSes )
15845 {
15846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15847 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015848 "association no longer in progress - mysterious HAL response");
15849
15850 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15851
15852 wpalMutexRelease(&pWDICtx->wptMutex);
15853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015855
15856 /*Extract BSSID for the response to UMAC*/
15857 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15858 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15859
15860 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15861
15862 /*-----------------------------------------------------------------------
15863 The current session will be deleted
15864 -----------------------------------------------------------------------*/
15865 WDI_DeleteSession(pWDICtx, pBSSSes);
15866
15867
15868 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070015869 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
15870 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015872 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015873 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015874
15875 /* Delete the STA's in this BSS */
15876 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15877
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 wpalMutexRelease(&pWDICtx->wptMutex);
15879
15880 /*Notify UMAC*/
15881 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15882
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015884}/*WDI_ProcessDelBSSRsp*/
15885
15886/**
15887 @brief Process Post Assoc Rsp function (called when a response
15888 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015889
15890 @param pWDICtx: pointer to the WLAN DAL context
15891 pEventData: pointer to the event information structure
15892
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 @see
15894 @return Result of the function call
15895*/
15896WDI_Status
15897WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015898(
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 WDI_ControlBlockType* pWDICtx,
15900 WDI_EventInfoType* pEventData
15901)
15902{
15903 WDI_PostAssocRspParamsType wdiPostAssocParams;
15904 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15909
15910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 -------------------------------------------------------------------------*/
15913 if (( NULL == pEventData ) ||
15914 ( NULL == pEventData->pEventData))
15915 {
15916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 }
15921
15922 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15923
15924 /*-------------------------------------------------------------------------
15925 Extract response and send it to UMAC
15926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015927 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15928 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 sizeof(halPostAssocRspMsg.postAssocRspParams));
15930
15931 /*Extract the Post Assoc STA Params */
15932
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15939
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 wdiPostAssocParams.wdiStatus =
15941 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015942
15943 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15944 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15946 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 WDI_MAC_ADDR_LEN);
15948
15949 /* Extract Post Assoc BSS Params */
15950
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15952 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15953 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954
15955 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15956 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15959 .macSTA, WDI_MAC_ADDR_LEN);
15960
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15963
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15966
15967 wdiPostAssocParams.bssParams.ucBSSIdx =
15968 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15972
15973 wpalMutexAcquire(&pWDICtx->wptMutex);
15974
15975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015981
15982 /*-----------------------------------------------------------------------
15983 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 -----------------------------------------------------------------------*/
15986 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15989 {
15990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15991 "Association sequence for this BSS does not yet exist or "
15992 "association no longer in progress - mysterious HAL response");
15993
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15995
Jeff Johnson295189b2012-06-20 16:38:30 -070015996 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 }
15999
16000 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 -----------------------------------------------------------------------*/
16003 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16004 {
16005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16006 "Post Assoc not allowed before JOIN - failing request "
16007 "strange HAL response");
16008
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16010
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 }
16014
16015 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016016 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 -----------------------------------------------------------------------*/
16018 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16019 {
16020 /*Association was failed by HAL - remove session*/
16021 WDI_DeleteSession(pWDICtx, pBSSSes);
16022 }
16023 else
16024 {
16025 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016027
16028 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16037
Jeff Johnsone7245742012-09-05 17:12:55 -070016038 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016039 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16040 }
16041
16042 /*Association no longer in progress */
16043 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16044
16045 /*Association no longer in progress - prepare pending assoc for processing*/
16046 WDI_DequeueAssocRequest(pWDICtx);
16047
16048 wpalMutexRelease(&pWDICtx->wptMutex);
16049
16050 /*Notify UMAC*/
16051 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16052
Jeff Johnsone7245742012-09-05 17:12:55 -070016053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016054}/*WDI_ProcessPostAssocRsp*/
16055
16056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016057 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016059
16060 @param pWDICtx: pointer to the WLAN DAL context
16061 pEventData: pointer to the event information structure
16062
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 @see
16064 @return Result of the function call
16065*/
16066WDI_Status
16067WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016068(
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 WDI_ControlBlockType* pWDICtx,
16070 WDI_EventInfoType* pEventData
16071)
16072{
16073 WDI_DelSTARspParamsType wdiDelSTARsp;
16074 WDI_DelSTARspCb wdiDelSTARspCb;
16075 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16078
16079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 -------------------------------------------------------------------------*/
16082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16083 ( NULL == pEventData->pEventData))
16084 {
16085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 }
16090
16091 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16092
16093 /*-------------------------------------------------------------------------
16094 Extract response and send it to UMAC
16095 -------------------------------------------------------------------------*/
16096 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 sizeof(halDelStaRspMsg.delStaRspParams));
16099
16100 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 wdiDelSTARsp.wdiStatus =
16102 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016103
16104 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16105
16106 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16107 if(staType == WDI_STA_ENTRY_SELF)
16108 {
16109 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16110
16111 /* At this point add the self-STA */
16112
16113 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16114 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16115 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16116
16117#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16118#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16119
16120 //all DPU indices are the same for self STA
16121 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16122 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16123 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16124 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16125 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16126 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016127
16128 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 }
16130 else
16131 {
16132 //Delete the station in the table
16133 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16134 }
16135
16136 /*Notify UMAC*/
16137 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16138
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016140}/*WDI_ProcessDelSTARsp*/
16141
16142
16143/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016145==========================================================================*/
16146
16147/**
16148 @brief Process Set BSS Key Rsp function (called when a response
16149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016150
16151 @param pWDICtx: pointer to the WLAN DAL context
16152 pEventData: pointer to the event information structure
16153
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 @see
16155 @return Result of the function call
16156*/
16157WDI_Status
16158WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016159(
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 WDI_ControlBlockType* pWDICtx,
16161 WDI_EventInfoType* pEventData
16162)
16163{
16164 WDI_Status wdiStatus;
16165 eHalStatus halStatus;
16166 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16168
16169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 -------------------------------------------------------------------------*/
16172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16173 ( NULL == pEventData->pEventData))
16174 {
16175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 }
16180
16181 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16182
16183 /*-------------------------------------------------------------------------
16184 Extract response and send it to UMAC
16185 -------------------------------------------------------------------------*/
16186 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016188
16189 if ( eHAL_STATUS_SUCCESS != halStatus )
16190 {
16191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16192 "Set BSS Key failed with status %s (%d)",
16193 WDI_getHALStatusMsgString(halStatus),
16194 halStatus);
16195 /* send the status to UMAC, don't return from here*/
16196 }
16197
16198 /*Notify UMAC*/
16199 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16200
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016202}/*WDI_ProcessSetBssKeyRsp*/
16203
16204/**
16205 @brief Process Remove BSS Key Rsp function (called when a response
16206 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016207
16208 @param pWDICtx: pointer to the WLAN DAL context
16209 pEventData: pointer to the event information structure
16210
Jeff Johnson295189b2012-06-20 16:38:30 -070016211 @see
16212 @return Result of the function call
16213*/
16214WDI_Status
16215WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016216(
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 WDI_ControlBlockType* pWDICtx,
16218 WDI_EventInfoType* pEventData
16219)
16220{
16221 WDI_Status wdiStatus;
16222 eHalStatus halStatus;
16223 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16225
16226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 -------------------------------------------------------------------------*/
16229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16230 ( NULL == pEventData->pEventData))
16231 {
16232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 }
16237
16238 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16239
16240 /*-------------------------------------------------------------------------
16241 Extract response and send it to UMAC
16242 -------------------------------------------------------------------------*/
16243 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016245
16246 if ( eHAL_STATUS_SUCCESS != halStatus )
16247 {
16248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16249 "Remove BSS Key failed with status %s (%d )",
16250 WDI_getHALStatusMsgString(halStatus),
16251 halStatus);
16252 /* send the status to UMAC, don't return from here*/
16253 }
16254
16255 /*Notify UMAC*/
16256 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16257
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016259}/*WDI_ProcessSetBssKeyRsp*/
16260
16261
16262/**
16263 @brief Process Set STA Key Rsp function (called when a response
16264 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016265
16266 @param pWDICtx: pointer to the WLAN DAL context
16267 pEventData: pointer to the event information structure
16268
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 @see
16270 @return Result of the function call
16271*/
16272WDI_Status
16273WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016274(
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 WDI_ControlBlockType* pWDICtx,
16276 WDI_EventInfoType* pEventData
16277)
16278{
16279 WDI_Status wdiStatus;
16280 eHalStatus halStatus;
16281 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16283
16284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 -------------------------------------------------------------------------*/
16287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16288 ( NULL == pEventData->pEventData))
16289 {
16290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 }
16295
16296 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16297
16298 /*-------------------------------------------------------------------------
16299 Extract response and send it to UMAC
16300 -------------------------------------------------------------------------*/
16301 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016303
16304 if ( eHAL_STATUS_SUCCESS != halStatus )
16305 {
16306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16307 "Set STA Key failed with status %s (%d)",
16308 WDI_getHALStatusMsgString(halStatus),
16309 halStatus);
16310 /* send the status to UMAC, don't return from here*/
16311 }
16312
16313 /*Notify UMAC*/
16314 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16315
Jeff Johnsone7245742012-09-05 17:12:55 -070016316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016317}/*WDI_ProcessSetSTAKeyRsp*/
16318
16319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016322
16323 @param pWDICtx: pointer to the WLAN DAL context
16324 pEventData: pointer to the event information structure
16325
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 @see
16327 @return Result of the function call
16328*/
16329WDI_Status
16330WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016331(
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 WDI_ControlBlockType* pWDICtx,
16333 WDI_EventInfoType* pEventData
16334)
16335{
16336 WDI_Status wdiStatus;
16337 eHalStatus halStatus;
16338 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16340
16341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 -------------------------------------------------------------------------*/
16344 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16345 ( NULL == pEventData->pEventData))
16346 {
16347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 }
16352
16353 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16354
16355 /*-------------------------------------------------------------------------
16356 Extract response and send it to UMAC
16357 -------------------------------------------------------------------------*/
16358 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016359 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016360
16361 if ( eHAL_STATUS_SUCCESS != halStatus )
16362 {
16363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16364 "Remove STA Key failed with status %s (%d)",
16365 WDI_getHALStatusMsgString(halStatus),
16366 halStatus);
16367 /* send the status to UMAC, don't return from here*/
16368 }
16369
16370 /*Notify UMAC*/
16371 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16372
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016374}/*WDI_ProcessRemoveStaKeyRsp*/
16375
16376/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016377 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016379
16380 @param pWDICtx: pointer to the WLAN DAL context
16381 pEventData: pointer to the event information structure
16382
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 @see
16384 @return Result of the function call
16385*/
16386WDI_Status
16387WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016388(
Jeff Johnson295189b2012-06-20 16:38:30 -070016389 WDI_ControlBlockType* pWDICtx,
16390 WDI_EventInfoType* pEventData
16391)
16392{
16393 WDI_Status wdiStatus;
16394 eHalStatus halStatus;
16395 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16397
16398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 -------------------------------------------------------------------------*/
16401 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16402 ( NULL == pEventData->pEventData))
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 }
16409
16410 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16411
16412 /*-------------------------------------------------------------------------
16413 Extract response and send it to UMAC
16414 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 wpalMemoryCopy( &halStatus,
16416 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 sizeof(halStatus));
16418
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016420
16421 if ( eHAL_STATUS_SUCCESS != halStatus )
16422 {
16423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16424 "Set STA Key failed with status %s (%d)",
16425 WDI_getHALStatusMsgString(halStatus),
16426 halStatus);
16427 /* send the status to UMAC, don't return from here*/
16428 }
16429
16430 /*Notify UMAC*/
16431 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16432
Jeff Johnsone7245742012-09-05 17:12:55 -070016433 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016434}/*WDI_ProcessSetSTABcastKeyRsp*/
16435
16436/**
16437 @brief Process Remove STA Bcast Key Rsp function (called when a
16438 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016439
16440 @param pWDICtx: pointer to the WLAN DAL context
16441 pEventData: pointer to the event information structure
16442
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 @see
16444 @return Result of the function call
16445*/
16446WDI_Status
16447WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016448(
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 WDI_ControlBlockType* pWDICtx,
16450 WDI_EventInfoType* pEventData
16451)
16452{
16453 WDI_Status wdiStatus;
16454 eHalStatus halStatus;
16455 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16457
16458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 -------------------------------------------------------------------------*/
16461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16462 ( NULL == pEventData->pEventData))
16463 {
16464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 }
16469
16470 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16471
16472 /*-------------------------------------------------------------------------
16473 Extract response and send it to UMAC
16474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016475 wpalMemoryCopy( &halStatus,
16476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016477 sizeof(halStatus));
16478
Jeff Johnsone7245742012-09-05 17:12:55 -070016479 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016480
16481 if ( eHAL_STATUS_SUCCESS != halStatus )
16482 {
16483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16484 "Remove STA Key failed with status %s (%d)",
16485 WDI_getHALStatusMsgString(halStatus),
16486 halStatus);
16487 /* send the status to UMAC, don't return from here*/
16488 }
16489
16490 /*Notify UMAC*/
16491 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16492
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016494}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16495
16496
16497/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016498 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016499==========================================================================*/
16500
16501/**
16502 @brief Process Add TSpec Rsp function (called when a response
16503 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016504
16505 @param pWDICtx: pointer to the WLAN DAL context
16506 pEventData: pointer to the event information structure
16507
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 @see
16509 @return Result of the function call
16510*/
16511WDI_Status
16512WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016513(
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 WDI_ControlBlockType* pWDICtx,
16515 WDI_EventInfoType* pEventData
16516)
16517{
16518 WDI_Status wdiStatus;
16519 eHalStatus halStatus;
16520 WDI_AddTsRspCb wdiAddTsRspCb;
16521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16522
16523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 -------------------------------------------------------------------------*/
16526 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16527 ( NULL == pEventData->pEventData))
16528 {
16529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 }
16534
16535 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16536
16537 /*-------------------------------------------------------------------------
16538 Extract response and send it to UMAC
16539 -------------------------------------------------------------------------*/
16540 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016542
16543 /*Notify UMAC*/
16544 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16545
Jeff Johnsone7245742012-09-05 17:12:55 -070016546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016547}/*WDI_ProcessAddTSpecRsp*/
16548
16549
16550/**
16551 @brief Process Del TSpec Rsp function (called when a response
16552 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016553
16554 @param pWDICtx: pointer to the WLAN DAL context
16555 pEventData: pointer to the event information structure
16556
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 @see
16558 @return Result of the function call
16559*/
16560WDI_Status
16561WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016562(
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 WDI_ControlBlockType* pWDICtx,
16564 WDI_EventInfoType* pEventData
16565)
16566{
16567 WDI_Status wdiStatus;
16568 eHalStatus halStatus;
16569 WDI_DelTsRspCb wdiDelTsRspCb;
16570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16571
16572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 -------------------------------------------------------------------------*/
16575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16576 ( NULL == pEventData->pEventData))
16577 {
16578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 }
16583
16584 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16585
16586 /*-------------------------------------------------------------------------
16587 Extract response and send it to UMAC
16588 -------------------------------------------------------------------------*/
16589 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016591
16592 /*Notify UMAC*/
16593 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16594
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016596}/*WDI_ProcessDelTSpecRsp*/
16597
16598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016601
16602 @param pWDICtx: pointer to the WLAN DAL context
16603 pEventData: pointer to the event information structure
16604
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 @see
16606 @return Result of the function call
16607*/
16608WDI_Status
16609WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016610(
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 WDI_ControlBlockType* pWDICtx,
16612 WDI_EventInfoType* pEventData
16613)
16614{
16615 WDI_Status wdiStatus;
16616 eHalStatus halStatus;
16617 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16619
16620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 -------------------------------------------------------------------------*/
16623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16624 ( NULL == pEventData->pEventData))
16625 {
16626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 }
16631
16632 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16633
16634 /*-------------------------------------------------------------------------
16635 Extract response and send it to UMAC
16636 -------------------------------------------------------------------------*/
16637 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016639
16640 /*Notify UMAC*/
16641 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16642
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016644}/*WDI_ProcessUpdateEDCAParamsRsp*/
16645
16646
16647/**
16648 @brief Process Add BA Rsp function (called when a response
16649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016650
16651 @param pWDICtx: pointer to the WLAN DAL context
16652 pEventData: pointer to the event information structure
16653
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 @see
16655 @return Result of the function call
16656*/
16657WDI_Status
16658WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016659(
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 WDI_ControlBlockType* pWDICtx,
16661 WDI_EventInfoType* pEventData
16662)
16663{
16664 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16665
16666 tAddBASessionRspParams halBASessionRsp;
16667 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16668
Jeff Johnsone7245742012-09-05 17:12:55 -070016669
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16671
16672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016674 -------------------------------------------------------------------------*/
16675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16676 ( NULL == pEventData->pEventData))
16677 {
16678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016682 }
16683
16684 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16685
16686 /*-------------------------------------------------------------------------
16687 Extract response and send it to UMAC
16688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 wpalMemoryCopy( &halBASessionRsp,
16690 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 sizeof(halBASessionRsp));
16692
16693 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16694
Jeff Johnson43971f52012-07-17 12:26:56 -070016695 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 {
16697 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16698 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16699 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16700 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16701 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16702 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16703 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16704 }
16705
16706 /*Notify UMAC*/
16707 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16708
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016710}/*WDI_ProcessAddSessionBARsp*/
16711
16712
16713/**
16714 @brief Process Del BA Rsp function (called when a response
16715 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016716
16717 @param pWDICtx: pointer to the WLAN DAL context
16718 pEventData: pointer to the event information structure
16719
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 @see
16721 @return Result of the function call
16722*/
16723WDI_Status
16724WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016725(
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 WDI_ControlBlockType* pWDICtx,
16727 WDI_EventInfoType* pEventData
16728)
16729{
16730 WDI_Status wdiStatus;
16731 eHalStatus halStatus;
16732 WDI_DelBARspCb wdiDelBARspCb;
16733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16734
16735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 -------------------------------------------------------------------------*/
16738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16739 ( NULL == pEventData->pEventData))
16740 {
16741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 }
16746
16747 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16748
16749 /*-------------------------------------------------------------------------
16750 Extract response and send it to UMAC
16751 -------------------------------------------------------------------------*/
16752 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016754
16755 if ( eHAL_STATUS_SUCCESS == halStatus )
16756 {
16757 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16758 }
16759
16760 /*Notify UMAC*/
16761 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16762
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016764}/*WDI_ProcessDelBARsp*/
16765
16766#ifdef FEATURE_WLAN_CCX
16767/**
16768 @brief Process TSM Stats Rsp function (called when a response
16769 is being received over the bus from HAL)
16770
16771 @param pWDICtx: pointer to the WLAN DAL context
16772 pEventData: pointer to the event information structure
16773
16774 @see
16775 @return Result of the function call
16776*/
16777WDI_Status
16778WDI_ProcessTsmStatsRsp
16779(
16780 WDI_ControlBlockType* pWDICtx,
16781 WDI_EventInfoType* pEventData
16782)
16783{
16784 WDI_TsmRspCb wdiTsmStatsRspCb;
16785 tTsmStatsRspMsg halTsmStatsRspMsg;
16786 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16788
16789 /*-------------------------------------------------------------------------
16790 Sanity check
16791 -------------------------------------------------------------------------*/
16792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16793 ( NULL == pEventData->pEventData))
16794 {
16795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 WDI_ASSERT(0);
16798 return WDI_STATUS_E_FAILURE;
16799 }
16800
16801 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16802
16803 /*-------------------------------------------------------------------------
16804 Unpack HAL Response Message - the header was already extracted by the
16805 main Response Handling procedure
16806 -------------------------------------------------------------------------*/
16807 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16808 pEventData->pEventData,
16809 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16810
16811 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16812 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16813 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16814 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16815 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16816 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16817 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16818 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16819 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16820 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16821 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16822 halTsmStatsRspMsg.tsmStatsRspParams.status);
16823
16824 /*Notify UMAC*/
16825 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16826
16827 return WDI_STATUS_SUCCESS;
16828}/*WDI_ProcessTsmStatsRsp*/
16829
16830#endif
16831
16832
16833
16834/**
16835 @brief Process Flush AC Rsp function (called when a response
16836 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016837
16838 @param pWDICtx: pointer to the WLAN DAL context
16839 pEventData: pointer to the event information structure
16840
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 @see
16842 @return Result of the function call
16843*/
16844WDI_Status
16845WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016846(
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 WDI_ControlBlockType* pWDICtx,
16848 WDI_EventInfoType* pEventData
16849)
16850{
16851 WDI_Status wdiStatus;
16852 eHalStatus halStatus;
16853 WDI_FlushAcRspCb wdiFlushAcRspCb;
16854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16855
16856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 -------------------------------------------------------------------------*/
16859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16860 ( NULL == pEventData->pEventData))
16861 {
16862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 }
16867
16868 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16869
16870 /*-------------------------------------------------------------------------
16871 Extract response and send it to UMAC
16872 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 wpalMemoryCopy( &halStatus,
16874 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 sizeof(halStatus));
16876
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016878
16879 /*Notify UMAC*/
16880 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16881
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016883}/*WDI_ProcessFlushAcRsp*/
16884
16885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016888
16889 @param pWDICtx: pointer to the WLAN DAL context
16890 pEventData: pointer to the event information structure
16891
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 @see
16893 @return Result of the function call
16894*/
16895WDI_Status
16896WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016897(
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 WDI_ControlBlockType* pWDICtx,
16899 WDI_EventInfoType* pEventData
16900)
16901{
16902 WDI_Status wdiStatus;
16903 eHalStatus halStatus;
16904 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16906
16907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 -------------------------------------------------------------------------*/
16910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16911 ( NULL == pEventData->pEventData))
16912 {
16913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 }
16918
16919 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16920
16921 /*-------------------------------------------------------------------------
16922 Extract response and send it to UMAC
16923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 wpalMemoryCopy( &halStatus,
16925 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 sizeof(halStatus));
16927
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016929
16930 /*Notify UMAC*/
16931 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16932
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016934}/*WDI_ProcessBtAmpEventRsp*/
16935
16936
16937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016940
16941 @param pWDICtx: pointer to the WLAN DAL context
16942 pEventData: pointer to the event information structure
16943
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 @see
16945 @return Result of the function call
16946*/
16947WDI_Status
16948WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016949(
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 WDI_ControlBlockType* pWDICtx,
16951 WDI_EventInfoType* pEventData
16952)
16953{
16954 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16955 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16956 tAddStaSelfRspMsg halAddStaSelfRsp;
16957 WDI_AddStaParams wdiAddSTAParam = {0};
16958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16959
16960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 -------------------------------------------------------------------------*/
16963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16964 ( NULL == pEventData->pEventData))
16965 {
16966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 }
16971
Jeff Johnsone7245742012-09-05 17:12:55 -070016972 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016973 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16974
16975 /*-------------------------------------------------------------------------
16976 Extract response and send it to UMAC
16977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16979 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16981
16982
Jeff Johnsone7245742012-09-05 17:12:55 -070016983 wdiAddSTASelfParams.wdiStatus =
16984 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016985
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016989 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16992
16993 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16994 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16995 WDI_MAC_ADDR_LEN);
16996
16997
16998#ifdef HAL_SELF_STA_PER_BSS
16999
17000 /* At this point add the self-STA */
17001
17002 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17003 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17004 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17005
17006 //all DPU indices are the same for self STA
17007
17008 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017009 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17011 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17012 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17013 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17014 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17015
17016 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17017 WDI_MAC_ADDR_LEN);
17018
17019 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17020 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17021
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17024 {
17025 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17026 }
17027#endif
17028
17029 /*Notify UMAC*/
17030 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17031
Jeff Johnsone7245742012-09-05 17:12:55 -070017032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017033}/*WDI_ProcessAddSTASelfRsp*/
17034
17035
17036
17037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017040
17041 @param pWDICtx: pointer to the WLAN DAL context
17042 pEventData: pointer to the event information structure
17043
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 @see
17045 @return Result of the function call
17046*/
17047WDI_Status
17048WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017049(
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 WDI_ControlBlockType* pWDICtx,
17051 WDI_EventInfoType* pEventData
17052)
17053{
17054 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17055 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17056 tDelStaSelfRspParams delStaSelfRspParams;
17057 wpt_uint8 ucStaIdx;
17058
17059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17060
17061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 -------------------------------------------------------------------------*/
17064 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17065 ( NULL == pEventData->pEventData))
17066 {
17067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 }
17072
17073 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17074
17075 /*-------------------------------------------------------------------------
17076 Extract response and send it to UMAC
17077 -------------------------------------------------------------------------*/
17078
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 (wpt_uint8*)pEventData->pEventData,
17081 sizeof(tDelStaSelfRspParams));
17082
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 wdiDelStaSelfRspParams.wdiStatus =
17084 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017085
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17088 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17089 {
17090 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 delStaSelfRspParams.selfMacAddr,
17093 &ucStaIdx);
17094 if(WDI_STATUS_E_FAILURE == wdiStatus)
17095 {
17096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017097 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 }
17101 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17102 }
17103
17104 /*Notify UMAC*/
17105 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17106
17107 return WDI_STATUS_SUCCESS;
17108}
17109
Jeff Johnsone7245742012-09-05 17:12:55 -070017110#ifdef FEATURE_OEM_DATA_SUPPORT
17111/**
17112 @brief Start Oem Data Rsp function (called when a
17113 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017114
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 @param pWDICtx: pointer to the WLAN DAL context
17116 pEventData: pointer to the event information structure
17117
17118 @see
17119 @return Result of the function call
17120*/
17121#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17122
17123WDI_Status
17124WDI_ProcessStartOemDataRsp
17125(
17126 WDI_ControlBlockType* pWDICtx,
17127 WDI_EventInfoType* pEventData
17128)
17129{
17130 WDI_oemDataRspCb wdiOemDataRspCb;
17131 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17132 tStartOemDataRspParams* halStartOemDataRspParams;
17133
17134 /*-------------------------------------------------------------------------
17135 Sanity check
17136 -------------------------------------------------------------------------*/
17137 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17138 ( NULL == pEventData->pEventData))
17139 {
17140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017141 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 WDI_ASSERT(0);
17143 return WDI_STATUS_E_FAILURE;
17144 }
17145
17146 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17147
17148 /*-------------------------------------------------------------------------
17149 Extract response and send it to UMAC
17150 -------------------------------------------------------------------------*/
17151 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17152
17153
17154 //It is the responsibility of the application code to check for failure
17155 //conditions!
17156
17157 //Allocate memory for WDI OEM DATA RSP structure
17158 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17159
17160 if(NULL == wdiOemDataRspParams)
17161 {
17162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17163 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17164 pWDICtx, pEventData, pEventData->pEventData);
17165 WDI_ASSERT(0);
17166 return WDI_STATUS_E_FAILURE;
17167 }
17168
17169 /* Populate WDI structure members */
17170 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17171
17172 /*Notify UMAC*/
17173 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17174
17175 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17176 wpalMemoryFree(wdiOemDataRspParams);
17177
17178 return WDI_STATUS_SUCCESS;
17179}/*WDI_PrcoessStartOemDataRsp*/
17180#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017181
17182/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017184===========================================================================*/
17185
17186/**
17187 @brief Process Channel Switch Rsp function (called when a response
17188 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017189
17190 @param pWDICtx: pointer to the WLAN DAL context
17191 pEventData: pointer to the event information structure
17192
Jeff Johnson295189b2012-06-20 16:38:30 -070017193 @see
17194 @return Result of the function call
17195*/
17196WDI_Status
17197WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017198(
Jeff Johnson295189b2012-06-20 16:38:30 -070017199 WDI_ControlBlockType* pWDICtx,
17200 WDI_EventInfoType* pEventData
17201)
17202{
17203 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17204 WDI_SwitchChRspCb wdiChSwitchRspCb;
17205 tSwitchChannelRspParams halSwitchChannelRsp;
17206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17207
17208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 -------------------------------------------------------------------------*/
17211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17212 ( NULL == pEventData->pEventData))
17213 {
17214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 }
17219
17220 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17221
17222 /*-------------------------------------------------------------------------
17223 Extract response and send it to UMAC
17224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 (wpt_uint8*)pEventData->pEventData,
17227 sizeof(halSwitchChannelRsp));
17228
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 wdiSwitchChRsp.wdiStatus =
17230 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17232
17233#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017234 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017235#endif
17236
17237 /*Notify UMAC*/
17238 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17239
Jeff Johnsone7245742012-09-05 17:12:55 -070017240 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017241}/*WDI_ProcessChannelSwitchRsp*/
17242
17243
17244/**
17245 @brief Process Config STA Rsp function (called when a response
17246 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017247
17248 @param pWDICtx: pointer to the WLAN DAL context
17249 pEventData: pointer to the event information structure
17250
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 @see
17252 @return Result of the function call
17253*/
17254WDI_Status
17255WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017256(
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 WDI_ControlBlockType* pWDICtx,
17258 WDI_EventInfoType* pEventData
17259)
17260{
17261 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17262 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17263 WDI_AddStaParams wdiAddSTAParam;
17264
17265 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017267
Jeff Johnsone7245742012-09-05 17:12:55 -070017268 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17270
17271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017272 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017273 -------------------------------------------------------------------------*/
17274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17275 ( NULL == pEventData->pEventData))
17276 {
17277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 }
17282
17283 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17284
17285 /*-------------------------------------------------------------------------
17286 Extract response and send it to UMAC
17287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17289 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017290 sizeof(halConfigStaRsp.configStaRspParams));
17291
17292
17293 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17294 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17295 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17296 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17297 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17298
17299 /* MAC Address of STA - take from cache as it does not come back in the
17300 response*/
17301 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017303 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017304
17305 wdiCfgSTAParams.wdiStatus =
17306 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017307
17308 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17309 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17310 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17311
17312 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17313 {
17314 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17315 {
17316 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017317 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17319 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017320
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017322 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017324 wdiAddSTAParam.ucHTCapable =
17325 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17326 wdiAddSTAParam.ucStaType =
17327 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017328 wdiAddSTAParam.ucRmfEnabled =
17329 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017330
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17333 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017335
17336 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17337 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17338 WDI_MAC_ADDR_LEN);
17339
17340 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17341 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17342 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017343
17344 if ( NULL == pBSSSes )
17345 {
17346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17347 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017348
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 }
17352
17353 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017360 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017363
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17365 }
17366 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17367 {
17368 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17369
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 halConfigStaRsp.configStaRspParams.ucUcastSig;
17384 }
17385 }
17386
17387 /*Notify UMAC*/
17388 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17389
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017391}/*WDI_ProcessConfigStaRsp*/
17392
17393
17394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017397
17398 @param pWDICtx: pointer to the WLAN DAL context
17399 pEventData: pointer to the event information structure
17400
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 @see
17402 @return Result of the function call
17403*/
17404WDI_Status
17405WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017406(
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 WDI_ControlBlockType* pWDICtx,
17408 WDI_EventInfoType* pEventData
17409)
17410{
17411 WDI_Status wdiStatus;
17412 eHalStatus halStatus;
17413 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17414
17415 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017416 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17418
17419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 -------------------------------------------------------------------------*/
17422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17423 ( NULL == pEventData->pEventData))
17424 {
17425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 }
17430
17431 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17432
17433 wpalMutexAcquire(&pWDICtx->wptMutex);
17434
17435 /*If the link is being transitioned to idle - the BSS is to be deleted
17436 - this type of ending a session is possible when UMAC has failed an
17437 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017438 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017439 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17440 {
17441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017444 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17445 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17446 &pBSSSes);
17447
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 /*-----------------------------------------------------------------------
17449 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017450 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017451 -----------------------------------------------------------------------*/
17452 if ( NULL == pBSSSes )
17453 {
17454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17455 "Set link response received outside association session");
17456 }
17457 else
17458 {
17459 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17460 will be del BSS coming after this to stop the beaconing & cleaning up the
17461 sessions*/
17462 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17463 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17464 {
17465 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 -----------------------------------------------------------------------*/
17468 WDI_DeleteSession(pWDICtx, pBSSSes);
17469
17470 /*-----------------------------------------------------------------------
17471 Check to see if this association is in progress - if so disable the
17472 flag as this has ended
17473 -----------------------------------------------------------------------*/
17474 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 /*Association no longer in progress */
17477 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17478 /*Association no longer in progress - prepare pending assoc for processing*/
17479 WDI_DequeueAssocRequest(pWDICtx);
17480 }
17481 }
17482 }
17483 }
17484 /* If the link state has been set to POST ASSOC, reset the "association in
17485 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17488 {
17489 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17490 WDI_DequeueAssocRequest(pWDICtx);
17491 }
17492
17493 wpalMutexRelease(&pWDICtx->wptMutex);
17494
17495 /*-------------------------------------------------------------------------
17496 Extract response and send it to UMAC
17497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 wpalMemoryCopy( &halStatus,
17499 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 sizeof(halStatus));
17501
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017503
17504 /*Notify UMAC*/
17505 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17506
Jeff Johnsone7245742012-09-05 17:12:55 -070017507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017508}/*WDI_ProcessSetLinkStateRsp*/
17509
17510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017511 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017513
17514 @param pWDICtx: pointer to the WLAN DAL context
17515 pEventData: pointer to the event information structure
17516
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 @see
17518 @return Result of the function call
17519*/
17520WDI_Status
17521WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017522(
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 WDI_ControlBlockType* pWDICtx,
17524 WDI_EventInfoType* pEventData
17525)
17526{
17527 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17528 WDI_GetStatsRspCb wdiGetStatsRspCb;
17529 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017530
Jeff Johnson295189b2012-06-20 16:38:30 -070017531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17532
17533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 -------------------------------------------------------------------------*/
17536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17537 ( NULL == pEventData->pEventData))
17538 {
17539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 }
17544
17545 /*-------------------------------------------------------------------------
17546 Extract response and send it to UMAC
17547 -------------------------------------------------------------------------*/
17548 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17549
17550 /*allocate the stats response buffer */
17551 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17552 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17553 + sizeof(WDI_GetStatsRspParamsType));
17554
17555 if(NULL == wdiGetStatsRsp)
17556 {
17557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17558 "Failed to allocate memory in Get Stats Response %x %x %x ",
17559 pWDICtx, pEventData, pEventData->pEventData);
17560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 }
17563
17564 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17565
17566 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17567 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17568 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17569 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17570 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17571 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17572
17573 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17574 wpalMemoryCopy(wdiGetStatsRsp + 1,
17575 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17576 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17577
17578 /*Notify UMAC*/
17579 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17580
17581 wpalMemoryFree(wdiGetStatsRsp);
17582
Jeff Johnsone7245742012-09-05 17:12:55 -070017583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017584}/*WDI_ProcessGetStatsRsp*/
17585
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017586#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17587/**
17588 @brief Process Get Roam Rssi Rsp function (called when a response is
17589 being received over the bus from HAL)
17590
17591 @param pWDICtx: pointer to the WLAN DAL context
17592 pEventData: pointer to the event information structure
17593
17594 @see
17595 @return Result of the function call
17596*/
17597WDI_Status
17598WDI_ProcessGetRoamRssiRsp
17599(
17600 WDI_ControlBlockType* pWDICtx,
17601 WDI_EventInfoType* pEventData
17602)
17603{
17604 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17605 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17606 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17608
17609 /*-------------------------------------------------------------------------
17610 Sanity check
17611 -------------------------------------------------------------------------*/
17612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17613 ( NULL == pEventData->pEventData))
17614 {
17615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17616 "%s: Invalid parameters", __func__);
17617 WDI_ASSERT(0);
17618 return WDI_STATUS_E_FAILURE;
17619 }
17620
17621 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17622 if(NULL == wdiGetRoamRssiRspCb)
17623 {
17624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17625 "%s: call back function is NULL", __func__);
17626 WDI_ASSERT(0);
17627 return WDI_STATUS_E_FAILURE;
17628 }
17629
17630 /*-------------------------------------------------------------------------
17631 Extract response and send it to UMAC
17632 -------------------------------------------------------------------------*/
17633 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17634 pEventData->pEventData,
17635 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17636
17637 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17638 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17639 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17640
17641 /*Notify UMAC*/
17642 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17643
17644 return WDI_STATUS_SUCCESS;
17645}/*WDI_ProcessGetRoamRssiRsp*/
17646#endif
17647
Jeff Johnson295189b2012-06-20 16:38:30 -070017648
17649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017652
17653 @param pWDICtx: pointer to the WLAN DAL context
17654 pEventData: pointer to the event information structure
17655
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 @see
17657 @return Result of the function call
17658*/
17659WDI_Status
17660WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017661(
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 WDI_ControlBlockType* pWDICtx,
17663 WDI_EventInfoType* pEventData
17664)
17665{
17666 WDI_Status wdiStatus;
17667 eHalStatus halStatus;
17668 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17670
17671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 -------------------------------------------------------------------------*/
17674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17675 ( NULL == pEventData->pEventData))
17676 {
17677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 }
17682
17683 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17684
17685 /*-------------------------------------------------------------------------
17686 Extract response and send it to UMAC
17687 -------------------------------------------------------------------------*/
17688 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017690
17691 /*Notify UMAC*/
17692 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17693
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017695}/*WDI_ProcessUpdateCfgRsp*/
17696
17697
17698
17699/**
17700 @brief Process Add BA Rsp function (called when a response
17701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017702
17703 @param pWDICtx: pointer to the WLAN DAL context
17704 pEventData: pointer to the event information structure
17705
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 @see
17707 @return Result of the function call
17708*/
17709WDI_Status
17710WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017711(
Jeff Johnson295189b2012-06-20 16:38:30 -070017712 WDI_ControlBlockType* pWDICtx,
17713 WDI_EventInfoType* pEventData
17714)
17715{
17716 WDI_AddBARspCb wdiAddBARspCb;
17717
17718 tAddBARspParams halAddBARsp;
17719 WDI_AddBARspinfoType wdiAddBARsp;
17720
17721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17722
17723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 -------------------------------------------------------------------------*/
17726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17727 ( NULL == pEventData->pEventData))
17728 {
17729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017733 }
17734
17735 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17736
17737 /*-------------------------------------------------------------------------
17738 Extract response and send it to UMAC
17739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017740 wpalMemoryCopy( &halAddBARsp,
17741 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017742 sizeof(halAddBARsp));
17743
17744 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17745
Jeff Johnson43971f52012-07-17 12:26:56 -070017746 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 {
17748 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17749 }
17750
17751 /*Notify UMAC*/
17752 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17753
Jeff Johnsone7245742012-09-05 17:12:55 -070017754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017755}/*WDI_ProcessAddSessionBARsp*/
17756
17757/**
17758 @brief Process Add BA Rsp function (called when a response
17759 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017760
17761 @param pWDICtx: pointer to the WLAN DAL context
17762 pEventData: pointer to the event information structure
17763
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 @see
17765 @return Result of the function call
17766*/
17767WDI_Status
17768WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017769(
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 WDI_ControlBlockType* pWDICtx,
17771 WDI_EventInfoType* pEventData
17772)
17773{
17774 WDI_TriggerBARspCb wdiTriggerBARspCb;
17775
17776 tTriggerBARspParams* halTriggerBARsp;
17777 tTriggerBaRspCandidate* halBaCandidate;
17778 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17779 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17780 wpt_uint16 index;
17781 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017782 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17784
17785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 -------------------------------------------------------------------------*/
17788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17789 ( NULL == pEventData->pEventData))
17790 {
17791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 }
17796
17797 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17798
17799 /*-------------------------------------------------------------------------
17800 Extract response and send it to UMAC
17801 -------------------------------------------------------------------------*/
17802 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17803
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017804 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17805
17806 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17807 {
17808 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017809 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017811
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017812 if(NULL == wdiTriggerBARsp)
17813 {
17814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17815 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17816 pWDICtx, pEventData, pEventData->pEventData);
17817 WDI_ASSERT(0);
17818 return WDI_STATUS_E_FAILURE;
17819 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017820
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017821 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17822
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017824 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17826
17827 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17828 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17829
17830 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17831 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17834 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17835 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017836 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017838 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17840 }
17841 wdiTriggerBARspCandidate++;
17842 halBaCandidate++;
17843 }
17844 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017845 else
17846 {
17847 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17848
17849 if(NULL == wdiTriggerBARsp)
17850 {
17851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17852 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17853 pWDICtx, pEventData, pEventData->pEventData);
17854 WDI_ASSERT(0);
17855 return WDI_STATUS_E_FAILURE;
17856 }
17857
17858 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17859
17860 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017861
17862 /*Notify UMAC*/
17863 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17864
17865 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017866 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017867}/*WDI_ProcessAddSessionBARsp*/
17868
17869/**
17870 @brief Process Update Beacon Params Rsp function (called when a response
17871 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017872
17873 @param pWDICtx: pointer to the WLAN DAL context
17874 pEventData: pointer to the event information structure
17875
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 @see
17877 @return Result of the function call
17878*/
17879WDI_Status
17880WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017881(
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 WDI_ControlBlockType* pWDICtx,
17883 WDI_EventInfoType* pEventData
17884)
17885{
17886 WDI_Status wdiStatus;
17887 eHalStatus halStatus;
17888 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17890
17891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 -------------------------------------------------------------------------*/
17894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17895 ( NULL == pEventData->pEventData))
17896 {
17897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 }
17902
17903 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17904
17905 /*-------------------------------------------------------------------------
17906 Extract response and send it to UMAC
17907 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017908 wpalMemoryCopy( &halStatus,
17909 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 sizeof(halStatus));
17911
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017913
17914 /*Notify UMAC*/
17915 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17916
Jeff Johnsone7245742012-09-05 17:12:55 -070017917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017918}/*WDI_ProcessUpdateBeaconParamsRsp*/
17919
17920/**
17921 @brief Process Send Beacon template Rsp function (called when a response
17922 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017923
17924 @param pWDICtx: pointer to the WLAN DAL context
17925 pEventData: pointer to the event information structure
17926
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 @see
17928 @return Result of the function call
17929*/
17930WDI_Status
17931WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017932(
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 WDI_ControlBlockType* pWDICtx,
17934 WDI_EventInfoType* pEventData
17935)
17936{
17937 WDI_Status wdiStatus;
17938 eHalStatus halStatus;
17939 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17941
17942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017944 -------------------------------------------------------------------------*/
17945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17946 ( NULL == pEventData->pEventData))
17947 {
17948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 }
17953
17954 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17955
17956 /*-------------------------------------------------------------------------
17957 Extract response and send it to UMAC
17958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017959 wpalMemoryCopy( &halStatus,
17960 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 sizeof(halStatus));
17962
Jeff Johnsone7245742012-09-05 17:12:55 -070017963 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017964
17965 /*Notify UMAC*/
17966 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17967
Jeff Johnsone7245742012-09-05 17:12:55 -070017968 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017969}/*WDI_ProcessSendBeaconParamsRsp*/
17970
Jeff Johnsone7245742012-09-05 17:12:55 -070017971
Jeff Johnson295189b2012-06-20 16:38:30 -070017972/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017973 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017975
17976 @param pWDICtx: pointer to the WLAN DAL context
17977 pEventData: pointer to the event information structure
17978
Jeff Johnson295189b2012-06-20 16:38:30 -070017979 @see
17980 @return Result of the function call
17981*/
17982WDI_Status
17983WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017984(
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 WDI_ControlBlockType* pWDICtx,
17986 WDI_EventInfoType* pEventData
17987)
17988{
17989 WDI_Status wdiStatus;
17990 eHalStatus halStatus;
17991 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17993
17994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 -------------------------------------------------------------------------*/
17997 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17998 ( NULL == pEventData->pEventData))
17999 {
18000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 }
18005
18006 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18007
18008 /*-------------------------------------------------------------------------
18009 Extract response and send it to UMAC
18010 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 wpalMemoryCopy( &halStatus,
18012 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 sizeof(halStatus));
18014
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018016
18017 /*Notify UMAC*/
18018 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18019
Jeff Johnsone7245742012-09-05 17:12:55 -070018020 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018021}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18022
18023 /**
18024 @brief Process Set Max Tx Power Rsp function (called when a response
18025 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018026
18027 @param pWDICtx: pointer to the WLAN DAL context
18028 pEventData: pointer to the event information structure
18029
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 @see
18031 @return Result of the function call
18032*/
18033WDI_Status
18034WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018035(
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 WDI_ControlBlockType* pWDICtx,
18037 WDI_EventInfoType* pEventData
18038)
18039{
18040 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018041
Jeff Johnson295189b2012-06-20 16:38:30 -070018042 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018043
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18046
18047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 -------------------------------------------------------------------------*/
18050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18051 ( NULL == pEventData->pEventData))
18052 {
18053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 }
18058
18059 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18060
18061 /*-------------------------------------------------------------------------
18062 Extract response and send it to UMAC
18063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018064 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18065 pEventData->pEventData,
18066 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018067
18068 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18069 {
18070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18071 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 }
18074
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018077 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018078
18079 /*Notify UMAC*/
18080 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18081
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018083}
18084
schangd82195a2013-03-13 18:41:24 -070018085 /**
18086 @brief Process Set Tx Power Rsp function (called when a response
18087 is being received over the bus from HAL)
18088
18089 @param pWDICtx: pointer to the WLAN DAL context
18090 pEventData: pointer to the event information structure
18091
18092 @see
18093 @return Result of the function call
18094*/
18095WDI_Status
18096WDI_ProcessSetTxPowerRsp
18097(
18098 WDI_ControlBlockType* pWDICtx,
18099 WDI_EventInfoType* pEventData
18100)
18101{
18102 tSetTxPwrRspMsg halTxpowerrsp;
18103 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18104 WDA_SetTxPowerRspCb wdiReqStatusCb;
18105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18106
18107 /*-------------------------------------------------------------------------
18108 Sanity check
18109 -------------------------------------------------------------------------*/
18110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18111 ( NULL == pEventData->pEventData))
18112 {
18113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18114 "%s: Invalid parameters", __func__);
18115 WDI_ASSERT(0);
18116 return WDI_STATUS_E_FAILURE;
18117 }
18118
18119 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18120
18121 /*-------------------------------------------------------------------------
18122 Extract response and send it to UMAC
18123 -------------------------------------------------------------------------*/
18124 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18125 pEventData->pEventData,
18126 sizeof(halTxpowerrsp.setTxPwrRspParams));
18127
18128 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18129 {
18130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18131 "Error status returned in Set Tx Power Response ");
18132 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18133 return WDI_STATUS_E_FAILURE;
18134 }
18135
18136 wdiSetTxPowerRspMsg.wdiStatus =
18137 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18138
18139 /*Notify UMAC*/
18140 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18141
18142 return WDI_STATUS_SUCCESS;
18143}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018144#ifdef FEATURE_WLAN_TDLS
18145/**
18146 @brief Process TDLS Link Establish Rsp function (called
18147 when a response is being received over the bus from HAL)
18148
18149 @param pWDICtx: pointer to the WLAN DAL context
18150 pEventData: pointer to the event information structure
18151
18152 @see
18153 @return Result of the function call
18154*/
18155WDI_Status
18156WDI_ProcessLinkEstablishReqRsp
18157(
18158 WDI_ControlBlockType* pWDICtx,
18159 WDI_EventInfoType* pEventData
18160)
18161{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018162 eHalStatus halStatus;
18163 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018164 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18165 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18166
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18168
18169 /*-------------------------------------------------------------------------
18170 Sanity check
18171 -------------------------------------------------------------------------*/
18172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18173 ( NULL == pEventData->pEventData))
18174 {
18175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18176 "%s: Invalid parameters", __func__);
18177 WDI_ASSERT(0);
18178 return WDI_STATUS_E_FAILURE;
18179 }
18180
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018181 /*-------------------------------------------------------------------------
18182 Extract indication and send it to UMAC
18183 -------------------------------------------------------------------------*/
18184 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18185 pEventData->pEventData,
18186 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18187
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018188 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18189
18190 /*-------------------------------------------------------------------------
18191 Extract response and send it to UMAC
18192 -------------------------------------------------------------------------*/
18193 wpalMemoryCopy( &halStatus,
18194 pEventData->pEventData,
18195 sizeof(halStatus));
18196
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018197 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18198 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018199
18200 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018201 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018202
18203 return WDI_STATUS_SUCCESS;
18204}/*WDI_ProcessLinkEstablishReqRsp*/
18205#endif
schangd82195a2013-03-13 18:41:24 -070018206
Jeff Johnson295189b2012-06-20 16:38:30 -070018207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018210
18211 @param pWDICtx: pointer to the WLAN DAL context
18212 pEventData: pointer to the event information structure
18213
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 @see
18215 @return Result of the function call
18216*/
18217WDI_Status
18218WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018219(
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 WDI_ControlBlockType* pWDICtx,
18221 WDI_EventInfoType* pEventData
18222)
18223{
18224 WDI_Status wdiStatus;
18225 eHalStatus halStatus;
18226 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18228
18229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018231 -------------------------------------------------------------------------*/
18232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18233 ( NULL == pEventData->pEventData))
18234 {
18235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018236 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018239 }
18240
18241 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18242
18243 /*-------------------------------------------------------------------------
18244 Extract response and send it to UMAC
18245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018246 wpalMemoryCopy( &halStatus,
18247 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 sizeof(halStatus));
18249
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018251
18252 /*Notify UMAC*/
18253 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18254
Jeff Johnsone7245742012-09-05 17:12:55 -070018255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018256}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018260
18261 @param pWDICtx: pointer to the WLAN DAL context
18262 pEventData: pointer to the event information structure
18263
Jeff Johnson295189b2012-06-20 16:38:30 -070018264 @see
18265 @return Result of the function call
18266*/
18267WDI_Status
18268WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018269(
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 WDI_ControlBlockType* pWDICtx,
18271 WDI_EventInfoType* pEventData
18272)
18273{
18274 WDI_Status wdiStatus;
18275 eHalStatus halStatus;
18276 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018277 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18279
18280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 -------------------------------------------------------------------------*/
18283 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18284 ( NULL == pEventData->pEventData))
18285 {
18286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 }
18291
18292 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18293
18294 /*-------------------------------------------------------------------------
18295 Extract response and send it to UMAC
18296 -------------------------------------------------------------------------*/
18297 halStatus = *((eHalStatus*)pEventData->pEventData);
18298
Jeff Johnsone7245742012-09-05 17:12:55 -070018299 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018300
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018301 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18302 * Other module states are taken care by PMC.
18303 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18304 */
18305 if (wdiStatus != WDI_STATUS_SUCCESS) {
18306
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18308 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18309 halStatus);
18310 /* Call Back is not required as we are putting the DXE in FULL
18311 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018312 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18313
18314 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18316 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18317 WDI_ASSERT(0);
18318 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018319 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 /*Notify UMAC*/
18321 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18322
Jeff Johnsone7245742012-09-05 17:12:55 -070018323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018324}/*WDI_ProcessEnterImpsRsp*/
18325
18326/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018329
18330 @param pWDICtx: pointer to the WLAN DAL context
18331 pEventData: pointer to the event information structure
18332
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 @see
18334 @return Result of the function call
18335*/
18336WDI_Status
18337WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018338(
Jeff Johnson295189b2012-06-20 16:38:30 -070018339 WDI_ControlBlockType* pWDICtx,
18340 WDI_EventInfoType* pEventData
18341)
18342{
18343 WDI_Status wdiStatus;
18344 eHalStatus halStatus;
18345 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018346 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18348
18349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 -------------------------------------------------------------------------*/
18352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18353 ( NULL == pEventData->pEventData))
18354 {
18355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 }
18360
18361 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18362
18363 /*-------------------------------------------------------------------------
18364 Extract response and send it to UMAC
18365 -------------------------------------------------------------------------*/
18366 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018367 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018368
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018369 if (halStatus != eHAL_STATUS_SUCCESS)
18370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18371 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18372
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018374 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18375 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18376 {
18377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18378 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18379 WDI_ASSERT(0);
18380 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018381 /*Notify UMAC*/
18382 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18383
Jeff Johnsone7245742012-09-05 17:12:55 -070018384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018385}/*WDI_ProcessExitImpsRsp*/
18386
18387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018390
18391 @param pWDICtx: pointer to the WLAN DAL context
18392 pEventData: pointer to the event information structure
18393
Jeff Johnson295189b2012-06-20 16:38:30 -070018394 @see
18395 @return Result of the function call
18396*/
18397WDI_Status
18398WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018399(
Jeff Johnson295189b2012-06-20 16:38:30 -070018400 WDI_ControlBlockType* pWDICtx,
18401 WDI_EventInfoType* pEventData
18402)
18403{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018404 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18405 tHalEnterBmpsRspParams halEnterBmpsRsp;
18406 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18407 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018408 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18410
18411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 -------------------------------------------------------------------------*/
18414 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18415 ( NULL == pEventData->pEventData))
18416 {
18417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 }
18422
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018424 Extract response and send it to UMAC
18425 -------------------------------------------------------------------------*/
18426 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18427 {
18428 wpalMemoryCopy( &halEnterBmpsRsp,
18429 pEventData->pEventData,
18430 sizeof(halEnterBmpsRsp));
18431
18432 //Used to print debug message
18433 halStatus = halEnterBmpsRsp.status;
18434 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18435 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18436 }
18437 else
18438 {
18439 halStatus = *((eHalStatus*)pEventData->pEventData);
18440 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18441 }
18442
18443 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018444
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018445 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18446 * Other module states are taken care by PMC.
18447 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18448 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018449 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18450 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018451
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018453 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18454 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018455 /* Call Back is not required as we are putting the DXE in FULL
18456 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018457 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18458 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18459 {
18460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18461 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18462 WDI_ASSERT(0);
18463 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018464 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018465 }
18466
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018468 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018469
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018471}/*WDI_ProcessEnterBmpsRsp*/
18472
18473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018476
18477 @param pWDICtx: pointer to the WLAN DAL context
18478 pEventData: pointer to the event information structure
18479
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 @see
18481 @return Result of the function call
18482*/
18483WDI_Status
18484WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018485(
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 WDI_ControlBlockType* pWDICtx,
18487 WDI_EventInfoType* pEventData
18488)
18489{
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 eHalStatus halStatus;
18491 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018492 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018493 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18494 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18496
18497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 -------------------------------------------------------------------------*/
18500 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18501 ( NULL == pEventData->pEventData))
18502 {
18503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018504 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 }
18508
18509 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18510
18511 /*-------------------------------------------------------------------------
18512 Extract response and send it to UMAC
18513 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018514
18515 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18516 {
18517 wpalMemoryCopy( &halExitBmpsRsp,
18518 pEventData->pEventData,
18519 sizeof(halExitBmpsRsp));
18520
18521 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18522 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18523 }
18524 else
18525 {
18526 halStatus = *((eHalStatus*)pEventData->pEventData);
18527 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18528 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018529
18530 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018531 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18532 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18533 {
18534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18535 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18536 WDI_ASSERT(0);
18537 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18539
18540 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018541 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018542
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018544}/*WDI_ProcessExitBmpsRsp*/
18545
18546/**
18547 @brief Process Enter UAPSD Rsp function (called when a response
18548 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018549
18550 @param pWDICtx: pointer to the WLAN DAL context
18551 pEventData: pointer to the event information structure
18552
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 @see
18554 @return Result of the function call
18555*/
18556WDI_Status
18557WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018558(
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 WDI_ControlBlockType* pWDICtx,
18560 WDI_EventInfoType* pEventData
18561)
18562{
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018564 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018566 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18567
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18569
18570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 -------------------------------------------------------------------------*/
18573 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18574 ( NULL == pEventData->pEventData))
18575 {
18576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 }
18581
18582 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18583
18584 /*-------------------------------------------------------------------------
18585 Extract response and send it to UMAC
18586 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018587 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18588 {
18589 wpalMemoryCopy( &halEnterUapsdRsp,
18590 pEventData->pEventData,
18591 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018592
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018593 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18594 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18595 }
18596 else
18597 {
18598 halStatus = *((eHalStatus*)pEventData->pEventData);
18599 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18600 }
18601
18602 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018603 {
18604 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18605 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18606 // the traffic to decide when to suspend the trigger frames when there is no traffic
18607 // activity on the trigger enabled ACs
18608 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18609
18610#ifdef WLAN_PERF
18611 // Increment the BD signature to refresh the fast path BD utilization
18612 pWDICtx->uBdSigSerialNum++;
18613#endif
18614 }
18615
18616 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018617 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018618
Jeff Johnsone7245742012-09-05 17:12:55 -070018619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018620}/*WDI_ProcessEnterUapsdRsp*/
18621
18622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018625
18626 @param pWDICtx: pointer to the WLAN DAL context
18627 pEventData: pointer to the event information structure
18628
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 @see
18630 @return Result of the function call
18631*/
18632WDI_Status
18633WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018634(
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 WDI_ControlBlockType* pWDICtx,
18636 WDI_EventInfoType* pEventData
18637)
18638{
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 eHalStatus halStatus;
18640 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018641 tHalExitUapsdRspParams halExitUapsdRsp;
18642 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18644
18645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 -------------------------------------------------------------------------*/
18648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18649 ( NULL == pEventData->pEventData))
18650 {
18651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 }
18656
18657 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18658
18659 /*-------------------------------------------------------------------------
18660 Extract response and send it to UMAC
18661 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018662 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18663 {
18664 wpalMemoryCopy( &halExitUapsdRsp,
18665 pEventData->pEventData,
18666 sizeof(halExitUapsdRsp));
18667
18668 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18669 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18670 }
18671 else
18672 {
18673 halStatus = *((eHalStatus*)pEventData->pEventData);
18674 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18675 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18677 // directly instead of the FW WQ.
18678 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18679
18680#ifdef WLAN_PERF
18681 // Increment the BD signature to refresh the fast path BD utilization
18682 pWDICtx->uBdSigSerialNum++;
18683#endif
18684
18685 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018686 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018687
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018689}/*WDI_ProcessExitUapsdRsp*/
18690
18691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018694
18695 @param pWDICtx: pointer to the WLAN DAL context
18696 pEventData: pointer to the event information structure
18697
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 @see
18699 @return Result of the function call
18700*/
18701WDI_Status
18702WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018703(
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 WDI_ControlBlockType* pWDICtx,
18705 WDI_EventInfoType* pEventData
18706)
18707{
18708 WDI_Status wdiStatus;
18709 eHalStatus halStatus;
18710 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18712
18713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 -------------------------------------------------------------------------*/
18716 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18717 ( NULL == pEventData->pEventData))
18718 {
18719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 }
18724
18725 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18726
18727 /*-------------------------------------------------------------------------
18728 Extract response and send it to UMAC
18729 -------------------------------------------------------------------------*/
18730 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018732
18733 /*Notify UMAC*/
18734 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18735
Jeff Johnsone7245742012-09-05 17:12:55 -070018736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018737}/*WDI_ProcessSetUapsdAcParamsRsp*/
18738
18739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018740 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018742
18743 @param pWDICtx: pointer to the WLAN DAL context
18744 pEventData: pointer to the event information structure
18745
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 @see
18747 @return Result of the function call
18748*/
18749WDI_Status
18750WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018751(
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 WDI_ControlBlockType* pWDICtx,
18753 WDI_EventInfoType* pEventData
18754)
18755{
18756 WDI_Status wdiStatus;
18757 eHalStatus halStatus;
18758 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18760
18761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 -------------------------------------------------------------------------*/
18764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18765 ( NULL == pEventData->pEventData))
18766 {
18767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018771 }
18772
18773 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18774
18775 /*-------------------------------------------------------------------------
18776 Extract response and send it to UMAC
18777 -------------------------------------------------------------------------*/
18778 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018779 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018780
18781 /*Notify UMAC*/
18782 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18783
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018785}/*WDI_ProcessUpdateUapsdParamsRsp*/
18786
18787/**
18788 @brief Process Configure RXP filter Rsp function (called when a
18789 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018790
18791 @param pWDICtx: pointer to the WLAN DAL context
18792 pEventData: pointer to the event information structure
18793
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 @see
18795 @return Result of the function call
18796*/
18797WDI_Status
18798WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018799(
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 WDI_ControlBlockType* pWDICtx,
18801 WDI_EventInfoType* pEventData
18802)
18803{
18804 WDI_Status wdiStatus;
18805 eHalStatus halStatus;
18806 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18808
18809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018811 -------------------------------------------------------------------------*/
18812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18813 ( NULL == pEventData->pEventData))
18814 {
18815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 }
18820
18821 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18822
18823 /*-------------------------------------------------------------------------
18824 Extract response and send it to UMAC
18825 -------------------------------------------------------------------------*/
18826 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018828
18829 /*Notify UMAC*/
18830 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18831
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833}/*WDI_ProcessConfigureRxpFilterRsp*/
18834
18835/**
18836 @brief Process Set beacon filter Rsp function (called when a
18837 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018838
18839 @param pWDICtx: pointer to the WLAN DAL context
18840 pEventData: pointer to the event information structure
18841
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 @see
18843 @return Result of the function call
18844*/
18845WDI_Status
18846WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018847(
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 WDI_ControlBlockType* pWDICtx,
18849 WDI_EventInfoType* pEventData
18850)
18851{
18852 WDI_Status wdiStatus;
18853 eHalStatus halStatus;
18854 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18856
18857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 -------------------------------------------------------------------------*/
18860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18861 ( NULL == pEventData->pEventData))
18862 {
18863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 }
18868
18869 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18870
18871 /*-------------------------------------------------------------------------
18872 Extract response and send it to UMAC
18873 -------------------------------------------------------------------------*/
18874 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018876
18877 /*Notify UMAC*/
18878 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18879
Jeff Johnsone7245742012-09-05 17:12:55 -070018880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018881}/*WDI_ProcessSetBeaconFilterRsp*/
18882
18883/**
18884 @brief Process remove beacon filter Rsp function (called when a
18885 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018886
18887 @param pWDICtx: pointer to the WLAN DAL context
18888 pEventData: pointer to the event information structure
18889
Jeff Johnson295189b2012-06-20 16:38:30 -070018890 @see
18891 @return Result of the function call
18892*/
18893WDI_Status
18894WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018895(
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 WDI_ControlBlockType* pWDICtx,
18897 WDI_EventInfoType* pEventData
18898)
18899{
18900 WDI_Status wdiStatus;
18901 eHalStatus halStatus;
18902 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18904
18905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 -------------------------------------------------------------------------*/
18908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18909 ( NULL == pEventData->pEventData))
18910 {
18911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018915 }
18916
18917 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18918
18919 /*-------------------------------------------------------------------------
18920 Extract response and send it to UMAC
18921 -------------------------------------------------------------------------*/
18922 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018924
18925 /*Notify UMAC*/
18926 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18927
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018929}/*WDI_ProcessRemBeaconFilterRsp*/
18930
18931/**
18932 @brief Process set RSSI thresholds Rsp function (called when a
18933 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018934
18935 @param pWDICtx: pointer to the WLAN DAL context
18936 pEventData: pointer to the event information structure
18937
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 @see
18939 @return Result of the function call
18940*/
18941WDI_Status
18942WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018943(
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 WDI_ControlBlockType* pWDICtx,
18945 WDI_EventInfoType* pEventData
18946)
18947{
18948 WDI_Status wdiStatus;
18949 eHalStatus halStatus;
18950 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18952
18953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 -------------------------------------------------------------------------*/
18956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18957 ( NULL == pEventData->pEventData))
18958 {
18959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 }
18964
18965 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18966
18967 /*-------------------------------------------------------------------------
18968 Extract response and send it to UMAC
18969 -------------------------------------------------------------------------*/
18970 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018971 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018972
18973 /*Notify UMAC*/
18974 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18975
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018977}/*WDI_ProcessSetRSSIThresoldsRsp*/
18978
18979/**
18980 @brief Process host offload Rsp function (called when a
18981 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018982
18983 @param pWDICtx: pointer to the WLAN DAL context
18984 pEventData: pointer to the event information structure
18985
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 @see
18987 @return Result of the function call
18988*/
18989WDI_Status
18990WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018991(
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 WDI_ControlBlockType* pWDICtx,
18993 WDI_EventInfoType* pEventData
18994)
18995{
18996 WDI_Status wdiStatus;
18997 eHalStatus halStatus;
18998 WDI_HostOffloadCb wdiHostOffloadCb;
18999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19000
19001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019003 -------------------------------------------------------------------------*/
19004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19005 ( NULL == pEventData->pEventData))
19006 {
19007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 }
19012
19013 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19014
19015 /*-------------------------------------------------------------------------
19016 Extract response and send it to UMAC
19017 -------------------------------------------------------------------------*/
19018 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019019 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019020
19021 /*Notify UMAC*/
19022 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19023
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019025}/*WDI_ProcessHostOffloadRsp*/
19026
19027/**
19028 @brief Process keep alive Rsp function (called when a
19029 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019030
19031 @param pWDICtx: pointer to the WLAN DAL context
19032 pEventData: pointer to the event information structure
19033
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 @see
19035 @return Result of the function call
19036*/
19037WDI_Status
19038WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019039(
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 WDI_ControlBlockType* pWDICtx,
19041 WDI_EventInfoType* pEventData
19042)
19043{
19044 WDI_Status wdiStatus;
19045 eHalStatus halStatus;
19046 WDI_KeepAliveCb wdiKeepAliveCb;
19047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19049 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19050
19051
19052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 -------------------------------------------------------------------------*/
19055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19056 ( NULL == pEventData->pEventData))
19057 {
19058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 }
19063
Jeff Johnsone7245742012-09-05 17:12:55 -070019064 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19065
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 /*-------------------------------------------------------------------------
19067 Extract response and send it to UMAC
19068 -------------------------------------------------------------------------*/
19069 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019071
19072 /*Notify UMAC*/
19073 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19074
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019076}/*WDI_ProcessKeepAliveRsp*/
19077
19078/**
19079 @brief Process wowl add ptrn Rsp function (called when a
19080 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019081
19082 @param pWDICtx: pointer to the WLAN DAL context
19083 pEventData: pointer to the event information structure
19084
Jeff Johnson295189b2012-06-20 16:38:30 -070019085 @see
19086 @return Result of the function call
19087*/
19088WDI_Status
19089WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019090(
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 WDI_ControlBlockType* pWDICtx,
19092 WDI_EventInfoType* pEventData
19093)
19094{
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 eHalStatus halStatus;
19096 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019097 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19098 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19099
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19101
19102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 -------------------------------------------------------------------------*/
19105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19106 ( NULL == pEventData->pEventData))
19107 {
19108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 }
19113
19114 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19115
19116 /*-------------------------------------------------------------------------
19117 Extract response and send it to UMAC
19118 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019119 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19120 {
19121 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19122 pEventData->pEventData,
19123 sizeof(halAddWowlBcastPtrRsp));
19124
19125 wdiWowlAddBcPtrRsp.wdiStatus =
19126 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19127 }
19128 else
19129 {
19130 halStatus = *((eHalStatus*)pEventData->pEventData);
19131 wdiWowlAddBcPtrRsp.wdiStatus =
19132 WDI_HAL_2_WDI_STATUS(halStatus);
19133 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019134
19135 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019136 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019137
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019139}/*WDI_ProcessWowlAddBcPtrnRsp*/
19140
19141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019142 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019144
19145 @param pWDICtx: pointer to the WLAN DAL context
19146 pEventData: pointer to the event information structure
19147
Jeff Johnson295189b2012-06-20 16:38:30 -070019148 @see
19149 @return Result of the function call
19150*/
19151WDI_Status
19152WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019153(
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 WDI_ControlBlockType* pWDICtx,
19155 WDI_EventInfoType* pEventData
19156)
19157{
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 eHalStatus halStatus;
19159 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019160 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19161 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19163
19164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 -------------------------------------------------------------------------*/
19167 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19168 ( NULL == pEventData->pEventData))
19169 {
19170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019174 }
19175
19176 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19177
19178 /*-------------------------------------------------------------------------
19179 Extract response and send it to UMAC
19180 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019181 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19182 {
19183 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19184 pEventData->pEventData,
19185 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019186
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019187 wdiWowlDelBcstPtrRsp.wdiStatus =
19188 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19189 }
19190 else
19191 {
19192 halStatus = *((eHalStatus*)pEventData->pEventData);
19193 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019196 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019197
Jeff Johnsone7245742012-09-05 17:12:55 -070019198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019199}/*WDI_ProcessWowlDelBcPtrnRsp*/
19200
19201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019204
19205 @param pWDICtx: pointer to the WLAN DAL context
19206 pEventData: pointer to the event information structure
19207
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 @see
19209 @return Result of the function call
19210*/
19211WDI_Status
19212WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019213(
Jeff Johnson295189b2012-06-20 16:38:30 -070019214 WDI_ControlBlockType* pWDICtx,
19215 WDI_EventInfoType* pEventData
19216)
19217{
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 eHalStatus halStatus;
19219 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019220 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19221 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19223
19224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 -------------------------------------------------------------------------*/
19227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19228 ( NULL == pEventData->pEventData))
19229 {
19230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 }
19235
19236 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19237
19238 /*-------------------------------------------------------------------------
19239 Extract response and send it to UMAC
19240 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019241 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19242 {
19243 wpalMemoryCopy( &halEnterWowlRspParams,
19244 (wpt_uint8*)pEventData->pEventData,
19245 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019246
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019247 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19248 wdiwowlEnterRsp.status =
19249 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19250 }
19251 else
19252 {
19253 halStatus = *((eHalStatus*)pEventData->pEventData);
19254 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19255 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019257 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019258
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019260}/*WDI_ProcessWowlEnterRsp*/
19261
19262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019265
19266 @param pWDICtx: pointer to the WLAN DAL context
19267 pEventData: pointer to the event information structure
19268
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 @see
19270 @return Result of the function call
19271*/
19272WDI_Status
19273WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019274(
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 WDI_ControlBlockType* pWDICtx,
19276 WDI_EventInfoType* pEventData
19277)
19278{
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 eHalStatus halStatus;
19280 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019281 tHalExitWowlRspParams halExitWowlRspParams;
19282 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19283
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19285
19286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 -------------------------------------------------------------------------*/
19289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19290 ( NULL == pEventData->pEventData))
19291 {
19292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 }
19297
19298 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19299
19300 /*-------------------------------------------------------------------------
19301 Extract response and send it to UMAC
19302 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019303 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19304 {
19305 wpalMemoryCopy( &halExitWowlRspParams,
19306 pEventData->pEventData,
19307 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019308
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019309 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19310 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19311
19312 }
19313 else
19314 {
19315 halStatus = *((eHalStatus*)pEventData->pEventData);
19316 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19317 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019319 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019320
Jeff Johnsone7245742012-09-05 17:12:55 -070019321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019322}/*WDI_ProcessWowlExitRsp*/
19323
19324/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019325 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 (called when a response is being received over the bus
19327 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019328
19329 @param pWDICtx: pointer to the WLAN DAL context
19330 pEventData: pointer to the event information structure
19331
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 @see
19333 @return Result of the function call
19334*/
19335WDI_Status
19336WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019337(
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 WDI_ControlBlockType* pWDICtx,
19339 WDI_EventInfoType* pEventData
19340)
19341{
19342 WDI_Status wdiStatus;
19343 eHalStatus halStatus;
19344 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19346
19347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 -------------------------------------------------------------------------*/
19350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19351 ( NULL == pEventData->pEventData))
19352 {
19353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 }
19358
19359 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19360
19361 /*-------------------------------------------------------------------------
19362 Extract response and send it to UMAC
19363 -------------------------------------------------------------------------*/
19364 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019365 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019366
19367 /*Notify UMAC*/
19368 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19369
Jeff Johnsone7245742012-09-05 17:12:55 -070019370 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019371}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19372
19373
19374/**
19375 @brief Process Nv download(called when a response
19376 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019377
19378 @param pWDICtx: pointer to the WLAN DAL context
19379 pEventData: pointer to the event information structure
19380
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 @see
19382 @return Result of the function call
19383*/
19384WDI_Status
19385WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019386(
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 WDI_ControlBlockType* pWDICtx,
19388 WDI_EventInfoType* pEventData
19389)
19390{
19391
19392 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19393 tHalNvImgDownloadRspParams halNvDownloadRsp;
19394 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19395
19396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 -------------------------------------------------------------------------*/
19399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19400 ( NULL == pEventData->pEventData))
19401 {
19402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019406 }
19407
19408 /*-------------------------------------------------------------------------
19409 Extract response and send it to UMAC
19410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019411 wpalMemoryCopy( &halNvDownloadRsp,
19412 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 sizeof(halNvDownloadRsp));
19414
19415 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19416
19417 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019418 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19419 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 {
19421 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019422 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019423 }
19424 else
19425 {
19426 /*Reset the Nv related global information in WDI context information */
19427 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19428 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19429 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19430 /*call WDA callback function for last fragment */
19431 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19432 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19433 }
19434
Jeff Johnsone7245742012-09-05 17:12:55 -070019435 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019436}
19437#ifdef WLAN_FEATURE_VOWIFI_11R
19438/**
19439 @brief Process Add TSpec Rsp function (called when a response
19440 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019441
19442 @param pWDICtx: pointer to the WLAN DAL context
19443 pEventData: pointer to the event information structure
19444
Jeff Johnson295189b2012-06-20 16:38:30 -070019445 @see
19446 @return Result of the function call
19447*/
19448WDI_Status
19449WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019450(
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 WDI_ControlBlockType* pWDICtx,
19452 WDI_EventInfoType* pEventData
19453)
19454{
19455 WDI_Status wdiStatus;
19456 tAggrAddTsRspParams aggrAddTsRsp;
19457 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19459
19460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019462 -------------------------------------------------------------------------*/
19463 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19464 ( NULL == pEventData->pEventData))
19465 {
19466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 }
19471
19472 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19473
19474 /*-------------------------------------------------------------------------
19475 Extract response and send it to UMAC
19476 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019477 wpalMemoryCopy( &aggrAddTsRsp,
19478 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 sizeof(aggrAddTsRsp));
19480
19481 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019483
19484 /*Notify UMAC*/
19485 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19486
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019488}/*WDI_ProcessAddTSpecRsp*/
19489#endif /* WLAN_FEATURE_VOWIFI_11R */
19490
19491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019492 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019493 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019494
19495 @param pWDICtx: pointer to the WLAN DAL context
19496 pEventData: pointer to the event information structure
19497
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 @see
19499 @return Result of the function call
19500*/
19501WDI_Status
19502WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019503(
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 WDI_ControlBlockType* pWDICtx,
19505 WDI_EventInfoType* pEventData
19506)
19507{
19508 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19509 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19510 tHalHostResumeRspParams hostResumeRspMsg;
19511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19512
19513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019515 -------------------------------------------------------------------------*/
19516 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19517 ( NULL == pEventData->pEventData))
19518 {
19519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 }
19524
19525 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19526
19527 /*-------------------------------------------------------------------------
19528 Extract response and send it to UMAC
19529 -------------------------------------------------------------------------*/
19530
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 (wpt_uint8*)pEventData->pEventData,
19533 sizeof(hostResumeRspMsg));
19534
Jeff Johnsone7245742012-09-05 17:12:55 -070019535 wdiResumeRspParams.wdiStatus =
19536 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019537
19538 /*Notify UMAC*/
19539 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19540
19541 return WDI_STATUS_SUCCESS;
19542}
19543
19544/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019545 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019546 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019547
19548 @param pWDICtx: pointer to the WLAN DAL context
19549 pEventData: pointer to the event information structure
19550
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 @see
19552 @return Result of the function call
19553*/
19554WDI_Status
19555WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019556(
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 WDI_ControlBlockType* pWDICtx,
19558 WDI_EventInfoType* pEventData
19559)
19560{
19561 WDI_Status wdiStatus;
19562 eHalStatus halStatus;
19563 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19565
19566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 -------------------------------------------------------------------------*/
19569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19570 ( NULL == pEventData->pEventData))
19571 {
19572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019577
19578 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019579
19580 /*-------------------------------------------------------------------------
19581 Extract response and send it to UMAC
19582 -------------------------------------------------------------------------*/
19583 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019584 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585
19586 /*Notify UMAC*/
19587 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19588
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019590}/*WDI_ProcessSetTxPerTrackingRsp*/
19591
19592/*==========================================================================
19593 Indications from HAL
19594 ==========================================================================*/
19595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019596 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019597 indication of this kind is being received over the bus
19598 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019599
19600 @param pWDICtx: pointer to the WLAN DAL context
19601 pEventData: pointer to the event information structure
19602
Jeff Johnson295189b2012-06-20 16:38:30 -070019603 @see
19604 @return Result of the function call
19605*/
19606WDI_Status
19607WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019608(
Jeff Johnson295189b2012-06-20 16:38:30 -070019609 WDI_ControlBlockType* pWDICtx,
19610 WDI_EventInfoType* pEventData
19611)
19612{
19613 WDI_LowLevelIndType wdiInd;
19614 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19616
19617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019619 -------------------------------------------------------------------------*/
19620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19621 ( NULL == pEventData->pEventData))
19622 {
19623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019627 }
19628
19629 /*-------------------------------------------------------------------------
19630 Extract indication and send it to UMAC
19631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19633 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 sizeof(tHalRSSINotification));
19635
19636 /*Fill in the indication parameters*/
19637 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19638 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19639 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19640 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19641 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19642 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19643 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19644 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19645 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19646 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19647 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19648 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19649 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019650 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19651 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019652
ltimariu034f7d62013-01-24 18:54:33 -080019653 if ( pWDICtx->wdiLowLevelIndCB )
19654 {
19655 /*Notify UMAC of indication*/
19656 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19657 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019658
19659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019660}/*WDI_ProcessLowRSSIInd*/
19661
19662
19663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019665 an indication of this kind is being received over the
19666 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019667
19668 @param pWDICtx: pointer to the WLAN DAL context
19669 pEventData: pointer to the event information structure
19670
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 @see
19672 @return Result of the function call
19673*/
19674WDI_Status
19675WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019676(
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 WDI_ControlBlockType* pWDICtx,
19678 WDI_EventInfoType* pEventData
19679)
19680{
19681 WDI_Status wdiStatus;
19682 eHalStatus halStatus;
19683 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019684 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19686
19687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 -------------------------------------------------------------------------*/
19690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19691 ( NULL == pEventData->pEventData))
19692 {
19693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019698 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 /*-------------------------------------------------------------------------
19700 Extract indication and send it to UMAC
19701 -------------------------------------------------------------------------*/
19702 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19703 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019704 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019705
19706 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019708 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19709 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019710 if ( pWDICtx->wdiLowLevelIndCB )
19711 {
19712 /*Notify UMAC*/
19713 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19714 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019715
19716 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019717}/*WDI_ProcessMissedBeaconInd*/
19718
19719
19720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 an indication of this kind is being received over the
19723 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019724
19725 @param pWDICtx: pointer to the WLAN DAL context
19726 pEventData: pointer to the event information structure
19727
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 @see
19729 @return Result of the function call
19730*/
19731WDI_Status
19732WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019733(
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 WDI_ControlBlockType* pWDICtx,
19735 WDI_EventInfoType* pEventData
19736)
19737{
19738 WDI_Status wdiStatus;
19739 eHalStatus halStatus;
19740 WDI_LowLevelIndType wdiInd;
19741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19742
19743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 -------------------------------------------------------------------------*/
19746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19747 ( NULL == pEventData->pEventData))
19748 {
19749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 }
19754
19755 /*-------------------------------------------------------------------------
19756 Extract indication and send it to UMAC
19757 -------------------------------------------------------------------------*/
19758 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19759 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019761
19762 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019764 /* ! TO DO - fill in from HAL struct:
19765 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19766
ltimariu034f7d62013-01-24 18:54:33 -080019767 if ( pWDICtx->wdiLowLevelIndCB )
19768 {
19769 /*Notify UMAC*/
19770 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19771 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019772
19773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019774}/*WDI_ProcessUnkAddrFrameInd*/
19775
19776
19777/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 indication of this kind is being received over the bus
19780 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019781
19782 @param pWDICtx: pointer to the WLAN DAL context
19783 pEventData: pointer to the event information structure
19784
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 @see
19786 @return Result of the function call
19787*/
19788WDI_Status
19789WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019790(
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 WDI_ControlBlockType* pWDICtx,
19792 WDI_EventInfoType* pEventData
19793)
19794{
19795 WDI_LowLevelIndType wdiInd;
19796 tpSirMicFailureInd pHalMicFailureInd;
19797
19798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19799
19800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 -------------------------------------------------------------------------*/
19803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19804 ( NULL == pEventData->pEventData))
19805 {
19806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019811
Jeff Johnson295189b2012-06-20 16:38:30 -070019812 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19813 /*-------------------------------------------------------------------------
19814 Extract indication and send it to UMAC
19815 -------------------------------------------------------------------------*/
19816
19817 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019818 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19820 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19821 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19822 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19823 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19824 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19825 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19826 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019827 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019831 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 pHalMicFailureInd->info.keyId;
19833 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19834 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19835 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19836 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019837
19838 if ( pWDICtx->wdiLowLevelIndCB )
19839 {
19840 /*Notify UMAC*/
19841 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19842 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019843
19844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019845}/*WDI_ProcessMicFailureInd*/
19846
19847
19848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019849 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 an indication of this kind is being received over the
19851 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019852
19853 @param pWDICtx: pointer to the WLAN DAL context
19854 pEventData: pointer to the event information structure
19855
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 @see
19857 @return Result of the function call
19858*/
19859WDI_Status
19860WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019861(
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 WDI_ControlBlockType* pWDICtx,
19863 WDI_EventInfoType* pEventData
19864)
19865{
19866 WDI_Status wdiStatus;
19867 eHalStatus halStatus;
19868 WDI_LowLevelIndType wdiInd;
19869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19870
19871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019873 -------------------------------------------------------------------------*/
19874 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19875 ( NULL == pEventData->pEventData))
19876 {
19877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 }
19882
19883 /*-------------------------------------------------------------------------
19884 Extract indication and send it to UMAC
19885 -------------------------------------------------------------------------*/
19886
19887 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19888 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019890
19891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19892 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019893
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019895 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19896 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019897
ltimariu034f7d62013-01-24 18:54:33 -080019898 if ( pWDICtx->wdiLowLevelIndCB )
19899 {
19900 /*Notify UMAC*/
19901 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19902 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019903
19904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019905}/*WDI_ProcessFatalErrorInd*/
19906
19907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 an indication of this kind is being received over the
19910 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019911
19912 @param pWDICtx: pointer to the WLAN DAL context
19913 pEventData: pointer to the event information structure
19914
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 @see
19916 @return Result of the function call
19917*/
19918WDI_Status
19919WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019920(
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 WDI_ControlBlockType* pWDICtx,
19922 WDI_EventInfoType* pEventData
19923)
19924{
19925 tDeleteStaContextParams halDelSTACtx;
19926 WDI_LowLevelIndType wdiInd;
19927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19928
19929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019931 -------------------------------------------------------------------------*/
19932 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19933 ( NULL == pEventData->pEventData))
19934 {
19935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 }
19940
19941 /*-------------------------------------------------------------------------
19942 Extract indication and send it to UMAC
19943 -------------------------------------------------------------------------*/
19944
19945 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 wpalMemoryCopy( &halDelSTACtx,
19947 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 sizeof(halDelSTACtx));
19949
19950 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019951 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019952
19953 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19954 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19955 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19956 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19957
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19963 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019964
ltimariu034f7d62013-01-24 18:54:33 -080019965 if ( pWDICtx->wdiLowLevelIndCB )
19966 {
19967 /*Notify UMAC*/
19968 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19969 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019970
19971 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019972}/*WDI_ProcessDelSTAInd*/
19973
19974/**
19975*@brief Process Coex Indication function (called when
19976 an indication of this kind is being received over the
19977 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019978
19979 @param pWDICtx: pointer to the WLAN DAL context
19980 pEventData: pointer to the event information structure
19981
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 @see
19983 @return Result of the function call
19984*/
19985WDI_Status
19986WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019987(
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 WDI_ControlBlockType* pWDICtx,
19989 WDI_EventInfoType* pEventData
19990)
19991{
19992 WDI_LowLevelIndType wdiInd;
19993 tCoexIndMsg halCoexIndMsg;
19994 wpt_uint32 index;
19995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19996
19997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 -------------------------------------------------------------------------*/
20000 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20001 ( NULL == pEventData->pEventData ))
20002 {
20003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 }
20008
20009 /*-------------------------------------------------------------------------
20010 Extract indication and send it to UMAC
20011 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20013 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 sizeof(halCoexIndMsg.coexIndParams) );
20015
20016 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 wdiInd.wdiIndicationType = WDI_COEX_IND;
20018 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020019 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20020 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 }
20023
20024 // DEBUG
20025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20026 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020027 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20028 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20029 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20030 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20031 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020032
ltimariu034f7d62013-01-24 18:54:33 -080020033 if ( pWDICtx->wdiLowLevelIndCB )
20034 {
20035 /*Notify UMAC*/
20036 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20037 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020038
20039 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020040}/*WDI_ProcessCoexInd*/
20041
20042/**
20043*@brief Process Tx Complete Indication function (called when
20044 an indication of this kind is being received over the
20045 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020046
20047 @param pWDICtx: pointer to the WLAN DAL context
20048 pEventData: pointer to the event information structure
20049
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 @see
20051 @return Result of the function call
20052*/
20053WDI_Status
20054WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020055(
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 WDI_ControlBlockType* pWDICtx,
20057 WDI_EventInfoType* pEventData
20058)
20059{
20060 WDI_LowLevelIndType wdiInd;
20061 tTxComplIndMsg halTxComplIndMsg;
20062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20063
20064 /*-------------------------------------------------------------------------
20065 Sanity check
20066 -------------------------------------------------------------------------*/
20067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20068 ( NULL == pEventData->pEventData ))
20069 {
20070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_ASSERT( 0 );
20073 return WDI_STATUS_E_FAILURE;
20074 }
20075
20076 /*-------------------------------------------------------------------------
20077 Extract indication and send it to UMAC
20078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20080 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 sizeof(halTxComplIndMsg.txComplParams) );
20082
20083 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020084 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20085 wdiInd.wdiIndicationData.tx_complete_status
20086 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020087
ltimariu034f7d62013-01-24 18:54:33 -080020088 if ( pWDICtx->wdiLowLevelIndCB )
20089 {
20090 /*Notify UMAC*/
20091 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20092 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020093
20094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020095}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020096#ifdef FEATURE_WLAN_TDLS
20097/**
20098*@brief Process TDLS Indication function (called when
20099 an indication of this kind is being received over the
20100 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020101
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020102 @param pWDICtx: pointer to the WLAN DAL context
20103 pEventData: pointer to the event information structure
20104
20105 @see
20106 @return Result of the function call
20107*/
20108WDI_Status
20109WDI_ProcessTdlsInd
20110(
20111 WDI_ControlBlockType* pWDICtx,
20112 WDI_EventInfoType* pEventData
20113)
20114{
20115 WDI_LowLevelIndType wdiInd;
20116 tTdlsIndMsg halTdlsIndMsg;
20117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20118
20119 /*-------------------------------------------------------------------------
20120 Sanity check
20121 -------------------------------------------------------------------------*/
20122 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20123 ( NULL == pEventData->pEventData ))
20124 {
20125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20126 "%s: Invalid parameters", __func__);
20127 WDI_ASSERT( 0 );
20128 return WDI_STATUS_E_FAILURE;
20129 }
20130
20131 /*-------------------------------------------------------------------------
20132 Extract indication and send it to UMAC
20133 -------------------------------------------------------------------------*/
20134 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20135 pEventData->pEventData,
20136 sizeof(halTdlsIndMsg.tdlsIndParams) );
20137
20138 /*Fill in the indication parameters*/
20139 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20140
20141 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20142 = halTdlsIndMsg.tdlsIndParams.status;
20143
20144 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20145 = halTdlsIndMsg.tdlsIndParams.staIdx;
20146
20147 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20148 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20149
20150 /*Notify UMAC*/
20151 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20152
20153 return WDI_STATUS_SUCCESS;
20154}/*WDI_ProcessTdlsInd*/
20155#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020156/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020157*@brief Process Noa Start Indication function (called when
20158 an indication of this kind is being received over the
20159 bus from HAL)
20160
20161 @param pWDICtx: pointer to the WLAN DAL context
20162 pEventData: pointer to the event information structure
20163
20164 @see
20165 @return Result of the function call
20166*/
20167WDI_Status
20168WDI_ProcessP2pNoaStartInd
20169(
20170 WDI_ControlBlockType* pWDICtx,
20171 WDI_EventInfoType* pEventData
20172)
20173{
20174 WDI_LowLevelIndType wdiInd;
20175 tNoaStartIndMsg halNoaStartIndMsg;
20176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20177
20178 /*-------------------------------------------------------------------------
20179 Sanity check
20180 -------------------------------------------------------------------------*/
20181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20182 ( NULL == pEventData->pEventData ))
20183 {
20184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20185 "%s: Invalid parameters", __func__);
20186 WDI_ASSERT( 0 );
20187 return WDI_STATUS_E_FAILURE;
20188 }
20189
20190 /*-------------------------------------------------------------------------
20191 Extract indication and send it to UMAC
20192 -------------------------------------------------------------------------*/
20193 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20194 pEventData->pEventData,
20195 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20196
20197 /*Fill in the indication parameters*/
20198 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20199
20200 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20201 = halNoaStartIndMsg.noaStartIndParams.status;
20202
20203 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20204 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20205
20206 /*Notify UMAC*/
20207 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20208
20209 return WDI_STATUS_SUCCESS;
20210}/*WDI_ProcessNoaAttrInd*/
20211
20212/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020213*@brief Process Noa Attr Indication function (called when
20214 an indication of this kind is being received over the
20215 bus from HAL)
20216
20217 @param pWDICtx: pointer to the WLAN DAL context
20218 pEventData: pointer to the event information structure
20219
20220 @see
20221 @return Result of the function call
20222*/
20223WDI_Status
20224WDI_ProcessP2pNoaAttrInd
20225(
20226 WDI_ControlBlockType* pWDICtx,
20227 WDI_EventInfoType* pEventData
20228)
20229{
20230 WDI_LowLevelIndType wdiInd;
20231 tNoaAttrIndMsg halNoaAttrIndMsg;
20232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20233
20234 /*-------------------------------------------------------------------------
20235 Sanity check
20236 -------------------------------------------------------------------------*/
20237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20238 ( NULL == pEventData->pEventData ))
20239 {
20240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 WDI_ASSERT( 0 );
20243 return WDI_STATUS_E_FAILURE;
20244 }
20245
20246 /*-------------------------------------------------------------------------
20247 Extract indication and send it to UMAC
20248 -------------------------------------------------------------------------*/
20249 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20250 pEventData->pEventData,
20251 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20252
20253 /*Fill in the indication parameters*/
20254 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020255
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20257 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020258
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20260 = halNoaAttrIndMsg.noaAttrIndParams.index;
20261 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20262 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20263 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20264 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020265
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20267 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20268 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20269 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20270 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20271 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20272 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20273 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020274
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20276 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20277 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20278 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20279 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20280 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20281 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20282 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20283
ltimariu034f7d62013-01-24 18:54:33 -080020284 if ( pWDICtx->wdiLowLevelIndCB )
20285 {
20286 /*Notify UMAC*/
20287 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20288 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020289
20290 return WDI_STATUS_SUCCESS;
20291}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020292
20293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 an indication of this kind is being received over the
20296 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020297
20298 @param pWDICtx: pointer to the WLAN DAL context
20299 pEventData: pointer to the event information structure
20300
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 @see
20302 @return Result of the function call
20303*/
20304WDI_Status
20305WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020306(
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 WDI_ControlBlockType* pWDICtx,
20308 WDI_EventInfoType* pEventData
20309)
20310{
20311 WDI_LowLevelIndType wdiInd;
20312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020313
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 /*-------------------------------------------------------------------------
20315 Extract indication and send it to UMAC
20316 -------------------------------------------------------------------------*/
20317 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020318 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20319
ltimariu034f7d62013-01-24 18:54:33 -080020320 if ( pWDICtx->wdiLowLevelIndCB )
20321 {
20322 /*Notify UMAC*/
20323 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20324 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020325
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020327}/*WDI_ProcessTxPerHitInd*/
20328
Jeff Johnson295189b2012-06-20 16:38:30 -070020329/**
Yue Ma365933a2013-08-14 15:59:08 -070020330 @brief Process Periodic Tx Pattern Fw Indication function
20331
20332 @param pWDICtx: pointer to the WLAN DAL context
20333 pEventData: pointer to the event information structure
20334
20335 @see
20336 @return Result of the function call
20337*/
20338WDI_Status
20339WDI_ProcessPeriodicTxPtrnFwInd
20340(
20341 WDI_ControlBlockType* pWDICtx,
20342 WDI_EventInfoType* pEventData
20343)
20344{
20345 WDI_LowLevelIndType wdiInd;
20346
20347 /*-------------------------------------------------------------------------
20348 Sanity check
20349 -------------------------------------------------------------------------*/
20350 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20351 (NULL == pEventData->pEventData))
20352 {
20353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20354 "%s: Invalid parameters", __func__);
20355 WDI_ASSERT(0);
20356 return WDI_STATUS_E_FAILURE;
20357 }
20358
20359 /*-------------------------------------------------------------------------
20360 Extract indication and send it to UMAC
20361 -------------------------------------------------------------------------*/
20362 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20363 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20364 sizeof(tHalPeriodicTxPtrnFwInd));
20365
20366 if (pWDICtx->wdiLowLevelIndCB)
20367 {
20368 /*Notify UMAC*/
20369 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20370 }
20371
20372 return WDI_STATUS_SUCCESS;
20373}
20374
20375/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 @brief WDI_ProcessFTMCommandReq
20377 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020378
20379 @param pWDICtx: pointer to the WLAN DAL context
20380 pEventData: pointer to the event information structure
20381
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 @see
20383 @return Result of the function call
20384*/
20385WDI_Status
20386WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020387(
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 WDI_ControlBlockType* pWDICtx,
20389 WDI_EventInfoType* pEventData
20390)
20391{
20392 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20393 wpt_uint8 *ftmCommandBuffer = NULL;
20394 wpt_uint16 dataOffset;
20395 wpt_uint16 bufferSize;
20396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020398 -------------------------------------------------------------------------*/
20399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20400 ( NULL == pEventData->pEventData))
20401
20402 {
20403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 }
20408
20409 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20410
20411 /* Get MSG Buffer */
20412 WDI_GetMessageBuffer(pWDICtx,
20413 WDI_FTM_CMD_REQ,
20414 ftmCommandReq->bodyLength,
20415 &ftmCommandBuffer,
20416 &dataOffset,
20417 &bufferSize);
20418
20419 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20420 ftmCommandReq->FTMCommandBody,
20421 ftmCommandReq->bodyLength);
20422
20423 /* Send MSG */
20424 return WDI_SendMsg(pWDICtx,
20425 ftmCommandBuffer,
20426 bufferSize,
20427 pEventData->pCBfnc,
20428 pEventData->pUserData,
20429 WDI_FTM_CMD_RESP);
20430}
20431
20432/**
20433 @brief WDI_ProcessFTMCommandRsp
20434 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020435
20436 @param pWDICtx: pointer to the WLAN DAL context
20437 pEventData: pointer to the event information structure
20438
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 @see
20440 @return Result of the function call
20441*/
20442WDI_Status
20443WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020444(
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 WDI_ControlBlockType* pWDICtx,
20446 WDI_EventInfoType* pEventData
20447)
20448{
20449 WDI_FTMCommandRspCb ftmCMDRspCb;
20450 tProcessPttRspParams *ftmCMDRspData = NULL;
20451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20452
20453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020455 -------------------------------------------------------------------------*/
20456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20457 ( NULL == pEventData->pEventData))
20458 {
20459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020463 }
20464
20465 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20466
20467 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20468
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20470 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20472
20473 /*Notify UMAC*/
20474 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20475
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020477}
Jeff Johnson295189b2012-06-20 16:38:30 -070020478/**
20479 @brief WDI_ProcessHalDumpCmdReq
20480 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020481
20482 @param pWDICtx: pointer to the WLAN DAL context
20483 pEventData: pointer to the event information structure
20484
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 @see
20486 @return Result of the function call
20487*/
20488WDI_Status
20489WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020490(
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 WDI_ControlBlockType* pWDICtx,
20492 WDI_EventInfoType* pEventData
20493)
20494{
20495 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20496 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20497 wpt_uint16 usDataOffset = 0;
20498 wpt_uint16 usSendSize = 0;
20499 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020501
20502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 -------------------------------------------------------------------------*/
20505 if (( NULL == pEventData ) ||
20506 ( NULL == pEventData->pEventData) ||
20507 ( NULL == pEventData->pCBfnc ))
20508 {
20509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 }
20514
20515 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20516 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20517
20518 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020527 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020529
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 /*-----------------------------------------------------------------------
20531 Get message buffer
20532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020534 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20535 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20538 {
20539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20540 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20541 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 }
20545
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 wpalMemoryCopy( pSendBuffer+usDataOffset,
20547 &halDumpCmdReqMsg.dumpCmdReqParams,
20548 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020549
20550 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020552
20553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20557 wdiHALDumpCmdRspCb, pEventData->pUserData,
20558 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020559}
20560
20561/**
20562 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 Process hal Dump Command Response from HAL, simply route to HDD
20564
20565 @param pWDICtx: pointer to the WLAN DAL context
20566 pEventData: pointer to the event information structure
20567
Jeff Johnson295189b2012-06-20 16:38:30 -070020568 @see
20569 @return Result of the function call
20570*/
20571WDI_Status
20572WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020573(
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 WDI_ControlBlockType* pWDICtx,
20575 WDI_EventInfoType* pEventData
20576)
20577{
20578 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020579 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20581
20582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020584 -------------------------------------------------------------------------*/
20585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20586 ( NULL == pEventData->pEventData))
20587 {
20588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 }
20593
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595
20596 /*Initialize the WDI Response structure */
20597 wdiHALDumpCmdRsp.usBufferLen = 0;
20598 wdiHALDumpCmdRsp.pBuffer = NULL;
20599
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020600 wpalMemoryCopy( &halDumpCmdRspParams,
20601 pEventData->pEventData,
20602 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020603
20604 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020605 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020606
20607 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020608 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 {
20610 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020611 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20612 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20613
20614 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20615 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020616 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020618
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 /*Notify UMAC*/
20620 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20621
20622 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20623 {
20624 /* Free the allocated buffer */
20625 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20626 }
20627 return WDI_STATUS_SUCCESS;
20628}
20629
20630/*==========================================================================
20631 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020632
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020635==========================================================================*/
20636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 when it wishes to send up a notification like the ones
20639 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020640
Jeff Johnson295189b2012-06-20 16:38:30 -070020641 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020642
20643 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 wctsNotifyCBData: the callback data of the user
20646
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020648
20649 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020650*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020651void
Jeff Johnson295189b2012-06-20 16:38:30 -070020652WDI_NotifyMsgCTSCB
20653(
Jeff Johnsone7245742012-09-05 17:12:55 -070020654 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 WCTS_NotifyEventType wctsEvent,
20656 void* wctsNotifyCBData
20657)
20658{
Jeff Johnsone7245742012-09-05 17:12:55 -070020659 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20661
20662 if (NULL == pWDICtx )
20663 {
20664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 }
20669
20670 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20671 {
20672 /* callback presumably occurred after close */
20673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020674 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 }
20677
20678 if ( WCTS_EVENT_OPEN == wctsEvent )
20679 {
20680 /*Flag must be set atomically as it is checked from incoming request
20681 functions*/
20682 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020684
20685 /*Nothing to do - so try to dequeue any pending request that may have
20686 occurred while we were trying to establish this*/
20687 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 {
20692 /*Flag must be set atomically as it is checked from incoming request
20693 functions*/
20694 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020696
20697 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 wpalMutexRelease(&pWDICtx->wptMutex);
20700
20701 /*Notify that the Control Channel is closed */
20702 wpalEventSet(&pWDICtx->wctsActionEvent);
20703 }
20704
20705}/*WDI_NotifyMsgCTSCB*/
20706
20707
20708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 when it wishes to send up a packet received over the
20711 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020712
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020714
20715 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 pMsg: the packet
20717 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 wctsRxMsgCBData: the callback data of the user
20719
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020721
20722 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020723*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020724void
20725WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020726(
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 void* pMsg,
20729 wpt_uint32 uLen,
20730 void* wctsRxMsgCBData
20731)
20732{
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 tHalMsgHeader *pHalMsgHeader;
20734 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20737
20738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020740 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 ( uLen < sizeof(tHalMsgHeader)))
20743 {
20744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 }
20749
20750 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20751 {
20752 /* callback presumably occurred after close */
20753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020754 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 }
20757
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 context - so no serialization is necessary here
20760 ! - revisit this assumption */
20761
20762 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20763
20764 if ( uLen != pHalMsgHeader->msgLen )
20765 {
20766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20767 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20769 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 }
20771
20772 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20773
20774 /*The message itself starts after the header*/
20775 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20776 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20777 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20778 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20779
20780
20781 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20782 {
20783 /*Stop the timer as the response was received */
20784 /*!UT - check for potential race conditions between stop and response */
20785 wpalTimerStop(&pWDICtx->wptResponseTimer);
20786 }
20787 /* Check if we receive a response message which is not expected */
20788 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20789 {
20790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20791 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20792 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20795 pWDICtx->wdiExpectedResponse);
20796 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa17ef2a62013-08-29 15:27:56 -070020797 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 return;
20799 }
20800
20801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20802 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20803
20804 /*Post response event to the state machine*/
20805 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20806
20807}/*WDI_RXMsgCTSCB*/
20808
20809
20810/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020812========================================================================*/
20813
20814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 @param pWDICtx - pointer to the control block
20819
20820 @return Result of the function call
20821*/
20822WPT_INLINE WDI_Status
20823WDI_CleanCB
20824(
20825 WDI_ControlBlockType* pWDICtx
20826)
20827{
20828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20829
20830 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020832
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020834 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20835 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20836
20837 WDI_ResetAssocSessions( pWDICtx );
20838
20839 return WDI_STATUS_SUCCESS;
20840}/*WDI_CleanCB*/
20841
20842
20843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020845
Jeff Johnsone7245742012-09-05 17:12:55 -070020846
20847 @param pWDICtx: pointer to the WLAN DAL context
20848 pEventData: pointer to the event information structure
20849
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 @see
20851 @return Result of the function call
20852*/
20853WPT_INLINE WDI_Status
20854WDI_ProcessRequest
20855(
20856 WDI_ControlBlockType* pWDICtx,
20857 WDI_EventInfoType* pEventData
20858)
20859{
20860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20861
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 already checked these pointers*/
20864
20865 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20866 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020867 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20869 "Calling request processing function for req %s (%d) %x",
20870 WDI_getReqMsgString(pEventData->wdiRequest),
20871 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20872 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20873 }
20874 else
20875 {
20876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 pEventData->wdiRequest);
20879 return WDI_STATUS_E_NOT_IMPLEMENT;
20880 }
20881}/*WDI_ProcessRequest*/
20882
20883
20884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020885 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 prefixes it with a send message header
20888
20889 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 wdiReqType: type of the request being sent
20891 uBufferLen: message buffer len
20892 pMsgBuffer: resulting allocated buffer
20893 pusDataOffset: offset in the buffer where the caller
20894 can start copying its message data
20895 puBufferSize: the resulting buffer size (offset+buff
20896 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020897
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 @see
20899 @return Result of the function call
20900*/
20901WDI_Status
20902WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020903(
20904 WDI_ControlBlockType* pWDICtx,
20905 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 wpt_uint8** pMsgBuffer,
20908 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 wpt_uint16* pusBufferSize
20910)
20911{
20912 tHalMsgHeader halMsgHeader;
20913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20914
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 again*/
20917
20918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020921 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20923 if ( NULL == *pMsgBuffer )
20924 {
20925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20926 "Unable to allocate message buffer for req %s (%d)",
20927 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020930 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020931 }
20932
20933 /*-------------------------------------------------------------------------
20934 Fill in the message header
20935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020936 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20937 /* Fill msgVersion */
20938#ifdef WLAN_FEATURE_11AC
20939 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020940 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 else
20942#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020943 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020944
Jeff Johnsone7245742012-09-05 17:12:55 -070020945 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20946 *pusDataOffset = sizeof(halMsgHeader);
20947 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20948
20949 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020950}/*WDI_GetMessageBuffer*/
20951
20952
20953/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 the CB
20957
20958 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020960
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 usSendSize size of the buffer to be sent
20962 pRspCb: response callback - save in the WDI
20963 CB
20964 pUserData: user data associated with the
20965 callback
20966 wdiExpectedResponse: the code of the response that is
20967 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020968
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 @see
20970 @return Result of the function call
20971*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020973WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020974(
20975 WDI_ControlBlockType* pWDICtx,
20976 wpt_uint8* pSendBuffer,
20977 wpt_uint32 usSendSize,
20978 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 void* pUserData,
20980 WDI_ResponseEnumType wdiExpectedResponse
20981)
20982{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020983 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020984 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20986
20987 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 ------------------------------------------------------------------------*/
20990 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 pWDICtx->pfncRspCB = pRspCb;
20992 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020993
20994 /*-----------------------------------------------------------------------
20995 Call the CTS to send this message over - free message afterwards
20996 - notify transport failure
20997 Note: CTS is reponsible for freeing the message buffer.
20998 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020999 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21000 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21001 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 "Failed to send message over the bus - catastrophic failure");
21005
Jeff Johnsond13512a2012-07-17 11:42:19 -070021006 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021008 else
21009 {
21010 /* even when message was placed in CTS deferred Q, we will treat it
21011 success but log this info
21012 */
21013 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21014 {
21015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21016 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21017 "response %s (%d)",
21018 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21019 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021020 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021021 }
21022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021023
Jeff Johnsond13512a2012-07-17 11:42:19 -070021024 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 if ( NULL != pWDICtx->wdiReqStatusCB )
21026 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021027 /*Inform originator whether request went through or not*/
21028 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21029 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 pWDICtx->wdiReqStatusCB = NULL;
21031 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021032 callback(wdiStatus, callbackContext);
21033
21034 /*For WDI requests which have registered a request callback,
21035 inform the WDA caller of the same via setting the return value
21036 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21037 end up repeating the functonality in the req callback for the
21038 WDI_STATUS_E_FAILURE case*/
21039 if (wdiStatus == WDI_STATUS_E_FAILURE)
21040 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 }
21042
Jeff Johnsond13512a2012-07-17 11:42:19 -070021043 if ( wdiStatus == WDI_STATUS_SUCCESS )
21044 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 /*Start timer for the expected response */
21046 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021047
21048 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021049 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021050 }
21051 else
21052 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021053 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021054 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21055 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021056
Jeff Johnsond13512a2012-07-17 11:42:19 -070021057 return wdiStatus;
21058
Jeff Johnson295189b2012-06-20 16:38:30 -070021059}/*WDI_SendMsg*/
21060
21061
21062
21063/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021064 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 the bus using the control transport and saves some info
21066 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021067
21068 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 pSendBuffer: buffer to be sent
21070 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021071
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 @see
21073 @return Result of the function call
21074*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021076WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021077(
21078 WDI_ControlBlockType* pWDICtx,
21079 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 wpt_uint32 usSendSize
21081)
21082{
21083 wpt_uint32 uStatus ;
21084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21085
21086 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 Note: CTS is reponsible for freeing the message buffer.
21089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021090 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 (void*)pSendBuffer, usSendSize );
21092
21093 /*Inform Upper MAC about the outcome of the request*/
21094 if ( NULL != pWDICtx->wdiReqStatusCB )
21095 {
21096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21097 "Send indication status : %d", uStatus);
21098
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021099 /* even if CTS placed indication into its deferred Q, we treat it
21100 * as success and let CTS drain its queue as per smd interrupt to CTS
21101 */
21102 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 -070021103 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 }
21105
21106 /*If sending of the message failed - it is considered catastrophic and
21107 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021108 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21109 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21110
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 {
21112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021114
21115 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21116 return WDI_STATUS_E_FAILURE;
21117 }
21118
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021120}/*WDI_SendIndication*/
21121
21122
21123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 @brief WDI_DetectedDeviceError - called internally by DAL when
21125 it has detected a failure in the device
21126
21127 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 usErrorCode: error code detected by WDI or received
21129 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021130
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021132 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021133*/
21134void
21135WDI_DetectedDeviceError
21136(
21137 WDI_ControlBlockType* pWDICtx,
21138 wpt_uint16 usErrorCode
21139)
21140{
21141 WDI_LowLevelIndType wdiInd;
21142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21143
21144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21145 "Device Error detected code: %d - transitioning to stopped state",
21146 usErrorCode);
21147
21148 wpalMutexAcquire(&pWDICtx->wptMutex);
21149
21150 WDI_STATableStop(pWDICtx);
21151
21152 WDI_ResetAssocSessions(pWDICtx);
21153
21154 /*Set the expected state transition to stopped - because the device
21155 experienced a failure*/
21156 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21157
21158 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021160
Jeff Johnsone7245742012-09-05 17:12:55 -070021161 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021162
21163 /*TO DO: - there should be an attempt to reset the device here*/
21164
21165 wpalMutexRelease(&pWDICtx->wptMutex);
21166
21167 /*------------------------------------------------------------------------
21168 Notify UMAC if a handler is registered
21169 ------------------------------------------------------------------------*/
21170 if (pWDICtx->wdiLowLevelIndCB)
21171 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021172 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21173 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174
21175 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21176 }
21177}/*WDI_DetectedDeviceError*/
21178
21179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021180 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 we started on send message has expire - this should
21182 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 reply - trigger catastrophic failure
21184 @param
21185
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021187
21188 @see
21189 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021190*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021191void
Jeff Johnson295189b2012-06-20 16:38:30 -070021192WDI_ResponseTimerCB
21193(
21194 void *pUserData
21195)
21196{
21197 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21199
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021200 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 }
21207
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021208 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021209 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021210
21211 /* If response timer is running at this time that means this timer
21212 * event is not for the last request but rather last-to-last request and
21213 * this timer event has come after we recevied respone for last-to-last
21214 * message
21215 */
21216 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21217 {
21218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21219 "WDI_ResponseTimerCB: timer in running state on timer event, "
21220 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21221 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21222 return;
21223 }
21224
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021225 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 {
21227
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021230 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021232 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21233 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021234
21235 /* WDI timeout means Riva is not responding or SMD communication to Riva
21236 * is not happening. The only possible way to recover from this error
21237 * is to initiate SSR from APPS.
21238 * There is also an option to re-enable wifi, which will eventually
21239 * trigger SSR
21240 */
21241 if (gWDICb.bEnableSSR == false)
21242 {
21243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21244 "SSR is not enabled on WDI timeout");
21245 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21246 return;
21247 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021248#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021249 wpalWcnssResetIntr();
21250 /* if this timer fires, it means Riva did not receive the FIQ */
21251 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021252#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021253 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21254 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021255#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 }
21257 else
21258 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021260 "Timeout occurred but not waiting for any response %d "
21261 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21262 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21263 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 }
21265
21266 return;
21267
21268}/*WDI_ResponseTimerCB*/
21269
21270
21271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021273
Jeff Johnsone7245742012-09-05 17:12:55 -070021274
21275 @param pWDICtx: pointer to the WLAN DAL context
21276 pEventData: pointer to the event information structure
21277
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 @see
21279 @return Result of the function call
21280*/
21281WPT_INLINE WDI_Status
21282WDI_ProcessResponse
21283(
21284 WDI_ControlBlockType* pWDICtx,
21285 WDI_EventInfoType* pEventData
21286)
21287{
21288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21289
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 already checked these pointers
21292 ! - revisit this assumption */
21293 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21294 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 WDI_getRespMsgString(pEventData->wdiResponse),
21299 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21300 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21301 }
21302 else
21303 {
21304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 pEventData->wdiResponse);
21307 return WDI_STATUS_E_NOT_IMPLEMENT;
21308 }
21309}/*WDI_ProcessResponse*/
21310
21311
21312/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021314=========================================================================*/
21315
21316/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 @brief Utility function used by the DAL Core to help queue a
21318 request that cannot be processed right away.
21319 @param
21320
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 pWDICtx: - pointer to the WDI control block
21322 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 queued
21324
21325 @see
21326 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021327*/
21328WDI_Status
21329WDI_QueuePendingReq
21330(
21331 WDI_ControlBlockType* pWDICtx,
21332 WDI_EventInfoType* pEventData
21333)
21334{
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21339
21340 if ( NULL == pEventDataQueue )
21341 {
21342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 WDI_ASSERT(0);
21345 return WDI_STATUS_MEM_FAILURE;
21346 }
21347
21348 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21349 pEventDataQueue->pUserData = pEventData->pUserData;
21350 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21351 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021352 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021353
21354 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21355 {
21356 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021357
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 if ( NULL == pEventInfo )
21359 {
21360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 WDI_ASSERT(0);
21363 wpalMemoryFree(pEventDataQueue);
21364 return WDI_STATUS_MEM_FAILURE;
21365 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021366
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21368
21369 }
21370 pEventDataQueue->pEventData = pEventInfo;
21371
21372 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021373 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021374
Jeff Johnsone7245742012-09-05 17:12:55 -070021375 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021376
21377 return WDI_STATUS_SUCCESS;
21378}/*WDI_QueuePendingReq*/
21379
21380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 @param
21384
21385 pMsg - pointer to the message
21386
21387 @see
21388 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021389*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021390void
Jeff Johnson295189b2012-06-20 16:38:30 -070021391WDI_PALCtrlMsgCB
21392(
21393 wpt_msg *pMsg
21394)
21395{
21396 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021397 WDI_ControlBlockType* pWDICtx = NULL;
21398 WDI_Status wdiStatus;
21399 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 void* pUserData;
21401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21402
21403 if (( NULL == pMsg )||
21404 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21405 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21406 {
21407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021408 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021410 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021411 }
21412
21413 /*Transition back to the state that we had before serialization
21414 - serialization transitions us to BUSY to stop any incomming requests
21415 ! TO DO L: possible race condition here if a request comes in between the
21416 state transition and the post function*/
21417
Jeff Johnsone7245742012-09-05 17:12:55 -070021418 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021419
21420 /*-----------------------------------------------------------------------
21421 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021422 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021423 -----------------------------------------------------------------------*/
21424 switch ( pEventData->wdiRequest )
21425 {
21426
Jeff Johnsone7245742012-09-05 17:12:55 -070021427 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21429 break;
21430
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 case WDI_NV_DOWNLOAD_REQ:
21432 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21433 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21434 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21435 {
21436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021437 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21439 }
21440 else
21441 {
21442 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21443 }
21444
21445 break;
21446
21447 default:
21448 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21449 break;
21450 }/*switch ( pEventData->wdiRequest )*/
21451
21452 if ( WDI_STATUS_SUCCESS != wdiStatus )
21453 {
21454 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21455
21456 if ( NULL != pfnReqStatusCB )
21457 {
21458 /*Fail the request*/
21459 pfnReqStatusCB( wdiStatus, pUserData);
21460 }
21461 }
21462
21463 /* Free data - that was allocated when queueing*/
21464 if( pEventData != NULL )
21465 {
21466 if( pEventData->pEventData != NULL )
21467 {
21468 wpalMemoryFree(pEventData->pEventData);
21469 }
21470 wpalMemoryFree(pEventData);
21471 }
21472
21473 if( pMsg != NULL )
21474 {
21475 wpalMemoryFree(pMsg);
21476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021477
Jeff Johnson295189b2012-06-20 16:38:30 -070021478}/*WDI_PALCtrlMsgCB*/
21479
21480/**
21481 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 and schedule for execution a pending request
21483 @param
21484
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 pWDICtx: - pointer to the WDI control block
21486 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 queued
21488
21489 @see
21490 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021491*/
21492WDI_Status
21493WDI_DequeuePendingReq
21494(
21495 WDI_ControlBlockType* pWDICtx
21496)
21497{
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21502
Jeff Johnsone7245742012-09-05 17:12:55 -070021503 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021504
21505 if ( NULL == pNode )
21506 {
21507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 return WDI_STATUS_SUCCESS;
21510 }
21511
21512 /*The node actually points to the 1st element inside the Event Data struct -
21513 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021515
21516 /*Serialize processing in the control thread
21517 !TO DO: - check to see if these are all the messages params that need
21518 to be filled in*/
21519 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21520
21521 if ( NULL == palMsg )
21522 {
21523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 palMsg->callback = WDI_PALCtrlMsgCB;
21530 palMsg->ptr = pEventData;
21531
21532 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 palMsg->val = pWDICtx->uGlobalState;
21534
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 /*Transition back to BUSY as we need to handle a queued request*/
21536 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021537
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21539
21540 return WDI_STATUS_PENDING;
21541}/*WDI_DequeuePendingReq*/
21542
21543
21544/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 away.- The assoc requests will be queued by BSSID
21548 @param
21549
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 pWDICtx: - pointer to the WDI control block
21551 pEventData: pointer to the evnt info that needs to be queued
21552 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021553
21554 @see
21555 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021556*/
21557WDI_Status
21558WDI_QueueNewAssocRequest
21559(
21560 WDI_ControlBlockType* pWDICtx,
21561 WDI_EventInfoType* pEventData,
21562 wpt_macAddr macBSSID
21563)
21564{
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 wpt_uint8 i;
21566 WDI_BSSSessionType* pSession = NULL;
21567 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021569 void* pEventInfo;
21570 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021572
Jeff Johnsone7245742012-09-05 17:12:55 -070021573
21574 /*------------------------------------------------------------------------
21575 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021576 ------------------------------------------------------------------------*/
21577 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21578 {
21579 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21580 {
21581 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 pSession = &pWDICtx->aBSSSessions[i];
21583 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 }
21585 }
21586
21587 if ( i >= WDI_MAX_BSS_SESSIONS )
21588 {
21589 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021592
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 /*------------------------------------------------------------------------
21594 Fill in the BSSID for this session and set the usage flag
21595 ------------------------------------------------------------------------*/
21596 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021598
21599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021600 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021601 ------------------------------------------------------------------------*/
21602 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21603 if ( NULL == pEventDataQueue )
21604 {
21605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021606 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 WDI_ASSERT(0);
21608 return WDI_STATUS_MEM_FAILURE;
21609 }
21610
21611 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21612 if ( NULL == pSessionIdElement )
21613 {
21614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021615 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 WDI_ASSERT(0);
21617 wpalMemoryFree(pEventDataQueue);
21618 return WDI_STATUS_MEM_FAILURE;
21619 }
21620
21621 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21622 if ( NULL == pEventInfo )
21623 {
21624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021625 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 WDI_ASSERT(0);
21627 wpalMemoryFree(pSessionIdElement);
21628 wpalMemoryFree(pEventDataQueue);
21629 return WDI_STATUS_MEM_FAILURE;
21630 }
21631
21632 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21633 pEventDataQueue->pUserData = pEventData->pUserData;
21634 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21635 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021637
21638 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21639 pEventDataQueue->pEventData = pEventInfo;
21640
21641 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021642 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021643
21644 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021646
Jeff Johnsone7245742012-09-05 17:12:55 -070021647 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021648
21649 /*We need to maintain a separate list that keeps track of the order in which
21650 the new assoc requests are being queued such that we can start processing
21651 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 pSessionIdElement->ucIndex = i;
21653 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021654
21655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21656 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021658
21659 /*Return pending as this is what the status of the request is since it has
21660 been queued*/
21661 return WDI_STATUS_PENDING;
21662}/*WDI_QueueNewAssocRequest*/
21663
21664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021667 away.- The assoc requests will be queued by BSSID
21668 @param
21669
Jeff Johnson295189b2012-06-20 16:38:30 -070021670 pWDICtx: - pointer to the WDI control block
21671 pSession: - session in which to queue
21672 pEventData: pointer to the event info that needs to be
21673 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021674
21675 @see
21676 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021677*/
21678WDI_Status
21679WDI_QueueAssocRequest
21680(
21681 WDI_ControlBlockType* pWDICtx,
21682 WDI_BSSSessionType* pSession,
21683 WDI_EventInfoType* pEventData
21684)
21685{
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021690
21691 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 Sanity check
21693 ------------------------------------------------------------------------*/
21694 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21695 {
21696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021698
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 }
21701
21702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021704 ------------------------------------------------------------------------*/
21705 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21706 if ( NULL == pEventDataQueue )
21707 {
21708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021709 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 WDI_ASSERT(0);
21711 return WDI_STATUS_MEM_FAILURE;
21712 }
21713
21714 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21715 if ( NULL == pEventInfo )
21716 {
21717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21718 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021719 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 WDI_ASSERT(0);
21721 wpalMemoryFree(pEventDataQueue);
21722 return WDI_STATUS_MEM_FAILURE;
21723 }
21724
21725 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21726 pEventDataQueue->pUserData = pEventData->pUserData;
21727 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21728 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 pEventDataQueue->pEventData = pEventInfo;
21731
21732 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21733
21734 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021736
21737 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021739
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021741
21742 /*The result of this operation is pending because the request has been
21743 queued and it will be processed at a later moment in time */
21744 return WDI_STATUS_PENDING;
21745}/*WDI_QueueAssocRequest*/
21746
21747/**
21748 @brief Utility function used by the DAL Core to help dequeue
21749 an association request that was pending
21750 The request will be queued up in front of the main
21751 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 @param
21753
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021755
21756
21757 @see
21758 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021759*/
21760WDI_Status
21761WDI_DequeueAssocRequest
21762(
21763 WDI_ControlBlockType* pWDICtx
21764)
21765{
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 wpt_list_node* pNode = NULL;
21767 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 WDI_BSSSessionType* pSession;
21769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021770
21771 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 Sanity check
21773 ------------------------------------------------------------------------*/
21774 if ( NULL == pWDICtx )
21775 {
21776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021778
Jeff Johnsone7245742012-09-05 17:12:55 -070021779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 }
21781
21782 /*------------------------------------------------------------------------
21783 An association has been completed => a new association can occur
21784 Check to see if there are any pending associations ->
21785 If so , transfer all the pending requests into the busy queue for
21786 processing
21787 These requests have arrived prior to the requests in the busy queue
21788 (bc they needed to be processed in order to be placed in this queue)
21789 => they will be placed at the front of the busy queue
21790 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021791 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021792
21793 if ( NULL == pNode )
21794 {
21795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021796 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 return WDI_STATUS_SUCCESS;
21798 }
21799
21800 /*The node actually points to the 1st element inside the Session Id struct -
21801 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021803
21804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21805 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21806
21807 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21808 {
21809 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021810
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 the front of the main waiting queue for subsequent execution*/
21813 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 while ( NULL != pNode )
21815 {
21816 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021817 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21818 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 }
21822 else
21823 {
21824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 WPAL_ASSERT(0);
21827 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021830
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21832 wpalMemoryFree(pSessionIdElement);
21833 return WDI_STATUS_SUCCESS;
21834}/*WDI_DequeueAssocRequest*/
21835
21836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 pending requests - all req cb will be called with
21839 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 @param
21841
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021843
21844 @see
21845 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021846*/
21847WDI_Status
21848WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021849(
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 WDI_ControlBlockType* pWDICtx
21851)
21852{
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 void* pUserData;
21857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21858
Jeff Johnsone7245742012-09-05 17:12:55 -070021859 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021860
21861 /*------------------------------------------------------------------------
21862 Go through all the requests and fail them - this will only be called
21863 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021864 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021865 ------------------------------------------------------------------------*/
21866 while( pNode )
21867 {
21868 /*The node actually points to the 1st element inside the Event Data struct -
21869 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021870 pEventDataQueue = (WDI_EventInfoType*)pNode;
21871
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21873 if ( NULL != pfnReqStatusCB )
21874 {
21875 /*Fail the request*/
21876 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21877 }
21878 /* Free data - that was allocated when queueing */
21879 if ( pEventDataQueue->pEventData != NULL )
21880 {
21881 wpalMemoryFree(pEventDataQueue->pEventData);
21882 }
21883 wpalMemoryFree(pEventDataQueue);
21884
21885 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21886 {
21887 break;
21888 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021889 }
21890
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 return WDI_STATUS_SUCCESS;
21892}/*WDI_ClearPendingRequests*/
21893
21894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 @brief Helper routine used to init the BSS Sessions in the WDI control block
21896
21897
21898 @param pWDICtx: pointer to the WLAN DAL context
21899
Jeff Johnson295189b2012-06-20 16:38:30 -070021900 @see
21901*/
21902void
21903WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021904(
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 WDI_ControlBlockType* pWDICtx
21906)
21907{
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21910
21911 /*-------------------------------------------------------------------------
21912 No Sanity check
21913 -------------------------------------------------------------------------*/
21914 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21915 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21918 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21919 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21920 }
21921}/*WDI_ResetAssocSessions*/
21922
21923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 @brief Helper routine used to find a session based on the BSSID
21925
21926
21927 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 pSession: pointer to the session (if found)
21930
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021933*/
21934wpt_uint8
21935WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021936(
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 WDI_ControlBlockType* pWDICtx,
21938 wpt_macAddr macBSSID,
21939 WDI_BSSSessionType** ppSession
21940)
21941{
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21944
21945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 -------------------------------------------------------------------------*/
21948 if ( NULL == ppSession )
21949 {
21950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021951 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 }
21954
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021956
Jeff Johnsone7245742012-09-05 17:12:55 -070021957 /*------------------------------------------------------------------------
21958 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 ------------------------------------------------------------------------*/
21960 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21961 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021962 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21963 (eWLAN_PAL_TRUE ==
21964 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21965 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021966 {
21967 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 return i;
21970 }
21971 }
21972
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021974}/*WDI_FindAssocSession*/
21975
21976/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 @brief Helper routine used to find a session based on the BSSID
21978
21979
21980 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 ucBSSIdx: BSS Index of the session
21982 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021983
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021986*/
21987wpt_uint8
21988WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021989(
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 WDI_ControlBlockType* pWDICtx,
21991 wpt_uint16 ucBSSIdx,
21992 WDI_BSSSessionType** ppSession
21993)
21994{
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21997
21998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022000 -------------------------------------------------------------------------*/
22001 if ( NULL == ppSession )
22002 {
22003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022004 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 }
22007
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022009
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 /*------------------------------------------------------------------------
22011 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 ------------------------------------------------------------------------*/
22013 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22014 {
22015 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22016 {
22017 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022018 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022019 return i;
22020 }
22021 }
22022
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022024}/*WDI_FindAssocSessionByBSSIdx*/
22025
22026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 @brief Helper routine used to find a session based on the BSSID
22028
22029
22030 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 ucBSSIdx: BSS Index of the session
22032 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022033
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022036*/
22037wpt_uint8
22038WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022039(
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 WDI_ControlBlockType* pWDICtx,
22041 wpt_uint16 usIdx,
22042 WDI_BSSSessionType** ppSession
22043)
22044{
22045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22046
22047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022049 -------------------------------------------------------------------------*/
22050 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22051 {
22052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022053 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 }
22056
22057 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022059
22060 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022061
Jeff Johnson295189b2012-06-20 16:38:30 -070022062}/*WDI_FindAssocSessionByBSSIdx*/
22063
22064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022067
22068
22069 @param pWDICtx: pointer to the WLAN DAL context
22070 pSession: pointer to the session (if found)
22071
Jeff Johnson295189b2012-06-20 16:38:30 -070022072 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022074*/
22075wpt_uint8
22076WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022077(
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 WDI_ControlBlockType* pWDICtx,
22079 WDI_BSSSessionType** ppSession
22080)
22081{
Jeff Johnsone7245742012-09-05 17:12:55 -070022082 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 -------------------------------------------------------------------------*/
22087 if ( NULL == ppSession )
22088 {
22089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022090 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 }
22093
Jeff Johnsone7245742012-09-05 17:12:55 -070022094 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022095
Jeff Johnsone7245742012-09-05 17:12:55 -070022096 /*------------------------------------------------------------------------
22097 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 ------------------------------------------------------------------------*/
22099 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22100 {
22101 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22102 {
22103 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 return i;
22106 }
22107 }
22108
Jeff Johnsone7245742012-09-05 17:12:55 -070022109 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022110}/*WDI_FindEmptySession*/
22111
22112
22113/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022116
22117
22118 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022119 macBSSID: pointer to BSSID. If NULL, get all the session.
22120 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22121 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22122 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 @see
22124 @return Number of sessions in use
22125*/
22126wpt_uint8
22127WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022128(
Hoonki Lee26599972013-04-24 01:21:58 -070022129 WDI_ControlBlockType* pWDICtx,
22130 wpt_macAddr macBSSID,
22131 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022132)
22133{
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022136
22137 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 Count all sessions in use
22139 ------------------------------------------------------------------------*/
22140 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22141 {
Hoonki Lee26599972013-04-24 01:21:58 -070022142 if ( macBSSID && skipBSSID &&
22143 (eWLAN_PAL_TRUE ==
22144 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22145 WDI_MAC_ADDR_LEN)))
22146 {
22147 continue;
22148 }
22149 else if ( pWDICtx->aBSSSessions[i].bInUse )
22150 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022152 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 }
22154
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022156}/*WDI_GetActiveSessionsCount*/
22157
22158/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022161
22162
22163 @param pWDICtx: pointer to the WLAN DAL context
22164 pSession: pointer to the session (if found)
22165
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022168*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022169void
Jeff Johnson295189b2012-06-20 16:38:30 -070022170WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022171(
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 WDI_ControlBlockType* pWDICtx,
22173 WDI_BSSSessionType* ppSession
22174)
22175{
22176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 -------------------------------------------------------------------------*/
22179 if ( NULL == ppSession )
22180 {
22181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022182 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 }
22185
Jeff Johnsone7245742012-09-05 17:12:55 -070022186 /*------------------------------------------------------------------------
22187 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 ------------------------------------------------------------------------*/
22189 wpal_list_destroy(&ppSession->wptPendingQueue);
22190 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22192 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22194 wpal_list_init(&ppSession->wptPendingQueue);
22195
22196}/*WDI_DeleteSession*/
22197
22198/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 @param
22202
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 WDI_AddStaParams: - pointer to the WDI Add STA params
22204 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022205
22206 @see
22207 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022208*/
22209void
22210WDI_AddBcastSTAtoSTATable
22211(
22212 WDI_ControlBlockType* pWDICtx,
22213 WDI_AddStaParams * staParams,
22214 wpt_uint16 usBcastStaIdx
22215)
22216{
22217 WDI_AddStaParams wdiAddSTAParam = {0};
22218 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22220
22221 /*---------------------------------------------------------------------
22222 Sanity check
22223 ---------------------------------------------------------------------*/
22224 if ( NULL == staParams )
22225 {
22226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022228
Jeff Johnsone7245742012-09-05 17:12:55 -070022229 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022230 }
22231
22232 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22233 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22234 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22235 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22236 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22237 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22238 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22239 WDI_MAC_ADDR_LEN );
22240 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22241 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22242 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22243 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22244 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22245 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22246 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022247
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22249}
22250
22251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 @brief NV blob will be divided into fragments of size 4kb and
22253 Sent to HAL
22254
22255 @param pWDICtx: pointer to the WLAN DAL context
22256 pEventData: pointer to the event information structure
22257
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 @see
22259 @return Result of the function call
22260 */
22261
22262WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022263(
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 WDI_ControlBlockType* pWDICtx,
22265 WDI_EventInfoType* pEventData
22266)
22267{
22268
22269 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22270 wpt_uint8* pSendBuffer = NULL;
22271 wpt_uint16 usDataOffset = 0;
22272 wpt_uint16 usSendSize = 0;
22273 wpt_uint16 usCurrentFragmentSize =0;
22274 wpt_uint8* pSrcBuffer = NULL;
22275 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22276 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22277
22278 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22279 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22280 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22281
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22284
22285 /* Update the current Fragment Number */
22286 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22287
22288 /*Update the HAL REQ structure */
22289 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22290 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22291 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22292
22293 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 image will be sent to HAL*/
22296
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022301 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022302 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22303 usCurrentFragmentSize = FRAGMENT_SIZE;
22304
22305 /*Update the HAL REQ structure */
22306 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22307 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22308
22309 }
22310 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022312 usCurrentFragmentSize = FRAGMENT_SIZE;
22313
22314 /*Update the HAL REQ structure */
22315 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22316 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22317 }
22318
22319 /*-----------------------------------------------------------------------
22320 Get message buffer
22321 -----------------------------------------------------------------------*/
22322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22323 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22324 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22327 {
22328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22329 "Unable to get send buffer in NV Download req %x %x ",
22330 pEventData, pwdiNvDownloadReqParams);
22331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 }
22334
22335 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22338
22339 /* Appending the NV image fragment */
22340 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22341 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22342 usCurrentFragmentSize);
22343
22344 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022346
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22348 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022349 WDI_NV_DOWNLOAD_RESP);
22350
22351}
Jeff Johnsone7245742012-09-05 17:12:55 -070022352/*============================================================================
22353 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 ============================================================================*/
22355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 @brief Helper routine used to find a session based on the BSSID
22357 @param pContext: pointer to the WLAN DAL context
22358 @param pDPContext: pointer to the Datapath context
22359
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022362*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022363WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022364WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22365{
22366 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22367
22368 pCB->pDPContext = pDPContext;
22369 return;
22370}
22371
22372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 @brief Helper routine used to find a session based on the BSSID
22374
22375
22376 @param pContext: pointer to the WLAN DAL context
22377
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 @see
22379 @return pointer to Datapath context
22380*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022381WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022382WDI_DS_GetDatapathContext (void *pContext)
22383{
22384 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22385 return pCB->pDPContext;
22386}
22387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 @brief Helper routine used to find a session based on the BSSID
22389
22390
22391 @param pContext: pointer to the WLAN DAL context
22392 @param pDTDriverContext: pointer to the Transport Driver context
22393
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 @see
22395 @return void
22396*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022397WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022398WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22399{
22400 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22401
22402 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404}
22405
22406/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 @brief Helper routine used to find a session based on the BSSID
22408
22409
22410 @param pWDICtx: pointer to the WLAN DAL context
22411
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022414*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022415WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022416WDT_GetTransportDriverContext (void *pContext)
22417{
22418 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022420}
22421
Jeff Johnsone7245742012-09-05 17:12:55 -070022422/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 Helper inline converters
22424 ============================================================================*/
22425/*Convert WDI driver type into HAL driver type*/
22426WPT_STATIC WPT_INLINE WDI_Status
22427WDI_HAL_2_WDI_STATUS
22428(
22429 eHalStatus halStatus
22430)
22431{
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 the chances of getting inlined*/
22434 switch( halStatus )
22435 {
22436 case eHAL_STATUS_SUCCESS:
22437 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22438 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22439 return WDI_STATUS_SUCCESS;
22440 case eHAL_STATUS_FAILURE:
22441 return WDI_STATUS_E_FAILURE;
22442 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 return WDI_STATUS_MEM_FAILURE;
22444 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 default:
22447 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022449
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022451}/*WDI_HAL_2_WDI_STATUS*/
22452
22453/*Convert WDI request type into HAL request type*/
22454WPT_STATIC WPT_INLINE tHalHostMsgType
22455WDI_2_HAL_REQ_TYPE
22456(
22457 WDI_RequestEnumType wdiReqType
22458)
22459{
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 the chances of getting inlined*/
22462 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022465 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022495 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022497 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 return WLAN_HAL_RMV_STAKEY_REQ;
22499 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022501 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022506 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 case WDI_DEL_BA_REQ:
22508 return WLAN_HAL_DEL_BA_REQ;
22509#ifdef FEATURE_WLAN_CCX
22510 case WDI_TSM_STATS_REQ:
22511 return WLAN_HAL_TSM_STATS_REQ;
22512#endif
22513 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 case WDI_ADD_BA_SESSION_REQ:
22524 return WLAN_HAL_ADD_BA_SESSION_REQ;
22525 case WDI_TRIGGER_BA_REQ:
22526 return WLAN_HAL_TRIGGER_BA_REQ;
22527 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022530 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022531 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22532 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22533 case WDI_SET_MAX_TX_POWER_REQ:
22534 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022535 case WDI_SET_TX_POWER_REQ:
22536 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22538 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022539#ifdef FEATURE_WLAN_TDLS
22540 case WDI_TDLS_LINK_ESTABLISH_REQ:
22541 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22542#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022554 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 case WDI_REM_BEACON_FILTER_REQ:
22564 return WLAN_HAL_REM_BCN_FILTER_REQ;
22565 case WDI_SET_RSSI_THRESHOLDS_REQ:
22566 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22567 case WDI_HOST_OFFLOAD_REQ:
22568 return WLAN_HAL_HOST_OFFLOAD_REQ;
22569 case WDI_WOWL_ADD_BC_PTRN_REQ:
22570 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22571 case WDI_WOWL_DEL_BC_PTRN_REQ:
22572 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22573 case WDI_WOWL_ENTER_REQ:
22574 return WLAN_HAL_ENTER_WOWL_REQ;
22575 case WDI_WOWL_EXIT_REQ:
22576 return WLAN_HAL_EXIT_WOWL_REQ;
22577 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22578 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22579 case WDI_NV_DOWNLOAD_REQ:
22580 return WLAN_HAL_DOWNLOAD_NV_REQ;
22581 case WDI_FLUSH_AC_REQ:
22582 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22583 case WDI_BTAMP_EVENT_REQ:
22584 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22585#ifdef WLAN_FEATURE_VOWIFI_11R
22586 case WDI_AGGR_ADD_TS_REQ:
22587 return WLAN_HAL_AGGR_ADD_TS_REQ;
22588#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022589 case WDI_FTM_CMD_REQ:
22590 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 case WDI_ADD_STA_SELF_REQ:
22592 return WLAN_HAL_ADD_STA_SELF_REQ;
22593 case WDI_DEL_STA_SELF_REQ:
22594 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022595#ifdef FEATURE_OEM_DATA_SUPPORT
22596 case WDI_START_OEM_DATA_REQ:
22597 return WLAN_HAL_START_OEM_DATA_REQ;
22598#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 case WDI_HOST_RESUME_REQ:
22600 return WLAN_HAL_HOST_RESUME_REQ;
22601 case WDI_HOST_SUSPEND_IND:
22602 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022603 case WDI_TRAFFIC_STATS_IND:
22604 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022605#ifdef WLAN_FEATURE_11W
22606 case WDI_EXCLUDE_UNENCRYPTED_IND:
22607 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22608#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 case WDI_KEEP_ALIVE_REQ:
22610 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022611#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022612 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22613 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022614#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022615#ifdef FEATURE_WLAN_SCAN_PNO
22616 case WDI_SET_PREF_NETWORK_REQ:
22617 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22618 case WDI_SET_RSSI_FILTER_REQ:
22619 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22620 case WDI_UPDATE_SCAN_PARAMS_REQ:
22621 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22622#endif // FEATURE_WLAN_SCAN_PNO
22623 case WDI_SET_TX_PER_TRACKING_REQ:
22624 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22625#ifdef WLAN_FEATURE_PACKET_FILTERING
22626 case WDI_8023_MULTICAST_LIST_REQ:
22627 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22628 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022629 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022630 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22631 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22632 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22633 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22634#endif // WLAN_FEATURE_PACKET_FILTERING
22635 case WDI_HAL_DUMP_CMD_REQ:
22636 return WLAN_HAL_DUMP_COMMAND_REQ;
22637#ifdef WLAN_FEATURE_GTK_OFFLOAD
22638 case WDI_GTK_OFFLOAD_REQ:
22639 return WLAN_HAL_GTK_OFFLOAD_REQ;
22640 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22641 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22642#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22643
22644 case WDI_INIT_SCAN_CON_REQ:
22645 return WLAN_HAL_INIT_SCAN_CON_REQ;
22646 case WDI_SET_POWER_PARAMS_REQ:
22647 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22648 case WDI_SET_TM_LEVEL_REQ:
22649 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22650 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22651 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022652#ifdef WLAN_FEATURE_11AC
22653 case WDI_UPDATE_VHT_OP_MODE_REQ:
22654 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22655#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022656 case WDI_GET_ROAM_RSSI_REQ:
22657 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022658 case WDI_DHCP_START_IND:
22659 return WLAN_HAL_DHCP_START_IND;
22660 case WDI_DHCP_STOP_IND:
22661 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022662#ifdef FEATURE_WLAN_LPHB
22663 case WDI_LPHB_CFG_REQ:
22664 return WLAN_HAL_LPHB_CFG_REQ;
22665#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022666 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22667 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22668 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22669 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22670
Rajeev3db91f12013-10-05 11:03:42 +053022671#ifdef FEATURE_WLAN_BATCH_SCAN
22672 case WDI_SET_BATCH_SCAN_REQ:
22673 return WLAN_HAL_BATCHSCAN_SET_REQ;
22674 case WDI_STOP_BATCH_SCAN_IND:
22675 return WLAN_HAL_BATCHSCAN_STOP_IND;
22676 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22677 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22678#endif
22679
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022681 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022683
Jeff Johnson295189b2012-06-20 16:38:30 -070022684}/*WDI_2_HAL_REQ_TYPE*/
22685
22686/*Convert WDI response type into HAL response type*/
22687WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22688HAL_2_WDI_RSP_TYPE
22689(
22690 tHalHostMsgType halMsg
22691)
22692{
Jeff Johnsone7245742012-09-05 17:12:55 -070022693 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022694 the chances of getting inlined*/
22695 switch( halMsg )
22696 {
22697 case WLAN_HAL_START_RSP:
22698 return WDI_START_RESP;
22699 case WLAN_HAL_STOP_RSP:
22700 return WDI_STOP_RESP;
22701 case WLAN_HAL_INIT_SCAN_RSP:
22702 return WDI_INIT_SCAN_RESP;
22703 case WLAN_HAL_START_SCAN_RSP:
22704 return WDI_START_SCAN_RESP;
22705 case WLAN_HAL_END_SCAN_RSP:
22706 return WDI_END_SCAN_RESP;
22707 case WLAN_HAL_FINISH_SCAN_RSP:
22708 return WDI_FINISH_SCAN_RESP;
22709 case WLAN_HAL_CONFIG_STA_RSP:
22710 return WDI_CONFIG_STA_RESP;
22711 case WLAN_HAL_DELETE_STA_RSP:
22712 return WDI_DEL_STA_RESP;
22713 case WLAN_HAL_CONFIG_BSS_RSP:
22714 return WDI_CONFIG_BSS_RESP;
22715 case WLAN_HAL_DELETE_BSS_RSP:
22716 return WDI_DEL_BSS_RESP;
22717 case WLAN_HAL_JOIN_RSP:
22718 return WDI_JOIN_RESP;
22719 case WLAN_HAL_POST_ASSOC_RSP:
22720 return WDI_POST_ASSOC_RESP;
22721 case WLAN_HAL_SET_BSSKEY_RSP:
22722 return WDI_SET_BSS_KEY_RESP;
22723 case WLAN_HAL_SET_STAKEY_RSP:
22724 return WDI_SET_STA_KEY_RESP;
22725 case WLAN_HAL_RMV_BSSKEY_RSP:
22726 return WDI_RMV_BSS_KEY_RESP;
22727 case WLAN_HAL_RMV_STAKEY_RSP:
22728 return WDI_RMV_STA_KEY_RESP;
22729 case WLAN_HAL_SET_BCASTKEY_RSP:
22730 return WDI_SET_STA_BCAST_KEY_RESP;
22731 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22732 // return WDI_RMV_STA_BCAST_KEY_RESP;
22733 case WLAN_HAL_ADD_TS_RSP:
22734 return WDI_ADD_TS_RESP;
22735 case WLAN_HAL_DEL_TS_RSP:
22736 return WDI_DEL_TS_RESP;
22737 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22738 return WDI_UPD_EDCA_PRMS_RESP;
22739 case WLAN_HAL_ADD_BA_RSP:
22740 return WDI_ADD_BA_RESP;
22741 case WLAN_HAL_DEL_BA_RSP:
22742 return WDI_DEL_BA_RESP;
22743#ifdef FEATURE_WLAN_CCX
22744 case WLAN_HAL_TSM_STATS_RSP:
22745 return WDI_TSM_STATS_RESP;
22746#endif
22747 case WLAN_HAL_CH_SWITCH_RSP:
22748 return WDI_CH_SWITCH_RESP;
22749 case WLAN_HAL_SET_LINK_ST_RSP:
22750 return WDI_SET_LINK_ST_RESP;
22751 case WLAN_HAL_GET_STATS_RSP:
22752 return WDI_GET_STATS_RESP;
22753 case WLAN_HAL_UPDATE_CFG_RSP:
22754 return WDI_UPDATE_CFG_RESP;
22755 case WLAN_HAL_ADD_BA_SESSION_RSP:
22756 return WDI_ADD_BA_SESSION_RESP;
22757 case WLAN_HAL_TRIGGER_BA_RSP:
22758 return WDI_TRIGGER_BA_RESP;
22759 case WLAN_HAL_UPDATE_BEACON_RSP:
22760 return WDI_UPD_BCON_PRMS_RESP;
22761 case WLAN_HAL_SEND_BEACON_RSP:
22762 return WDI_SND_BCON_RESP;
22763 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22764 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22765 /*Indications*/
22766 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22767 return WDI_HAL_RSSI_NOTIFICATION_IND;
22768 case WLAN_HAL_MISSED_BEACON_IND:
22769 return WDI_HAL_MISSED_BEACON_IND;
22770 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22771 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22772 case WLAN_HAL_MIC_FAILURE_IND:
22773 return WDI_HAL_MIC_FAILURE_IND;
22774 case WLAN_HAL_FATAL_ERROR_IND:
22775 return WDI_HAL_FATAL_ERROR_IND;
22776 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22777 return WDI_HAL_DEL_STA_IND;
22778 case WLAN_HAL_COEX_IND:
22779 return WDI_HAL_COEX_IND;
22780 case WLAN_HAL_OTA_TX_COMPL_IND:
22781 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 case WLAN_HAL_P2P_NOA_ATTR_IND:
22783 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022784 case WLAN_HAL_P2P_NOA_START_IND:
22785 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 case WLAN_HAL_TX_PER_HIT_IND:
22787 return WDI_HAL_TX_PER_HIT_IND;
22788 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22789 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022790 case WLAN_HAL_SET_TX_POWER_RSP:
22791 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 case WLAN_HAL_SET_P2P_GONOA_RSP:
22793 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022794#ifdef FEATURE_WLAN_TDLS
22795 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22796 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22797 case WLAN_HAL_TDLS_IND:
22798 return WDI_HAL_TDLS_IND;
22799#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022801 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022802 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022807 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022808 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022817 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22819 return WDI_SET_BEACON_FILTER_RESP;
22820 case WLAN_HAL_REM_BCN_FILTER_RSP:
22821 return WDI_REM_BEACON_FILTER_RESP;
22822 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22823 return WDI_SET_RSSI_THRESHOLDS_RESP;
22824 case WLAN_HAL_HOST_OFFLOAD_RSP:
22825 return WDI_HOST_OFFLOAD_RESP;
22826 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22827 return WDI_WOWL_ADD_BC_PTRN_RESP;
22828 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22829 return WDI_WOWL_DEL_BC_PTRN_RESP;
22830 case WLAN_HAL_ENTER_WOWL_RSP:
22831 return WDI_WOWL_ENTER_RESP;
22832 case WLAN_HAL_EXIT_WOWL_RSP:
22833 return WDI_WOWL_EXIT_RESP;
22834 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22835 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22836 case WLAN_HAL_DOWNLOAD_NV_RSP:
22837 return WDI_NV_DOWNLOAD_RESP;
22838 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22839 return WDI_FLUSH_AC_RESP;
22840 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22841 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 case WLAN_HAL_PROCESS_PTT_RSP:
22843 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022844 case WLAN_HAL_ADD_STA_SELF_RSP:
22845 return WDI_ADD_STA_SELF_RESP;
22846case WLAN_HAL_DEL_STA_SELF_RSP:
22847 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022848#ifdef FEATURE_OEM_DATA_SUPPORT
22849 case WLAN_HAL_START_OEM_DATA_RSP:
22850 return WDI_START_OEM_DATA_RESP;
22851#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 case WLAN_HAL_HOST_RESUME_RSP:
22853 return WDI_HOST_RESUME_RESP;
22854 case WLAN_HAL_KEEP_ALIVE_RSP:
22855 return WDI_KEEP_ALIVE_RESP;
22856#ifdef FEATURE_WLAN_SCAN_PNO
22857 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22858 return WDI_SET_PREF_NETWORK_RESP;
22859 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22862 return WDI_UPDATE_SCAN_PARAMS_RESP;
22863 case WLAN_HAL_PREF_NETW_FOUND_IND:
22864 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22865#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022866#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022867 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22868 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022869#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022870 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22871 return WDI_SET_TX_PER_TRACKING_RESP;
22872#ifdef WLAN_FEATURE_PACKET_FILTERING
22873 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22874 return WDI_8023_MULTICAST_LIST_RESP;
22875 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22876 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22877 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22878 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22879 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22880 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22881#endif // WLAN_FEATURE_PACKET_FILTERING
22882
22883 case WLAN_HAL_DUMP_COMMAND_RSP:
22884 return WDI_HAL_DUMP_CMD_RESP;
22885 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22886 return WDI_SET_POWER_PARAMS_RESP;
22887#ifdef WLAN_FEATURE_VOWIFI_11R
22888 case WLAN_HAL_AGGR_ADD_TS_RSP:
22889 return WDI_AGGR_ADD_TS_RESP;
22890#endif
22891
22892#ifdef WLAN_FEATURE_GTK_OFFLOAD
22893 case WLAN_HAL_GTK_OFFLOAD_RSP:
22894 return WDI_GTK_OFFLOAD_RESP;
22895 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22896 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22897#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22898#ifdef WLAN_WAKEUP_EVENTS
22899 case WLAN_HAL_WAKE_REASON_IND:
22900 return WDI_HAL_WAKE_REASON_IND;
22901#endif // WLAN_WAKEUP_EVENTS
22902
22903 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22904 return WDI_SET_TM_LEVEL_RESP;
22905 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22906 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022907#ifdef WLAN_FEATURE_11AC
22908 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22909 return WDI_UPDATE_VHT_OP_MODE_RESP;
22910#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022911#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22912 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22913 return WDI_GET_ROAM_RSSI_RESP;
22914#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022915
Leo Chang00bc9132013-08-01 19:21:11 -070022916#ifdef FEATURE_WLAN_LPHB
22917 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070022918 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022919 case WLAN_HAL_LPHB_CFG_RSP:
22920 return WDI_LPHB_CFG_RESP;
22921#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022922
22923 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22924 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022925 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22926 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022927
Rajeev3db91f12013-10-05 11:03:42 +053022928#ifdef FEATURE_WLAN_BATCH_SCAN
22929 case WLAN_HAL_BATCHSCAN_SET_RSP:
22930 return WDI_SET_BATCH_SCAN_RESP;
22931 case WLAN_HAL_BATCHSCAN_RESULT_IND:
22932 return WDI_BATCHSCAN_RESULT_IND;
22933#endif // FEATURE_WLAN_BATCH_SCAN
22934
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 }
22938
22939}/*HAL_2_WDI_RSP_TYPE*/
22940
22941
22942/*Convert WDI driver type into HAL driver type*/
22943WPT_STATIC WPT_INLINE tDriverType
22944WDI_2_HAL_DRV_TYPE
22945(
22946 WDI_DriverType wdiDriverType
22947)
22948{
Jeff Johnsone7245742012-09-05 17:12:55 -070022949 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 the chances of getting inlined*/
22951 switch( wdiDriverType )
22952 {
22953 case WDI_DRIVER_TYPE_PRODUCTION:
22954 return eDRIVER_TYPE_PRODUCTION;
22955 case WDI_DRIVER_TYPE_MFG:
22956 return eDRIVER_TYPE_MFG;
22957 case WDI_DRIVER_TYPE_DVT:
22958 return eDRIVER_TYPE_DVT;
22959 }
22960
Jeff Johnsone7245742012-09-05 17:12:55 -070022961 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022962}/*WDI_2_HAL_DRV_TYPE*/
22963
22964
22965/*Convert WDI stop reason into HAL stop reason*/
22966WPT_STATIC WPT_INLINE tHalStopType
22967WDI_2_HAL_STOP_REASON
22968(
22969 WDI_StopType wdiDriverType
22970)
22971{
Jeff Johnsone7245742012-09-05 17:12:55 -070022972 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 the chances of getting inlined*/
22974 switch( wdiDriverType )
22975 {
22976 case WDI_STOP_TYPE_SYS_RESET:
22977 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022978 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22979 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 case WDI_STOP_TYPE_RF_KILL:
22981 return HAL_STOP_TYPE_RF_KILL;
22982 }
22983
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022985}/*WDI_2_HAL_STOP_REASON*/
22986
22987
22988/*Convert WDI scan mode type into HAL scan mode type*/
22989WPT_STATIC WPT_INLINE eHalSysMode
22990WDI_2_HAL_SCAN_MODE
22991(
22992 WDI_ScanMode wdiScanMode
22993)
22994{
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 the chances of getting inlined*/
22997 switch( wdiScanMode )
22998 {
22999 case WDI_SCAN_MODE_NORMAL:
23000 return eHAL_SYS_MODE_NORMAL;
23001 case WDI_SCAN_MODE_LEARN:
23002 return eHAL_SYS_MODE_LEARN;
23003 case WDI_SCAN_MODE_SCAN:
23004 return eHAL_SYS_MODE_SCAN;
23005 case WDI_SCAN_MODE_PROMISC:
23006 return eHAL_SYS_MODE_PROMISC;
23007 case WDI_SCAN_MODE_SUSPEND_LINK:
23008 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023009 case WDI_SCAN_MODE_ROAM_SCAN:
23010 return eHAL_SYS_MODE_ROAM_SCAN;
23011 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23012 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023013 }
23014
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016}/*WDI_2_HAL_SCAN_MODE*/
23017
23018/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023019WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023020WDI_2_HAL_SEC_CH_OFFSET
23021(
23022 WDI_HTSecondaryChannelOffset wdiSecChOffset
23023)
23024{
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 the chances of getting inlined*/
23027 switch( wdiSecChOffset )
23028 {
23029 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23035#ifdef WLAN_FEATURE_11AC
23036 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23037 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23038 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23039 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23040 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23041 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23042 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23043 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23044 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23045 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23046 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23047 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23048 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23049 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23050#endif
23051 default:
23052 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 }
23054
Jeff Johnsone7245742012-09-05 17:12:55 -070023055 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023056}/*WDI_2_HAL_SEC_CH_OFFSET*/
23057
23058/*Convert WDI BSS type into HAL BSS type*/
23059WPT_STATIC WPT_INLINE tSirBssType
23060WDI_2_HAL_BSS_TYPE
23061(
23062 WDI_BssType wdiBSSType
23063)
23064{
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 the chances of getting inlined*/
23067 switch( wdiBSSType )
23068 {
23069 case WDI_INFRASTRUCTURE_MODE:
23070 return eSIR_INFRASTRUCTURE_MODE;
23071 case WDI_INFRA_AP_MODE:
23072 return eSIR_INFRA_AP_MODE;
23073 case WDI_IBSS_MODE:
23074 return eSIR_IBSS_MODE;
23075 case WDI_BTAMP_STA_MODE:
23076 return eSIR_BTAMP_STA_MODE;
23077 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 case WDI_BSS_AUTO_MODE:
23080 return eSIR_AUTO_MODE;
23081 }
23082
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023084}/*WDI_2_HAL_BSS_TYPE*/
23085
23086/*Convert WDI NW type into HAL NW type*/
23087WPT_STATIC WPT_INLINE tSirNwType
23088WDI_2_HAL_NW_TYPE
23089(
23090 WDI_NwType wdiNWType
23091)
23092{
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 the chances of getting inlined*/
23095 switch( wdiNWType )
23096 {
23097 case WDI_11A_NW_TYPE:
23098 return eSIR_11A_NW_TYPE;
23099 case WDI_11B_NW_TYPE:
23100 return eSIR_11B_NW_TYPE;
23101 case WDI_11G_NW_TYPE:
23102 return eSIR_11G_NW_TYPE;
23103 case WDI_11N_NW_TYPE:
23104 return eSIR_11N_NW_TYPE;
23105 }
23106
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023108}/*WDI_2_HAL_NW_TYPE*/
23109
23110/*Convert WDI chanel bonding type into HAL cb type*/
23111WPT_STATIC WPT_INLINE ePhyChanBondState
23112WDI_2_HAL_CB_STATE
23113(
23114 WDI_PhyChanBondState wdiCbState
23115)
23116{
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 the chances of getting inlined*/
23119 switch ( wdiCbState )
23120 {
23121 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23122 return PHY_SINGLE_CHANNEL_CENTERED;
23123 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23124 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23125 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23126 return PHY_DOUBLE_CHANNEL_CENTERED;
23127 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23128 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023129#ifdef WLAN_FEATURE_11AC
23130 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23131 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23132 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23133 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23134 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23135 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23136 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23137 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23138 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23139 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23140 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23141 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23142 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23143 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23144#endif
23145 case WDI_MAX_CB_STATE:
23146 default:
23147 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023149
Jeff Johnson295189b2012-06-20 16:38:30 -070023150 return PHY_CHANNEL_BONDING_STATE_MAX;
23151}/*WDI_2_HAL_CB_STATE*/
23152
23153/*Convert WDI chanel bonding type into HAL cb type*/
23154WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23155WDI_2_HAL_HT_OPER_MODE
23156(
23157 WDI_HTOperatingMode wdiHTOperMode
23158)
23159{
Jeff Johnsone7245742012-09-05 17:12:55 -070023160 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023161 the chances of getting inlined*/
23162 switch ( wdiHTOperMode )
23163 {
23164 case WDI_HT_OP_MODE_PURE:
23165 return eSIR_HT_OP_MODE_PURE;
23166 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23167 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23168 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23169 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23170 case WDI_HT_OP_MODE_MIXED:
23171 return eSIR_HT_OP_MODE_MIXED;
23172 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023173
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 return eSIR_HT_OP_MODE_MAX;
23175}/*WDI_2_HAL_HT_OPER_MODE*/
23176
23177/*Convert WDI mimo PS type into HAL mimo PS type*/
23178WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23179WDI_2_HAL_MIMO_PS
23180(
23181 WDI_HTMIMOPowerSaveState wdiHTOperMode
23182)
23183{
Jeff Johnsone7245742012-09-05 17:12:55 -070023184 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 the chances of getting inlined*/
23186 switch ( wdiHTOperMode )
23187 {
23188 case WDI_HT_MIMO_PS_STATIC:
23189 return eSIR_HT_MIMO_PS_STATIC;
23190 case WDI_HT_MIMO_PS_DYNAMIC:
23191 return eSIR_HT_MIMO_PS_DYNAMIC;
23192 case WDI_HT_MIMO_PS_NA:
23193 return eSIR_HT_MIMO_PS_NA;
23194 case WDI_HT_MIMO_PS_NO_LIMIT:
23195 return eSIR_HT_MIMO_PS_NO_LIMIT;
23196 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023197
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 return eSIR_HT_MIMO_PS_MAX;
23199}/*WDI_2_HAL_MIMO_PS*/
23200
23201/*Convert WDI ENC type into HAL ENC type*/
23202WPT_STATIC WPT_INLINE tAniEdType
23203WDI_2_HAL_ENC_TYPE
23204(
23205 WDI_EncryptType wdiEncType
23206)
23207{
Jeff Johnsone7245742012-09-05 17:12:55 -070023208 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 the chances of getting inlined*/
23210 switch ( wdiEncType )
23211 {
23212 case WDI_ENCR_NONE:
23213 return eSIR_ED_NONE;
23214
23215 case WDI_ENCR_WEP40:
23216 return eSIR_ED_WEP40;
23217
23218 case WDI_ENCR_WEP104:
23219 return eSIR_ED_WEP104;
23220
23221 case WDI_ENCR_TKIP:
23222 return eSIR_ED_TKIP;
23223
23224 case WDI_ENCR_CCMP:
23225 return eSIR_ED_CCMP;
23226
23227 case WDI_ENCR_AES_128_CMAC:
23228 return eSIR_ED_AES_128_CMAC;
23229#if defined(FEATURE_WLAN_WAPI)
23230 case WDI_ENCR_WPI:
23231 return eSIR_ED_WPI;
23232#endif
23233 default:
23234 return eSIR_ED_NOT_IMPLEMENTED;
23235 }
23236
23237}/*WDI_2_HAL_ENC_TYPE*/
23238
23239/*Convert WDI WEP type into HAL WEP type*/
23240WPT_STATIC WPT_INLINE tAniWepType
23241WDI_2_HAL_WEP_TYPE
23242(
23243 WDI_WepType wdiWEPType
23244)
23245{
Jeff Johnsone7245742012-09-05 17:12:55 -070023246 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023247 the chances of getting inlined*/
23248 switch ( wdiWEPType )
23249 {
23250 case WDI_WEP_STATIC:
23251 return eSIR_WEP_STATIC;
23252
23253 case WDI_WEP_DYNAMIC:
23254 return eSIR_WEP_DYNAMIC;
23255 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023256
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 return eSIR_WEP_MAX;
23258}/*WDI_2_HAL_WEP_TYPE*/
23259
23260WPT_STATIC WPT_INLINE tSirLinkState
23261WDI_2_HAL_LINK_STATE
23262(
23263 WDI_LinkStateType wdiLinkState
23264)
23265{
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 the chances of getting inlined*/
23268 switch ( wdiLinkState )
23269 {
23270 case WDI_LINK_IDLE_STATE:
23271 return eSIR_LINK_IDLE_STATE;
23272
23273 case WDI_LINK_PREASSOC_STATE:
23274 return eSIR_LINK_PREASSOC_STATE;
23275
23276 case WDI_LINK_POSTASSOC_STATE:
23277 return eSIR_LINK_POSTASSOC_STATE;
23278
23279 case WDI_LINK_AP_STATE:
23280 return eSIR_LINK_AP_STATE;
23281
23282 case WDI_LINK_IBSS_STATE:
23283 return eSIR_LINK_IBSS_STATE;
23284
23285 case WDI_LINK_BTAMP_PREASSOC_STATE:
23286 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23287
23288 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23289 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23290
23291 case WDI_LINK_BTAMP_AP_STATE:
23292 return eSIR_LINK_BTAMP_AP_STATE;
23293
23294 case WDI_LINK_BTAMP_STA_STATE:
23295 return eSIR_LINK_BTAMP_STA_STATE;
23296
23297 case WDI_LINK_LEARN_STATE:
23298 return eSIR_LINK_LEARN_STATE;
23299
23300 case WDI_LINK_SCAN_STATE:
23301 return eSIR_LINK_SCAN_STATE;
23302
23303 case WDI_LINK_FINISH_SCAN_STATE:
23304 return eSIR_LINK_FINISH_SCAN_STATE;
23305
23306 case WDI_LINK_INIT_CAL_STATE:
23307 return eSIR_LINK_INIT_CAL_STATE;
23308
23309 case WDI_LINK_FINISH_CAL_STATE:
23310 return eSIR_LINK_FINISH_CAL_STATE;
23311
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 case WDI_LINK_LISTEN_STATE:
23313 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023314
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023315 case WDI_LINK_SEND_ACTION_STATE:
23316 return eSIR_LINK_SEND_ACTION_STATE;
23317
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 default:
23319 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023320 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023321}
23322
Jeff Johnsone7245742012-09-05 17:12:55 -070023323/*Translate a STA Context from WDI into HAL*/
23324WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023325void
23326WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023327(
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 tConfigStaParams* phalConfigSta,
23329 WDI_ConfigStaReqInfoType* pwdiConfigSta
23330)
23331{
23332 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023333#ifdef WLAN_FEATURE_11AC
23334 /* Get the Version 1 Handler */
23335 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23336 if (WDI_getFwWlanFeatCaps(DOT11AC))
23337 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023338 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 }
23340#endif
23341 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 the chances of getting inlined*/
23343
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 wpalMemoryCopy(phalConfigSta->bssId,
23345 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23346
23347 wpalMemoryCopy(phalConfigSta->staMac,
23348 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023349
23350 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23351 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23352 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23353 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23354 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23355 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23356 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23357 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23358 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23359 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23360 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23361 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23362 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23363 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23364 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23365 phalConfigSta->action = pwdiConfigSta->wdiAction;
23366 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23367 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23368 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23369 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23370 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23371 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23372 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023373
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23375
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 pwdiConfigSta->wdiSupportedRates.opRateMode;
23378 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23379 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23382 }
23383 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23384 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23387 }
23388 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23389 {
23390 phalConfigSta->supportedRates.aniLegacyRates[i] =
23391 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23392 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23395 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23396 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23399 }
23400 phalConfigSta->supportedRates.rxHighestDataRate =
23401 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23402
Jeff Johnsone7245742012-09-05 17:12:55 -070023403#ifdef WLAN_FEATURE_11AC
23404 if(phalConfigSta_V1 != NULL)
23405 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023406 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23407 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23408 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23409 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 }
23411#endif
23412
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023414
Jeff Johnsone7245742012-09-05 17:12:55 -070023415#ifdef WLAN_FEATURE_11AC
23416 if(phalConfigSta_V1 != NULL)
23417 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023418 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23419 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023420 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023421 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23422 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23423
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 }
23425#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023426}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023427
23428/*Translate a Rate set info from WDI into HAL*/
23429WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023430WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023431(
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 tSirMacRateSet* pHalRateSet,
23433 WDI_RateSet* pwdiRateSet
23434)
23435{
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23438
23439 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23440 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23441
23442 for ( i = 0; i < pHalRateSet->numRates; i++ )
23443 {
23444 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23445 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023446
Jeff Johnson295189b2012-06-20 16:38:30 -070023447}/*WDI_CopyWDIRateSetToHALRateSet*/
23448
23449
23450/*Translate an EDCA Parameter Record from WDI into HAL*/
23451WPT_STATIC WPT_INLINE void
23452WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023453(
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 tSirMacEdcaParamRecord* phalEdcaParam,
23455 WDI_EdcaParamRecord* pWDIEdcaParam
23456)
23457{
Jeff Johnsone7245742012-09-05 17:12:55 -070023458 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 the chances of getting inlined*/
23460
23461 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23462 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23463 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23464 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23465
23466 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23467 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23468 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23469}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23470
23471
23472/*Copy a management frame header from WDI fmt into HAL fmt*/
23473WPT_STATIC WPT_INLINE void
23474WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23475(
23476 tSirMacMgmtHdr* pmacMgmtHdr,
23477 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23478)
23479{
23480 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23481 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23482 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23483 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23484 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23485 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23486 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23487 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23488 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23489 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23490 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23491
23492 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23493 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23494
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023499 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 pwdiMacMgmtHdr->bssId, 6);
23501
23502 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23503 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23504 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23505
23506}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23507
23508
23509/*Copy config bss parameters from WDI fmt into HAL fmt*/
23510WPT_STATIC WPT_INLINE void
23511WDI_CopyWDIConfigBSSToHALConfigBSS
23512(
23513 tConfigBssParams* phalConfigBSS,
23514 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23515)
23516{
23517
23518 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023519#ifdef WLAN_FEATURE_11AC
23520 /* Get the Version 1 Handler */
23521 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23522 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023523 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023524#endif
23525
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 wpalMemoryCopy( phalConfigBSS->bssId,
23527 pwdiConfigBSS->macBSSID,
23528 WDI_MAC_ADDR_LEN);
23529
23530#ifdef HAL_SELF_STA_PER_BSS
23531 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23532 pwdiConfigBSS->macSelfAddr,
23533 WDI_MAC_ADDR_LEN);
23534#endif
23535
23536 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23537
23538 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23539 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23540
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 pwdiConfigBSS->ucShortSlotTimeSupported;
23543 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23544 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23545 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23546 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23547 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023548 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23550 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23551 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23552 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23553 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23554 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23555 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23556 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23557 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23558 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23559 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23560
Jeff Johnsone7245742012-09-05 17:12:55 -070023561 phalConfigBSS->htOperMode =
23562 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023563
23564 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23565 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23566 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23567 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23568
23569#ifdef WLAN_FEATURE_VOWIFI
23570 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23571#endif
23572
23573 /*! Used 32 as magic number because that is how the ssid is declared inside the
23574 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23577 pwdiConfigBSS->wdiSSID.ucLength : 32;
23578 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 pwdiConfigBSS->wdiSSID.sSSID,
23580 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023581
23582 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23583 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023584
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23586 &pwdiConfigBSS->wdiRateSet);
23587
23588 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23589
23590 if(phalConfigBSS->edcaParamsValid)
23591 {
23592 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23593 &pwdiConfigBSS->wdiBEEDCAParams);
23594 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23595 &pwdiConfigBSS->wdiBKEDCAParams);
23596 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23597 &pwdiConfigBSS->wdiVIEDCAParams);
23598 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23599 &pwdiConfigBSS->wdiVOEDCAParams);
23600 }
23601
Jeff Johnsone7245742012-09-05 17:12:55 -070023602 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023603
23604 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23605
23606#ifdef WLAN_FEATURE_VOWIFI_11R
23607
Jeff Johnsone7245742012-09-05 17:12:55 -070023608 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023610
Jeff Johnson295189b2012-06-20 16:38:30 -070023611 if( phalConfigBSS->extSetStaKeyParamValid )
23612 {
23613 /*-----------------------------------------------------------------------
23614 Copy the STA Key parameters into the HAL message
23615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23618
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23621
23622 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23623
23624 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23625
23626 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23627
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23629 keyIndex++)
23630 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23633 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23634 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23635 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23636 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23637 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23644 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 WDI_MAX_KEY_LENGTH);
23647 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 }
23649 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23650 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023651 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 sizeof(phalConfigBSS->extSetStaKeyParam) );
23653 }
23654
23655#endif /*WLAN_FEATURE_VOWIFI_11R*/
23656
Jeff Johnsone7245742012-09-05 17:12:55 -070023657#ifdef WLAN_FEATURE_11AC
23658 if(phalConfigBSS_V1 != NULL)
23659 {
23660 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23661 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23662 }
23663#endif
23664
Jeff Johnson295189b2012-06-20 16:38:30 -070023665}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23666
23667
Jeff Johnsone7245742012-09-05 17:12:55 -070023668/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 pointed to by user data */
23670WPT_STATIC WPT_INLINE void
23671WDI_ExtractRequestCBFromEvent
23672(
23673 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023674 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 void** ppUserData
23676)
23677{
23678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23679 switch ( pEvent->wdiRequest )
23680 {
23681 case WDI_START_REQ:
23682 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23683 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23684 break;
23685 case WDI_STOP_REQ:
23686 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23687 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23688 break;
23689 case WDI_INIT_SCAN_REQ:
23690 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23691 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23692 break;
23693 case WDI_START_SCAN_REQ:
23694 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23695 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23696 break;
23697 case WDI_END_SCAN_REQ:
23698 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23699 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23700 break;
23701 case WDI_FINISH_SCAN_REQ:
23702 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23703 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23704 break;
23705 case WDI_JOIN_REQ:
23706 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23707 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23708 break;
23709 case WDI_CONFIG_BSS_REQ:
23710 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23711 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23712 break;
23713 case WDI_DEL_BSS_REQ:
23714 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23715 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23716 break;
23717 case WDI_POST_ASSOC_REQ:
23718 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23719 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23720 break;
23721 case WDI_DEL_STA_REQ:
23722 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23723 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23724 break;
23725 case WDI_DEL_STA_SELF_REQ:
23726 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23727 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23728 break;
23729
23730 case WDI_SET_BSS_KEY_REQ:
23731 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23732 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23733 break;
23734 case WDI_RMV_BSS_KEY_REQ:
23735 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23736 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23737 break;
23738 case WDI_SET_STA_KEY_REQ:
23739 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23740 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23741 break;
23742 case WDI_RMV_STA_KEY_REQ:
23743 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23744 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23745 break;
23746 case WDI_ADD_TS_REQ:
23747 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23748 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23749 break;
23750 case WDI_DEL_TS_REQ:
23751 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23752 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23753 break;
23754 case WDI_UPD_EDCA_PRMS_REQ:
23755 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23756 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23757 break;
23758 case WDI_ADD_BA_SESSION_REQ:
23759 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23760 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23761 break;
23762 case WDI_DEL_BA_REQ:
23763 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23764 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23765 break;
23766#ifdef FEATURE_WLAN_CCX
23767 case WDI_TSM_STATS_REQ:
23768 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23769 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23770 break;
23771#endif
23772 case WDI_CH_SWITCH_REQ:
23773 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23774 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23775 break;
23776 case WDI_CONFIG_STA_REQ:
23777 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23778 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23779 break;
23780 case WDI_SET_LINK_ST_REQ:
23781 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23782 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23783 break;
23784 case WDI_GET_STATS_REQ:
23785 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23786 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23787 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023788#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23789 case WDI_GET_ROAM_RSSI_REQ:
23790 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23791 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23792 break;
23793#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 case WDI_UPDATE_CFG_REQ:
23795 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23796 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23797 break;
23798 case WDI_ADD_BA_REQ:
23799 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23800 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23801 break;
23802 case WDI_TRIGGER_BA_REQ:
23803 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23804 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23805 break;
23806 case WDI_UPD_BCON_PRMS_REQ:
23807 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23808 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23809 break;
23810 case WDI_SND_BCON_REQ:
23811 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23812 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23813 break;
23814 case WDI_ENTER_BMPS_REQ:
23815 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23816 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23817 break;
23818 case WDI_EXIT_BMPS_REQ:
23819 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23820 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23821 break;
23822 case WDI_ENTER_UAPSD_REQ:
23823 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23824 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23825 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023826 case WDI_EXIT_UAPSD_REQ:
23827 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23828 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23829 break;
23830 case WDI_SET_UAPSD_PARAM_REQ:
23831 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23832 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23833 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 case WDI_UPDATE_UAPSD_PARAM_REQ:
23835 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23836 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23837 break;
23838 case WDI_CONFIGURE_RXP_FILTER_REQ:
23839 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23840 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23841 break;
23842 case WDI_SET_BEACON_FILTER_REQ:
23843 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23844 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23845 break;
23846 case WDI_REM_BEACON_FILTER_REQ:
23847 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23848 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 case WDI_SET_RSSI_THRESHOLDS_REQ:
23851 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23852 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23853 break;
23854 case WDI_HOST_OFFLOAD_REQ:
23855 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23856 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23857 break;
23858 case WDI_WOWL_ADD_BC_PTRN_REQ:
23859 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23860 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23861 break;
23862 case WDI_WOWL_DEL_BC_PTRN_REQ:
23863 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23864 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23865 break;
23866 case WDI_WOWL_ENTER_REQ:
23867 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23868 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23869 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023870 case WDI_WOWL_EXIT_REQ:
23871 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23872 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23873 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23875 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23876 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23877 break;
23878 case WDI_FLUSH_AC_REQ:
23879 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23880 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23881 break;
23882 case WDI_BTAMP_EVENT_REQ:
23883 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23884 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23885 break;
23886 case WDI_KEEP_ALIVE_REQ:
23887 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23888 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23889 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023890#if defined FEATURE_WLAN_SCAN_PNO
23891 case WDI_SET_PREF_NETWORK_REQ:
23892 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23893 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23894 break;
23895 case WDI_SET_RSSI_FILTER_REQ:
23896 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23897 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23898 break;
23899 case WDI_UPDATE_SCAN_PARAMS_REQ:
23900 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23901 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23902 break;
23903#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023904 case WDI_SET_TX_PER_TRACKING_REQ:
23905 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23906 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023907 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023908#if defined WLAN_FEATURE_PACKET_FILTERING
23909 case WDI_8023_MULTICAST_LIST_REQ:
23910 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23911 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23912 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023913 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23914 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23915 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23916 break;
23917 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23918 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23919 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23920 break;
23921 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23922 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23923 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23924 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023925#endif
23926 case WDI_SET_POWER_PARAMS_REQ:
23927 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23928 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23929 break;
23930#if defined WLAN_FEATURE_GTK_OFFLOAD
23931 case WDI_GTK_OFFLOAD_REQ:
23932 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23933 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23934 break;
23935 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23936 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23937 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23938 break;
23939#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023940
Jeff Johnson295189b2012-06-20 16:38:30 -070023941 default:
23942 *ppfnReqCB = NULL;
23943 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 }
23946}/*WDI_ExtractRequestCBFromEvent*/
23947
23948
23949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 frame xtl is enabled for a particular STA.
23952
23953 WDI_PostAssocReq must have been called.
23954
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 @param uSTAIdx: STA index
23956
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 @see WDI_PostAssocReq
23958 @return Result of the function call
23959*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023960wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023961WDI_IsHwFrameTxTranslationCapable
23962(
23963 wpt_uint8 uSTAIdx
23964)
23965{
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 uma value*/
23968 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 ------------------------------------------------------------------------*/
23971 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23972 {
23973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23974 "WDI API call before module is initialized - Fail request");
23975
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 }
23978
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023979#ifdef WLAN_SOFTAP_VSTA_FEATURE
23980 if (IS_VSTA_IDX(uSTAIdx))
23981 {
23982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23983 "STA %d is a Virtual STA, "
23984 "HW frame translation disabled", uSTAIdx);
23985 return eWLAN_PAL_FALSE;
23986 }
23987#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023988
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 return gWDICb.bFrameTransEnabled;
23990}/*WDI_IsHwFrameTxTranslationCapable*/
23991
23992#ifdef FEATURE_WLAN_SCAN_PNO
23993/**
23994 @brief WDI_SetPreferredNetworkList
23995
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023998
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 wdiPNOScanCb: callback for passing back the response
24000 of the Set PNO operation received from the
24001 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024002
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 callback
24005
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 @return Result of the function call
24007*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024008WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024009WDI_SetPreferredNetworkReq
24010(
24011 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24012 WDI_PNOScanCb wdiPNOScanCb,
24013 void* pUserData
24014)
24015{
24016 WDI_EventInfoType wdiEventData = {{0}};
24017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24018
24019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 ------------------------------------------------------------------------*/
24022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24023 {
24024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24025 "WDI API call before module is initialized - Fail request");
24026
Jeff Johnsone7245742012-09-05 17:12:55 -070024027 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 }
24029
24030 /*------------------------------------------------------------------------
24031 Fill in Event data and post to the Main FSM
24032 ------------------------------------------------------------------------*/
24033 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 wdiEventData.pUserData = pUserData;
24038
24039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24040}
24041
24042
24043/**
24044 @brief WDI_SetRssiFilterReq
24045
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024048
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 wdiRssiFilterCb: callback for passing back the response
24050 of the Set RSSI Filter operation received from the
24051 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024052
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024054 callback
24055
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 @return Result of the function call
24057*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024059WDI_SetRssiFilterReq
24060(
24061 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24062 WDI_RssiFilterCb wdiRssiFilterCb,
24063 void* pUserData
24064)
24065{
24066 WDI_EventInfoType wdiEventData = {{0}};
24067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24068
24069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 ------------------------------------------------------------------------*/
24072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24073 {
24074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24075 "WDI API call before module is initialized - Fail request");
24076
Jeff Johnsone7245742012-09-05 17:12:55 -070024077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 }
24079
24080 /*------------------------------------------------------------------------
24081 Fill in Event data and post to the Main FSM
24082 ------------------------------------------------------------------------*/
24083 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 wdiEventData.pUserData = pUserData;
24088
24089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24090}/*WDI_SetRssiFilterReq*/
24091
24092/**
24093 @brief WDI_UpdateScanParamsReq
24094
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024097
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 wdiUpdateScanParamsCb: callback for passing back the response
24099 of the Set PNO operation received from the
24100 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024101
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 callback
24104
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 @return Result of the function call
24106*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024107WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024108WDI_UpdateScanParamsReq
24109(
24110 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24111 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24112 void* pUserData
24113)
24114{
24115 WDI_EventInfoType wdiEventData = {{0}};
24116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24117
24118 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 ------------------------------------------------------------------------*/
24121 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24122 {
24123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24124 "WDI API call before module is initialized - Fail request");
24125
Jeff Johnsone7245742012-09-05 17:12:55 -070024126 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 }
24128
24129 /*------------------------------------------------------------------------
24130 Fill in Event data and post to the Main FSM
24131 ------------------------------------------------------------------------*/
24132 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 wdiEventData.pUserData = pUserData;
24137
24138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24139}
24140
24141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024142 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024144
24145 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 pwdiPNOScanReqParams: pointer to the info received
24147 from upper layers
24148 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024149 and its size
24150
Jeff Johnson295189b2012-06-20 16:38:30 -070024151 @return Result of the function call
24152*/
24153
24154WDI_Status
24155WDI_PackPreferredNetworkList
24156(
24157 WDI_ControlBlockType* pWDICtx,
24158 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24159 wpt_uint8** ppSendBuffer,
24160 wpt_uint16* pSize
24161)
24162{
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 wpt_uint16 usDataOffset = 0;
24165 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024166 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024168 /*-----------------------------------------------------------------------
24169 Get message buffer
24170 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024172 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024174 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024175 {
24176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24177 "Unable to get send buffer in Set PNO req %x ",
24178 pwdiPNOScanReqParams);
24179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024181 }
24182
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024183 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24184
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 /*-------------------------------------------------------------------------
24186 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24187 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024188 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024190 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24192
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024193 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024196 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24198
24199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024200 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24202 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24203 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24204
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024205 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 {
24207 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024208 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24210
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024211 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024213 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
24215 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024216 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024217 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024218
24219 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024220 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024222
Jeff Johnsone7245742012-09-05 17:12:55 -070024223 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024224 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024225 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024226 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24227 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24228 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24229 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024230
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024231 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024233 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024234
24235 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024236 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24238
24239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024241 pPrefNetwListParams->aNetworks[i].ssId.length,
24242 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024243 }
24244
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024245 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24248 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24249 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24250
24251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024253 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24255 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24256
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024257 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024258 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024259 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024260 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024261 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024262 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24263 }
24264
24265 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024266 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24268 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24269 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024271
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024272 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024274 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024275
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024276 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024277 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24278 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24279 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024280 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024281
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024282 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024284 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024285
24286 /*Set the output values*/
24287 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024289
24290 return WDI_STATUS_SUCCESS;
24291}/*WDI_PackPreferredNetworkList*/
24292
24293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024296
24297 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 pwdiPNOScanReqParams: pointer to the info received
24299 from upper layers
24300 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 and its size
24302
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 @return Result of the function call
24304*/
24305
24306WDI_Status
24307WDI_PackPreferredNetworkListNew
24308(
24309 WDI_ControlBlockType* pWDICtx,
24310 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24311 wpt_uint8** ppSendBuffer,
24312 wpt_uint16* pSize
24313)
24314{
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 wpt_uint16 usDataOffset = 0;
24317 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024318 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320
24321 /*-----------------------------------------------------------------------
24322 Get message buffer
24323 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024325 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024327 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 {
24329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24330 "Unable to get send buffer in Set PNO req %x ",
24331 pwdiPNOScanReqParams);
24332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 }
24335
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024336 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24337
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 /*-------------------------------------------------------------------------
24339 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24340 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024341 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024343 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24345
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024346 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024349 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24351
24352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024353 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24355 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24356 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24357
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024358 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 {
24360 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024361 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24363
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024364 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024366 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024367
24368 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024369 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024370 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024371
24372 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024373 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024375
24376 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024377 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024379
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024382 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24384
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024385 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024387 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024388
24389 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024390 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24392
24393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024394 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024395 pPrefNetwListParams->aNetworks[i].ssId.length,
24396 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 }
24398
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024399 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024400 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24402 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24403 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24404
24405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024407 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24409 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24410
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024411 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024413 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024415 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24417 }
24418
24419 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024420 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024421 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24422 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24423 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024424 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024425
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024426 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024427 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024428 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024429
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024430 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24432 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24433 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024435
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024436 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024438 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024439
Jeff Johnson295189b2012-06-20 16:38:30 -070024440
24441 /*Set the output values*/
24442 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444
24445 return WDI_STATUS_SUCCESS;
24446}/*WDI_PackPreferredNetworkListNew*/
24447
24448/**
24449 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024450
24451 @param pWDICtx: pointer to the WLAN DAL context
24452 pEventData: pointer to the event information structure
24453
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 @return Result of the function call
24455*/
24456WDI_Status
24457WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024458(
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 WDI_ControlBlockType* pWDICtx,
24460 WDI_EventInfoType* pEventData
24461)
24462{
24463 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24464 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468
24469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 -------------------------------------------------------------------------*/
24472 if (( NULL == pEventData ) ||
24473 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24474 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24475 {
24476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 }
24481
24482 /*-------------------------------------------------------------------------
24483 Pack the PNO request structure based on version
24484 -------------------------------------------------------------------------*/
24485 if ( pWDICtx->wdiPNOVersion > 0 )
24486 {
24487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024488 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024489 pWDICtx->wdiPNOVersion);
24490
24491 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24492 &pSendBuffer, &usSendSize);
24493 }
24494 else
24495 {
24496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024497 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 pWDICtx->wdiPNOVersion);
24499
24500 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24501 &pSendBuffer, &usSendSize);
24502 }
24503
24504 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24505 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24506 {
24507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024508 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 }
24512
24513 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024514 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024515
24516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24520 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024521}
24522
24523/**
24524 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024525
24526 @param pWDICtx: pointer to the WLAN DAL context
24527 pEventData: pointer to the event information structure
24528
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 @see
24530 @return Result of the function call
24531*/
24532WDI_Status
24533WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024534(
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 WDI_ControlBlockType* pWDICtx,
24536 WDI_EventInfoType* pEventData
24537)
24538{
24539 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24540 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 wpt_uint16 usDataOffset = 0;
24543 wpt_uint16 usSendSize = 0;
24544 wpt_uint8 ucRssiThreshold;
24545
24546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 -------------------------------------------------------------------------*/
24549 if (( NULL == pEventData ) ||
24550 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24551 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24552 {
24553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 }
24558
24559 /*-----------------------------------------------------------------------
24560 Get message buffer
24561 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 sizeof(ucRssiThreshold),
24564 &pSendBuffer, &usDataOffset, &usSendSize))||
24565 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24566 {
24567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24568 "Unable to get send buffer in Set PNO req %x %x %x",
24569 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024572 }
24573
24574 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24575
Jeff Johnsone7245742012-09-05 17:12:55 -070024576 wpalMemoryCopy( pSendBuffer+usDataOffset,
24577 &ucRssiThreshold,
24578 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024579
24580 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024582
24583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24587 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024588}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024589#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24590/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024591 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024592
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024593 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024594 by the Device Interface
24595
24596 wdiRoamOffloadScancb: callback for passing back the response
24597 of the Roam Candidate Lookup Req operation received from the
24598 device
24599
24600 pUserData: user data will be passed back with the
24601 callback
24602 @return Result of the function call
24603*/
24604WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024605WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024606(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024607 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024608 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24609 void* pUserData
24610)
24611{
24612 WDI_EventInfoType wdiEventData = {{0}};
24613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24614
24615 /*------------------------------------------------------------------------
24616 Sanity Check
24617 ------------------------------------------------------------------------*/
24618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24619 {
24620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24621 "WDI API call before module is initialized - Fail request");
24622
24623 return WDI_STATUS_E_NOT_ALLOWED;
24624 }
24625
24626 /*------------------------------------------------------------------------
24627 Fill in Event data and post to the Main FSM
24628 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024629 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24630 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24631 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024632 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24633 wdiEventData.pUserData = pUserData;
24634
24635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24636}
24637
24638void
24639WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24640{
24641 switch (wdiEdType)
24642 {
24643 case WDI_ED_NONE:
24644 *EdType = eED_NONE;
24645 break;
24646 case WDI_ED_WEP40:
24647 case WDI_ED_WEP104:
24648 *EdType = eED_WEP;
24649 break;
24650 case WDI_ED_TKIP:
24651 *EdType = eED_TKIP;
24652 break;
24653 case WDI_ED_CCMP:
24654#ifdef WLAN_FEATURE_11W
24655 case WDI_ED_AES_128_CMAC:
24656#endif
24657 *EdType = eED_CCMP;
24658 break;
24659#ifdef FEATURE_WLAN_WAPI
24660 case WDI_ED_WPI:
24661 *EdType = eED_WPI;
24662 break;
24663#endif
24664 case WDI_ED_ANY:
24665 *EdType = eED_ANY;
24666 break;
24667
24668 default:
24669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24670 "%s: Unknown Encryption Type", __func__);
24671 break;
24672 }
24673}
24674
24675/**
24676 @brief Helper function to pack Start Roam Candidate Lookup
24677 Request parameters
24678
24679 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024680 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024681 from upper layers
24682 ppSendBuffer, pSize - out pointers of the packed buffer
24683 and its size
24684
24685 @return Result of the function call
24686*/
24687
24688WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024689WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024690(
24691 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024692 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024693 wpt_uint8** ppSendBuffer,
24694 wpt_uint16* pSize
24695)
24696{
24697 wpt_uint8* pSendBuffer = NULL;
24698 wpt_uint16 usDataOffset = 0;
24699 wpt_uint16 usSendSize = 0;
24700 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24701 wpt_uint8 i;
24702 /*-----------------------------------------------------------------------
24703 Get message buffer
24704 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024705 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024706 sizeof(tRoamCandidateListParams),
24707 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024708 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024709 {
24710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24711 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024712 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024713 WDI_ASSERT(0);
24714 return WDI_STATUS_E_FAILURE;
24715 }
24716 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024717 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024718 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024719 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024720 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024721 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024722 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024723 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024724 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024725 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024726 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024727
24728 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024729 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024730 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024731 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024732 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24733 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024734 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24735 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24736 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24737 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24738 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24739 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
24740 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24741 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24742 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24743 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24744 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24745 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24746 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24747 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024748 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024749 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24750 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24751 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024752
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24754 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24755 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24756 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24757 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24758 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24759 "HomeAwayTime=%d\n",
24760 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24761 pRoamCandidateListParams->RoamScanOffloadEnabled,
24762 pRoamCandidateListParams->Command,
24763 pRoamCandidateListParams->StartScanReason,
24764 pRoamCandidateListParams->NeighborScanTimerPeriod,
24765 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24766 pRoamCandidateListParams->NeighborScanChannelMinTime,
24767 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24768 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24769 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24770 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24771 pRoamCandidateListParams->ConnectedNetwork.authentication,
24772 pRoamCandidateListParams->ConnectedNetwork.encryption,
24773 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24774 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24775 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024776 pRoamCandidateListParams->us24GProbeSize =
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)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024779 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024780 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24781 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024782 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024783 pRoamCandidateListParams->us24GProbeSize);
24784 pRoamCandidateListParams->us5GProbeSize =
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)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024787 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024788 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24789 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024790 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024791 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024792 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24793 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24794 pRoamCandidateListParams->nProbes =
24795 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24796 pRoamCandidateListParams->HomeAwayTime =
24797 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024799 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24800 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024802 }
24803
24804
24805 /*Set the output values*/
24806 *ppSendBuffer = pSendBuffer;
24807 *pSize = usSendSize;
24808 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024809}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024810
24811/**
24812 @brief Process Start Roam Candidate Lookup Request function
24813
24814 @param pWDICtx: pointer to the WLAN DAL context
24815 pEventData: pointer to the event information structure
24816
24817 @return Result of the function call
24818*/
24819WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024820WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024821(
24822 WDI_ControlBlockType* pWDICtx,
24823 WDI_EventInfoType* pEventData
24824)
24825{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024826 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024827 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24828 wpt_uint8* pSendBuffer = NULL;
24829 wpt_uint16 usSendSize = 0;
24830 WDI_Status wdiStatus;
24831 /*-------------------------------------------------------------------------
24832 Sanity check
24833 -------------------------------------------------------------------------*/
24834 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024835 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024836 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24837 {
24838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24839 "%s: Invalid parameters", __func__);
24840 WDI_ASSERT(0);
24841 return WDI_STATUS_E_FAILURE;
24842 }
24843
24844 /*-------------------------------------------------------------------------
24845 Pack the Start Roam Candidate Lookup request structure based on version
24846 -------------------------------------------------------------------------*/
24847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24848 "%s: Packing Roam Candidate Lookup request ", __func__);
24849
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024850 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024851 &pSendBuffer, &usSendSize);
24852
24853 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24854 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24855 {
24856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24857 "%s: failed to pack request parameters", __func__);
24858 WDI_ASSERT(0);
24859 return wdiStatus;
24860 }
24861
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024862 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24863 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024864
24865 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024866 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024867 -------------------------------------------------------------------------*/
24868 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024869 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024870}
24871
24872/**
24873 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24874 response is being received over the bus from HAL)
24875
24876 @param pWDICtx: pointer to the WLAN DAL context
24877 pEventData: pointer to the event information structure
24878
24879 @see
24880 @return Result of the function call
24881*/
24882WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024883WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024884(
24885 WDI_ControlBlockType* pWDICtx,
24886 WDI_EventInfoType* pEventData
24887)
24888{
24889 WDI_Status wdiStatus;
24890 eHalStatus halStatus;
24891 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24892
24893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24894
24895 /*-------------------------------------------------------------------------
24896 Sanity check
24897 -------------------------------------------------------------------------*/
24898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24899 ( NULL == pEventData->pEventData ))
24900 {
24901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24902 "%s: Invalid parameters", __func__);
24903 WDI_ASSERT(0);
24904 return WDI_STATUS_E_FAILURE;
24905 }
24906
24907 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24908
24909 /*-------------------------------------------------------------------------
24910 Extract response and send it to UMAC
24911 -------------------------------------------------------------------------*/
24912 halStatus = *((eHalStatus*)pEventData->pEventData);
24913 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24914
24915 /*Notify UMAC*/
24916 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24917
24918 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024919}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024920#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024921
24922/**
24923 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024924
24925 @param pWDICtx: pointer to the WLAN DAL context
24926 pEventData: pointer to the event information structure
24927
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 @see
24929 @return Result of the function call
24930*/
24931WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024932WDI_PackUpdateScanParamsReq
24933(
24934 WDI_ControlBlockType* pWDICtx,
24935 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24936 wpt_uint8** ppSendBuffer,
24937 wpt_uint16* pSize
24938)
24939{
24940 wpt_uint8* pSendBuffer = NULL;
24941 wpt_uint16 usDataOffset = 0;
24942 wpt_uint16 usSendSize = 0;
24943 tUpdateScanParams updateScanParams = {0};
24944
24945
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024947 "Begin WDI Update Scan Parameters Old Style Params");
24948 /*-----------------------------------------------------------------------
24949 Get message buffer
24950 -----------------------------------------------------------------------*/
24951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24952 sizeof(updateScanParams),
24953 &pSendBuffer, &usDataOffset, &usSendSize))||
24954 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24955 {
24956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24957 "Unable to get send buffer in Update Scan Params req %x",
24958 pwdiUpdateScanParams);
24959 WDI_ASSERT(0);
24960 return WDI_STATUS_E_FAILURE;
24961 }
24962
24963 //
24964 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24965 //
24966
24967 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24968 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24969
24970 updateScanParams.ucChannelCount =
24971 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24972 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24973 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24974 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24975
24976 wpalMemoryCopy( updateScanParams.aChannels,
24977 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24978 updateScanParams.ucChannelCount);
24979
24980
24981 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24982 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24983 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24984 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24985 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24986
24987 wpalMemoryCopy( pSendBuffer+usDataOffset,
24988 &updateScanParams,
24989 sizeof(updateScanParams));
24990
24991 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24992 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24993
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024995 "End Update Scan Parameters Old Style");
24996
24997 /*Set the output values*/
24998 *ppSendBuffer = pSendBuffer;
24999 *pSize = usSendSize;
25000
25001 return WDI_STATUS_SUCCESS;
25002}
25003
25004/**
25005 @brief Process Update Scan Params function
25006
25007 @param pWDICtx: pointer to the WLAN DAL context
25008 pEventData: pointer to the event information structure
25009
25010 @see
25011 @return Result of the function call
25012*/
25013WDI_Status
25014WDI_PackUpdateScanParamsReqEx
25015(
25016 WDI_ControlBlockType* pWDICtx,
25017 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25018 wpt_uint8** ppSendBuffer,
25019 wpt_uint16* pSize
25020)
25021{
25022 wpt_uint8* pSendBuffer = NULL;
25023 wpt_uint16 usDataOffset = 0;
25024 wpt_uint16 usSendSize = 0;
25025 tUpdateScanParamsEx updateScanParams = {0};
25026
25027
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025028 /*-----------------------------------------------------------------------
25029 Get message buffer
25030 -----------------------------------------------------------------------*/
25031 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25032 sizeof(updateScanParams),
25033 &pSendBuffer, &usDataOffset, &usSendSize))||
25034 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25035 {
25036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25037 "Unable to get send buffer in Update Scan Params Ex req %x",
25038 pwdiUpdateScanParams);
25039 WDI_ASSERT(0);
25040 return WDI_STATUS_E_FAILURE;
25041 }
25042
25043 //
25044 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25045 //
25046
25047 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25048 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25049
25050 updateScanParams.ucChannelCount =
25051 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25052 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25053 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25054 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25055
25056 wpalMemoryCopy( updateScanParams.aChannels,
25057 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25058 updateScanParams.ucChannelCount);
25059
25060
25061 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25062 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25063 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25064 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25065 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25066
25067 wpalMemoryCopy( pSendBuffer+usDataOffset,
25068 &updateScanParams,
25069 sizeof(updateScanParams));
25070
25071 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25072 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25073
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025074 /*Set the output values*/
25075 *ppSendBuffer = pSendBuffer;
25076 *pSize = usSendSize;
25077
25078 return WDI_STATUS_SUCCESS;
25079}
25080
25081/**
25082 @brief Process Update Scan Params function
25083
25084 @param pWDICtx: pointer to the WLAN DAL context
25085 pEventData: pointer to the event information structure
25086
25087 @see
25088 @return Result of the function call
25089*/
25090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025091WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025092(
Jeff Johnson295189b2012-06-20 16:38:30 -070025093 WDI_ControlBlockType* pWDICtx,
25094 WDI_EventInfoType* pEventData
25095)
25096{
25097 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25098 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025101 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025102
25103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 -------------------------------------------------------------------------*/
25106 if (( NULL == pEventData ) ||
25107 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25108 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25109 {
25110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 }
25115
25116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25117 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025118
25119 //
25120 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25121 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025122 if ( pWDICtx->wlanVersion.revision < 1 )
25123 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025124 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025125 &pSendBuffer, &usSendSize);
25126 }
25127 else
25128 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025129 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25130 &pSendBuffer, &usSendSize);
25131 }
25132
25133 if(WDI_STATUS_SUCCESS != wdiStatus)
25134 {
25135 //memory allocation failed
25136 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025137 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025138
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025143 wdiUpdateScanParamsCb, pEventData->pUserData,
25144 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025145}
25146
25147/**
25148 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025149
25150 @param pWDICtx: pointer to the WLAN DAL context
25151 pEventData: pointer to the event information structure
25152
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 @see
25154 @return Result of the function call
25155*/
25156WDI_Status
25157WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025158(
Jeff Johnson295189b2012-06-20 16:38:30 -070025159 WDI_ControlBlockType* pWDICtx,
25160 WDI_EventInfoType* pEventData
25161)
25162{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025163 WDI_LowLevelIndType wdiInd;
25164 tpPrefNetwFoundParams pNetwFoundParams;
25165 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025166
25167
25168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025170 -------------------------------------------------------------------------*/
25171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25172 ( NULL == pEventData->pEventData ))
25173 {
25174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 }
25179
25180 /*-------------------------------------------------------------------------
25181 Extract indication and send it to UMAC
25182 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025183 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25184
25185 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25186 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25187 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25188
25189 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25190 {
25191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25192 "%s: fail to allocate memory", __func__);
25193 return WDI_STATUS_MEM_FAILURE;
25194 }
25195
25196 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25197 (pNetwFoundParams->ssId.length < 32 )?
25198 pNetwFoundParams->ssId.length : 32;
25199 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25200 pNetwFoundParams->ssId.ssId,
25201 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25202 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25203 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25204 pNetwFoundParams->frameLength;
25205 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25206 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25207 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025208
25209 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025211
Jeff Johnson295189b2012-06-20 16:38:30 -070025212 // DEBUG
25213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025214 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025216 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025217 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025218 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25220
ltimariu034f7d62013-01-24 18:54:33 -080025221 if ( pWDICtx->wdiLowLevelIndCB )
25222 {
25223 /*Notify UMAC*/
25224 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25225 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025226
25227 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025228}
25229
25230/**
25231 @brief Process PNO Rsp function (called when a
25232 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025233
25234 @param pWDICtx: pointer to the WLAN DAL context
25235 pEventData: pointer to the event information structure
25236
Jeff Johnson295189b2012-06-20 16:38:30 -070025237 @see
25238 @return Result of the function call
25239*/
25240WDI_Status
25241WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025242(
Jeff Johnson295189b2012-06-20 16:38:30 -070025243 WDI_ControlBlockType* pWDICtx,
25244 WDI_EventInfoType* pEventData
25245)
25246{
25247 WDI_Status wdiStatus;
25248 eHalStatus halStatus;
25249 WDI_PNOScanCb wdiPNOScanCb = NULL;
25250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25251
25252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025254 -------------------------------------------------------------------------*/
25255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25256 ( NULL == pEventData->pEventData ))
25257 {
25258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025262 }
25263
25264
Jeff Johnsone7245742012-09-05 17:12:55 -070025265 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025266
25267 /*-------------------------------------------------------------------------
25268 Extract response and send it to UMAC
25269 -------------------------------------------------------------------------*/
25270 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025271 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025272
25273 /*Notify UMAC*/
25274 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25275
Jeff Johnsone7245742012-09-05 17:12:55 -070025276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025277}/*WDI_ProcessSetPreferredNetworkRsp*/
25278
25279/**
25280 @brief Process RSSI Filter Rsp function (called when a
25281 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025282
25283 @param pWDICtx: pointer to the WLAN DAL context
25284 pEventData: pointer to the event information structure
25285
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 @see
25287 @return Result of the function call
25288*/
25289WDI_Status
25290WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025291(
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 WDI_ControlBlockType* pWDICtx,
25293 WDI_EventInfoType* pEventData
25294)
25295{
25296 WDI_Status wdiStatus;
25297 eHalStatus halStatus;
25298 WDI_RssiFilterCb wdiRssiFilterCb;
25299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25300
25301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025303 -------------------------------------------------------------------------*/
25304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25305 ( NULL == pEventData->pEventData ))
25306 {
25307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 }
25312
Jeff Johnsone7245742012-09-05 17:12:55 -070025313 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025314
25315 /*-------------------------------------------------------------------------
25316 Extract response and send it to UMAC
25317 -------------------------------------------------------------------------*/
25318 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025320
25321 /*Notify UMAC*/
25322 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25323
Jeff Johnsone7245742012-09-05 17:12:55 -070025324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025325}/*WDI_ProcessSetRssiFilterRsp*/
25326
25327/**
25328 @brief Process Update Scan Params Rsp function (called when a
25329 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025330
25331 @param pWDICtx: pointer to the WLAN DAL context
25332 pEventData: pointer to the event information structure
25333
Jeff Johnson295189b2012-06-20 16:38:30 -070025334 @see
25335 @return Result of the function call
25336*/
25337WDI_Status
25338WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025339(
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 WDI_ControlBlockType* pWDICtx,
25341 WDI_EventInfoType* pEventData
25342)
25343{
25344 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025345 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025346 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025347 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25349
25350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025352 -------------------------------------------------------------------------*/
25353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25354 ( NULL == pEventData->pEventData ))
25355 {
25356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025360 }
25361
25362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025363 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025364
Jeff Johnsone7245742012-09-05 17:12:55 -070025365 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025366
25367 /*-------------------------------------------------------------------------
25368 Extract response and send it to UMAC
25369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025370 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25371 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 sizeof(halUpdScanParams.status));
25373
25374 uStatus = halUpdScanParams.status;
25375
25376 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025377 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025378
25379 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025380 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025381
Jeff Johnsone7245742012-09-05 17:12:55 -070025382 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025383
25384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025385 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025386 halUpdScanParams.status);
25387
25388 /*Notify UMAC*/
25389 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25390
Jeff Johnsone7245742012-09-05 17:12:55 -070025391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025392}
25393#endif // FEATURE_WLAN_SCAN_PNO
25394
25395#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025396WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025397WDI_8023MulticastListReq
25398(
25399 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25400 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25401 void* pUserData
25402)
25403{
25404 WDI_EventInfoType wdiEventData;
25405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25406
25407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025408 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025409
25410 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025411 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025412 ------------------------------------------------------------------------*/
25413 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25414 {
25415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25416 "WDI API call before module is initialized - Fail request");
25417
Jeff Johnsone7245742012-09-05 17:12:55 -070025418 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025419 }
25420
25421 /*------------------------------------------------------------------------
25422 Fill in Event data and post to the Main FSM
25423 ------------------------------------------------------------------------*/
25424 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025425 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025427 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025428 wdiEventData.pUserData = pUserData;
25429
25430 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25431}
25432
Jeff Johnsone7245742012-09-05 17:12:55 -070025433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025434WDI_ReceiveFilterSetFilterReq
25435(
25436 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25437 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25438 void* pUserData
25439)
25440{
25441 WDI_EventInfoType wdiEventData;
25442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25443
25444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025445 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025446
25447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025449 ------------------------------------------------------------------------*/
25450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25451 {
25452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25453 "WDI API call before module is initialized - Fail request");
25454
Jeff Johnsone7245742012-09-05 17:12:55 -070025455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 }
25457
25458 /*------------------------------------------------------------------------
25459 Fill in Event data and post to the Main FSM
25460 ------------------------------------------------------------------------*/
25461 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025462 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25463 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025464 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25465 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025466 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 wdiEventData.pUserData = pUserData;
25468
25469
25470 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25471}
25472
Jeff Johnsone7245742012-09-05 17:12:55 -070025473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025474WDI_FilterMatchCountReq
25475(
25476 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25477 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25478 void* pUserData
25479)
25480{
25481 WDI_EventInfoType wdiEventData;
25482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25483
25484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025485 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025486
25487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025489 ------------------------------------------------------------------------*/
25490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25491 {
25492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25493 "WDI API call before module is initialized - Fail request");
25494
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025496 }
25497
25498 /*------------------------------------------------------------------------
25499 Fill in Event data and post to the Main FSM
25500 ------------------------------------------------------------------------*/
25501 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025502 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025503 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025504 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 wdiEventData.pUserData = pUserData;
25506
25507
25508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25509}
25510
Jeff Johnsone7245742012-09-05 17:12:55 -070025511WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025512WDI_ReceiveFilterClearFilterReq
25513(
25514 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25515 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25516 void* pUserData
25517)
25518{
25519 WDI_EventInfoType wdiEventData;
25520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25521
25522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025523 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025524
25525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 ------------------------------------------------------------------------*/
25528 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25529 {
25530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25531 "WDI API call before module is initialized - Fail request");
25532
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 }
25535
25536 /*------------------------------------------------------------------------
25537 Fill in Event data and post to the Main FSM
25538 ------------------------------------------------------------------------*/
25539 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025540 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 wdiEventData.pUserData = pUserData;
25544
25545
25546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25547}
25548
25549/**
25550 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025551
25552 @param pWDICtx: pointer to the WLAN DAL context
25553 pEventData: pointer to the event information structure
25554
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 @see
25556 @return Result of the function call
25557*/
25558WDI_Status
25559WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025560(
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 WDI_ControlBlockType* pWDICtx,
25562 WDI_EventInfoType* pEventData
25563)
25564{
25565 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25566 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 wpt_uint16 usDataOffset = 0;
25569 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025570 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025571 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 wpt_uint8 ucCurrentBSSSesIdx = 0;
25573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025574
25575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025576 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025577
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025578 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25579 if( NULL == pRcvFltMcAddrListType )
25580 {
25581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25582 "Failed to alloc in WDI_Process8023MulticastListReq");
25583 return WDI_STATUS_E_FAILURE;
25584 }
25585
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 -------------------------------------------------------------------------*/
25589 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025590 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025591 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025592 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025593 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25594 {
25595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025596 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025597 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025599 return WDI_STATUS_E_FAILURE;
25600 }
25601
25602 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25603 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25604 &pBSSSes);
25605 if ( NULL == pBSSSes )
25606 {
25607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025608 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025609 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 }
25612
25613 /*-----------------------------------------------------------------------
25614 Get message buffer
25615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25617 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 sizeof(tHalRcvFltMcAddrListType),
25619 &pSendBuffer, &usDataOffset, &usSendSize))||
25620 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25621 {
25622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25623 "Unable to get send buffer in "
25624 "WDI_Process8023MulticastListReq() %x %x %x",
25625 pEventData, pwdiFltPktSetMcListReqParamsType,
25626 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025627 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 }
25631
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025632 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025633 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025634 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025636 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25638 sizeof(tSirMacAddr));
25639 }
25640
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025641 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025642 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025643 pRcvFltMcAddrListType,
25644 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025645
25646 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025647 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025648
25649
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025650 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025654 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025656 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025657}
25658
25659/**
25660 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025661
25662 @param pWDICtx: pointer to the WLAN DAL context
25663 pEventData: pointer to the event information structure
25664
Jeff Johnson295189b2012-06-20 16:38:30 -070025665 @see
25666 @return Result of the function call
25667*/
25668WDI_Status
25669WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025670(
Jeff Johnson295189b2012-06-20 16:38:30 -070025671 WDI_ControlBlockType* pWDICtx,
25672 WDI_EventInfoType* pEventData
25673)
25674{
25675 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25676 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025677 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 wpt_uint16 usDataOffset = 0;
25679 wpt_uint16 usSendSize = 0;
25680 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025681 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025682 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025683 wpt_uint8 ucCurrentBSSSesIdx = 0;
25684 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025685 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25686 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025687
25688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025689 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025690
25691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025693 -------------------------------------------------------------------------*/
25694 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025696 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025697 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025698 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25699 {
25700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025703 return WDI_STATUS_E_FAILURE;
25704 }
25705
25706 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25707 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25708 &pBSSSes);
25709 if ( NULL == pBSSSes )
25710 {
25711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025712 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025714 }
25715
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025716 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25717 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025718
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025719 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25720 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25721 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25722
25723 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25724 usSessRcvPktFilterCfgSize);
25725
25726 if(NULL == pSessRcvPktFilterCfg)
25727 {
25728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25729 "%s: Failed to allocate memory for "
25730 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025731 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025732 WDI_ASSERT(0);
25733 return WDI_STATUS_E_FAILURE;
25734 }
25735
25736 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25737
25738 /*-----------------------------------------------------------------------
25739 Get message buffer
25740 -----------------------------------------------------------------------*/
25741
25742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25743 usSessRcvPktFilterCfgSize,
25744 &pSendBuffer, &usDataOffset, &usSendSize))||
25745 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25746 {
25747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25748 "Unable to get send buffer in "
25749 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25750 pEventData, pwdiSetRcvPktFilterReqInfo,
25751 wdiReceiveFilterSetFilterCb);
25752 WDI_ASSERT(0);
25753 wpalMemoryFree(pSessRcvPktFilterCfg);
25754 return WDI_STATUS_E_FAILURE;
25755 }
25756
25757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25758 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25759 usSendSize,pSessRcvPktFilterCfg);
25760
25761 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25762 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25763 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25764 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25765
25766 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25767
25768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25769 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25770 pSessRcvPktFilterCfg->filterType);
25771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25772 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25773 pSessRcvPktFilterCfg->coleasceTime);
25774
25775 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25776 {
25777 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25778 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25779 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25780 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25781 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25782 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25783 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25784 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25785
25786 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25787 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25788 8);
25789 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25790 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25791 8);
25792
25793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25794 "Out:Proto %d Comp Flag %d \n",
25795 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25796 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25797
25798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25799 "Data Offset %d Data Len %d\n",
25800 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25801 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25802
25803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25804 "CData: %d:%d:%d:%d:%d:%d\n",
25805 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25806 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25807 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25808 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25809 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25810 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25811
25812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25813 "MData: %d:%d:%d:%d:%d:%d\n",
25814 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25815 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25816 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25817 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25818 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25819 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25820 }
25821
25822 wpalMemoryCopy( pSendBuffer+usDataOffset,
25823 pSessRcvPktFilterCfg,
25824 usSessRcvPktFilterCfgSize);
25825
25826
25827 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25828 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25829
25830 wpalMemoryFree(pSessRcvPktFilterCfg);
25831
25832 }
25833 /*If SLM_SESSIONIZATION is not supported then do this */
25834 else
25835 {
25836 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25837 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25838 * sizeof(tHalRcvPktFilterParams));
25839
25840 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 usRcvPktFilterCfgSize);
25842
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025843 if(NULL == pRcvPktFilterCfg)
25844 {
25845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25846 "%s: Failed to allocate memory for "
25847 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025848 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025849 WDI_ASSERT(0);
25850 return WDI_STATUS_E_FAILURE;
25851 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025853 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025854
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025855 /*-----------------------------------------------------------------------
25856 Get message buffer
25857 -----------------------------------------------------------------------*/
25858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 usRcvPktFilterCfgSize,
25860 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025861 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25862 {
25863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 "Unable to get send buffer in "
25865 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25866 pEventData, pwdiSetRcvPktFilterReqInfo,
25867 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025868 WDI_ASSERT(0);
25869 wpalMemoryFree(pRcvPktFilterCfg);
25870 return WDI_STATUS_E_FAILURE;
25871 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025872
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025874 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025875 usSendSize,usRcvPktFilterCfgSize);
25876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025877 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25878 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25879 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25880 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025888
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025889 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25890 {
25891 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25892 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25893 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25894 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25895 pRcvPktFilterCfg->paramsData[i].dataOffset =
25896 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25897 pRcvPktFilterCfg->paramsData[i].dataLength =
25898 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025899
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025900 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025901 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25902 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025903 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25905 8);
25906
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025909 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25911
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25913 "Data Offset %d Data Len %d\n",
25914 pRcvPktFilterCfg->paramsData[i].dataOffset,
25915 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025916
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25918 "CData: %d:%d:%d:%d:%d:%d\n",
25919 pRcvPktFilterCfg->paramsData[i].compareData[0],
25920 pRcvPktFilterCfg->paramsData[i].compareData[1],
25921 pRcvPktFilterCfg->paramsData[i].compareData[2],
25922 pRcvPktFilterCfg->paramsData[i].compareData[3],
25923 pRcvPktFilterCfg->paramsData[i].compareData[4],
25924 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025925
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25927 "MData: %d:%d:%d:%d:%d:%d\n",
25928 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25929 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25930 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25931 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25932 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25933 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25934 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025935
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025936 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025937 pRcvPktFilterCfg,
25938 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025939
25940
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025941 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25942 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025943
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025945 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025946 wpalMemoryFree(pRcvPktFilterCfg);
25947 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025949 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025951 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025953 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025954}
25955
25956/**
25957 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025958
25959 @param pWDICtx: pointer to the WLAN DAL context
25960 pEventData: pointer to the event information structure
25961
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 @see
25963 @return Result of the function call
25964*/
25965WDI_Status
25966WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025967(
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 WDI_ControlBlockType* pWDICtx,
25969 WDI_EventInfoType* pEventData
25970)
25971{
25972 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25973 NULL;
25974 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25975 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025976 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 wpt_uint16 usDataOffset = 0;
25978 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025979 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25980 wpt_uint8 ucCurrentBSSSesIdx = 0;
25981 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025982
25983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025984 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025985
25986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025988 -------------------------------------------------------------------------*/
25989 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025991 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25994 {
25995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025999 }
26000
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026001 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26002 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26003 &pBSSSes);
26004 if ( NULL == pBSSSes )
26005 {
26006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026007 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026008 return WDI_STATUS_E_FAILURE;
26009 }
26010
Jeff Johnson295189b2012-06-20 16:38:30 -070026011 /*-----------------------------------------------------------------------
26012 Get message buffer
26013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26015 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026016 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026018 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026019 {
26020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26021 "Unable to get send buffer in "
26022 "WDI_ProcessFilterMatchCountReq() %x %x %x",
26023 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26024 wdiFilterMatchCountCb);
26025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026027 }
26028
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026029 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26030 wpalMemoryCopy( pSendBuffer+usDataOffset,
26031 &rcvFltPktMatchCntReqParam,
26032 sizeof(rcvFltPktMatchCntReqParam));
26033
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 //
26035 // Don't need to fill send buffer other than header
26036 //
26037 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026038 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026039
26040
26041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026042 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026044 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26045 wdiFilterMatchCountCb,
26046 pEventData->pUserData,
26047 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026048}
26049
26050/**
26051 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026052
26053 @param pWDICtx: pointer to the WLAN DAL context
26054 pEventData: pointer to the event information structure
26055
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 @see
26057 @return Result of the function call
26058*/
26059WDI_Status
26060WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026061(
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 WDI_ControlBlockType* pWDICtx,
26063 WDI_EventInfoType* pEventData
26064)
Jeff Johnsone7245742012-09-05 17:12:55 -070026065{
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26067 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026069 wpt_uint16 usDataOffset = 0;
26070 wpt_uint16 usSendSize = 0;
26071 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026072 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026073 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026074
26075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026076 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026077
26078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026080 -------------------------------------------------------------------------*/
26081 if (( NULL == pEventData ) ||
26082 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26083 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026084 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26086 {
26087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026090 return WDI_STATUS_E_FAILURE;
26091 }
26092
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026093 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026094 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26095 &pBSSSes);
26096 if ( NULL == pBSSSes )
26097 {
26098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026099 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 }
26102
26103 /*-----------------------------------------------------------------------
26104 Get message buffer
26105 -----------------------------------------------------------------------*/
26106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026107 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026108 sizeof(tHalRcvFltPktClearParam),
26109 &pSendBuffer, &usDataOffset, &usSendSize))||
26110 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26111 {
26112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26113 "Unable to get send buffer in "
26114 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26115 pEventData, pwdiRcvFltPktClearReqParamsType,
26116 wdiRcvFltPktClearFilterCb);
26117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 }
26120
26121
26122 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026123 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026125 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026126
Jeff Johnsone7245742012-09-05 17:12:55 -070026127 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26128 wpalMemoryCopy( pSendBuffer+usDataOffset,
26129 &rcvFltPktClearParam,
26130 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026131
26132 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026133 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026134
26135
26136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026140 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026141 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026142}
26143
26144/**
26145 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026146
26147 @param pWDICtx: pointer to the WLAN DAL context
26148 pEventData: pointer to the event information structure
26149
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 @see
26151 @return Result of the function call
26152*/
26153WDI_Status
26154WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026155(
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 WDI_ControlBlockType* pWDICtx,
26157 WDI_EventInfoType* pEventData
26158)
26159{
Jeff Johnson295189b2012-06-20 16:38:30 -070026160 eHalStatus halStatus;
26161 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026162 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26163 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26165
26166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026167 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026168
26169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026171 -------------------------------------------------------------------------*/
26172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26173 ( NULL == pEventData->pEventData ))
26174 {
26175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026179 }
26180
Jeff Johnsone7245742012-09-05 17:12:55 -070026181 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026182
26183 /*-------------------------------------------------------------------------
26184 Extract response and send it to UMAC
26185 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026186 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26187 {
26188 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26189 pEventData->pEventData,
26190 sizeof(halRcvFltPktSetMcListRsp));
26191
26192 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26193 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26194 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26195 halRcvFltPktSetMcListRsp.bssIdx;
26196 }
26197 else
26198 {
26199 halStatus = *((eHalStatus*)pEventData->pEventData);
26200 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26201 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026202
26203 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026204 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026205
Jeff Johnsone7245742012-09-05 17:12:55 -070026206 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026207}
26208
26209/**
26210 @brief Process Set Rsp function (called when a
26211 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026212
26213 @param pWDICtx: pointer to the WLAN DAL context
26214 pEventData: pointer to the event information structure
26215
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 @see
26217 @return Result of the function call
26218*/
26219WDI_Status
26220WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026221(
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 WDI_ControlBlockType* pWDICtx,
26223 WDI_EventInfoType* pEventData
26224)
26225{
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 eHalStatus halStatus;
26227 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026228 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26229 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26231
26232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026233 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026234
26235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026237 -------------------------------------------------------------------------*/
26238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26239 ( NULL == pEventData->pEventData ))
26240 {
26241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026245 }
26246
26247 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026248 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026249
26250 /*-------------------------------------------------------------------------
26251 Extract response and send it to UMAC
26252 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026253 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26254 {
26255 wpalMemoryCopy( &halSetPktFilterRspParams,
26256 pEventData->pEventData,
26257 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026258
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026259 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26260 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26261 }
26262 else
26263 {
26264 halStatus = *((eHalStatus*)pEventData->pEventData);
26265 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26266 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026268 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026269
Jeff Johnsone7245742012-09-05 17:12:55 -070026270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026271}
26272
26273/**
26274 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026275
26276 @param pWDICtx: pointer to the WLAN DAL context
26277 pEventData: pointer to the event information structure
26278
Jeff Johnson295189b2012-06-20 16:38:30 -070026279 @see
26280 @return Result of the function call
26281*/
26282WDI_Status
26283WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026284(
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 WDI_ControlBlockType* pWDICtx,
26286 WDI_EventInfoType* pEventData
26287)
26288{
Jeff Johnson295189b2012-06-20 16:38:30 -070026289 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026291 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26292 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026293
26294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26295
26296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026297 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026298
26299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 -------------------------------------------------------------------------*/
26302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26303 ( NULL == pEventData->pEventData ))
26304 {
26305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026309 }
26310
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026312
26313 /*-------------------------------------------------------------------------
26314 Extract response and send it to UMAC
26315 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026316 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26317 {
26318 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26319 pEventData->pEventData,
26320 sizeof(halRcvFltrPktMatachRsp));
26321
26322 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26323 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26324 }
26325 else
26326 {
26327 halStatus = *((eHalStatus*)pEventData->pEventData);
26328 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26329 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026330
26331 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026332 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026333
Jeff Johnsone7245742012-09-05 17:12:55 -070026334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026335}
26336
26337/**
26338 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026339
26340 @param pWDICtx: pointer to the WLAN DAL context
26341 pEventData: pointer to the event information structure
26342
Jeff Johnson295189b2012-06-20 16:38:30 -070026343 @see
26344 @return Result of the function call
26345*/
26346WDI_Status
26347WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026348(
Jeff Johnson295189b2012-06-20 16:38:30 -070026349 WDI_ControlBlockType* pWDICtx,
26350 WDI_EventInfoType* pEventData
26351)
26352{
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 eHalStatus halStatus;
26354 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026355 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26356 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26358
26359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026360 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026361
26362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 -------------------------------------------------------------------------*/
26365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26366 ( NULL == pEventData->pEventData ))
26367 {
26368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026372 }
26373
26374 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026375 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026376
26377 /*-------------------------------------------------------------------------
26378 Extract response and send it to UMAC
26379 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026380 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26381 {
26382 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26383 pEventData->pEventData,
26384 sizeof(halRcvFltPktClearRspMsg));
26385
26386 wdiRcvFltPktClearRspParamsType.wdiStatus =
26387 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26388 wdiRcvFltPktClearRspParamsType.bssIdx =
26389 halRcvFltPktClearRspMsg.bssIdx;
26390 }
26391 else
26392 {
26393 halStatus = *((eHalStatus*)pEventData->pEventData);
26394 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026396
26397 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026398 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026399
Jeff Johnsone7245742012-09-05 17:12:55 -070026400 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026401}
26402#endif // WLAN_FEATURE_PACKET_FILTERING
26403
26404/**
26405 @brief Process Shutdown Rsp function
26406 There is no shutdown response comming from HAL
26407 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026408
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026410 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026411
26412 @see
26413 @return Result of the function call
26414*/
26415WDI_Status
26416WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026417(
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 WDI_ControlBlockType* pWDICtx,
26419 WDI_EventInfoType* pEventData
26420)
26421{
26422 /*There is no shutdown response comming from HAL - function just kept for
26423 simmetry */
26424 WDI_ASSERT(0);
26425 return WDI_STATUS_SUCCESS;
26426}/*WDI_ProcessShutdownRsp*/
26427
26428/**
26429 @brief WDI_SetPowerParamsReq
26430
Jeff Johnsone7245742012-09-05 17:12:55 -070026431 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026433
Jeff Johnson295189b2012-06-20 16:38:30 -070026434 wdiPowerParamsCb: callback for passing back the response
26435 of the Set Power Params operation received from the
26436 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026437
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 callback
26440
Jeff Johnson295189b2012-06-20 16:38:30 -070026441 @return Result of the function call
26442*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026443WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026444WDI_SetPowerParamsReq
26445(
26446 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26447 WDI_SetPowerParamsCb wdiPowerParamsCb,
26448 void* pUserData
26449)
26450{
26451 WDI_EventInfoType wdiEventData;
26452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26453
26454 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 ------------------------------------------------------------------------*/
26457 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26458 {
26459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26460 "WDI API call before module is initialized - Fail request");
26461
Jeff Johnsone7245742012-09-05 17:12:55 -070026462 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 }
26464
26465 /*------------------------------------------------------------------------
26466 Fill in Event data and post to the Main FSM
26467 ------------------------------------------------------------------------*/
26468 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026469 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026470 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026471 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 wdiEventData.pUserData = pUserData;
26473
26474 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26475}/*WDI_SetPowerParamsReq*/
26476
26477/**
26478 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026479
26480 @param pWDICtx: pointer to the WLAN DAL context
26481 pEventData: pointer to the event information structure
26482
Jeff Johnson295189b2012-06-20 16:38:30 -070026483 @see
26484 @return Result of the function call
26485*/
26486WDI_Status
26487WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026488(
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 WDI_ControlBlockType* pWDICtx,
26490 WDI_EventInfoType* pEventData
26491)
26492{
26493 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26494 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 wpt_uint16 usDataOffset = 0;
26497 wpt_uint16 usSendSize = 0;
26498 tSetPowerParamsType powerParams;
26499
26500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026502 -------------------------------------------------------------------------*/
26503 if (( NULL == pEventData ) ||
26504 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26505 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26506 {
26507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026511 }
26512
26513 /*-----------------------------------------------------------------------
26514 Get message buffer
26515 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 sizeof(powerParams),
26518 &pSendBuffer, &usDataOffset, &usSendSize))||
26519 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26520 {
26521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26522 "Unable to get send buffer in Set PNO req %x %x %x",
26523 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026526 }
26527
26528 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026529 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026530 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26531
26532 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026533 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026534 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26535
26536 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026537 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026538 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26539
26540 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26543
26544 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026545 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026546 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26547
26548 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026549 powerParams.uBETInterval =
26550 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026551
Yue Ma0da19492013-05-13 17:01:29 -070026552 /* MAX LI for modulated DTIM */
26553 powerParams.uMaxLIModulatedDTIM =
26554 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026555
26556 wpalMemoryCopy( pSendBuffer+usDataOffset,
26557 &powerParams,
26558 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026559
26560 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026561 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026562
26563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26567 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026568}
26569
26570/**
26571 @brief Process Power Params Rsp function (called when a
26572 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026573
26574 @param pWDICtx: pointer to the WLAN DAL context
26575 pEventData: pointer to the event information structure
26576
Jeff Johnson295189b2012-06-20 16:38:30 -070026577 @see
26578 @return Result of the function call
26579*/
26580WDI_Status
26581WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026582(
Jeff Johnson295189b2012-06-20 16:38:30 -070026583 WDI_ControlBlockType* pWDICtx,
26584 WDI_EventInfoType* pEventData
26585)
26586{
26587 WDI_Status wdiStatus;
26588 eHalStatus halStatus;
26589 WDI_SetPowerParamsCb wdiPowerParamsCb;
26590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26591
26592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026594 -------------------------------------------------------------------------*/
26595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26596 ( NULL == pEventData->pEventData ))
26597 {
26598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026602 }
26603
Jeff Johnsone7245742012-09-05 17:12:55 -070026604 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026605
26606 /*-------------------------------------------------------------------------
26607 Extract response and send it to UMAC
26608 -------------------------------------------------------------------------*/
26609 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026611
26612 /*Notify UMAC*/
26613 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26614
Jeff Johnsone7245742012-09-05 17:12:55 -070026615 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026616}/*WDI_ProcessSetPowerParamsRsp*/
26617
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026618/**
26619 @brief WDI_dhcpStartInd
26620 Host will send an event to the FW when DHCP is initiated
26621
26622 @param
26623 WDI_DHCPInd: DHCP Indication
26624 @see
26625 @return Result of the function call
26626*/
26627WDI_Status
26628WDI_dhcpStartInd
26629(
26630 WDI_DHCPInd *wdiDHCPInd
26631)
26632{
26633 WDI_EventInfoType wdiEventData;
26634
26635 /*------------------------------------------------------------------------
26636 Sanity Check
26637 ------------------------------------------------------------------------*/
26638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26639 {
26640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26641 "WDI API call before module is initialized - Fail request");
26642
26643 return WDI_STATUS_E_NOT_ALLOWED;
26644 }
26645
26646 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26647 wdiEventData.pEventData = wdiDHCPInd;
26648 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26649 wdiEventData.pCBfnc = NULL;
26650 wdiEventData.pUserData = NULL;
26651
26652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26653}
26654
26655
26656/**
26657 @brief WDI_dhcpStopInd
26658 Host will send an event to the FW when DHCP is completed
26659
26660 @param
26661 WDI_DHCPInd: DHCP Indication
26662 @see
26663 @return Result of the function call
26664*/
26665WDI_Status
26666WDI_dhcpStopInd
26667(
26668 WDI_DHCPInd *wdiDHCPInd
26669)
26670{
26671 WDI_EventInfoType wdiEventData;
26672
26673 /*------------------------------------------------------------------------
26674 Sanity Check
26675 ------------------------------------------------------------------------*/
26676 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26677 {
26678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26679 "WDI API call before module is initialized - Fail request");
26680
26681 return WDI_STATUS_E_NOT_ALLOWED;
26682 }
26683
26684 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26685 wdiEventData.pEventData = wdiDHCPInd;
26686 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26687 wdiEventData.pCBfnc = NULL;
26688 wdiEventData.pUserData = NULL;
26689
26690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26691}
26692
26693
26694/**
26695 @brief Process DHCP Start Indication message and post it to HAL
26696
26697 @param pWDICtx: pointer to the WLAN DAL context
26698 pEventData: pointer to the event information structure
26699
26700 @see
26701 @return Result of the function call
26702*/
26703WDI_Status
26704WDI_ProcessDHCPStartInd
26705(
26706 WDI_ControlBlockType* pWDICtx,
26707 WDI_EventInfoType* pEventData
26708)
26709{
26710 wpt_uint8* pSendBuffer = NULL;
26711 wpt_uint16 usDataOffset = 0;
26712 wpt_uint16 usSendSize = 0;
26713 wpt_uint16 usLen = 0;
26714 WDI_DHCPInd* pwdiDHCPInd = NULL;
26715 tDHCPInfo* pDHCPInfo;
26716
26717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26718
26719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26720 "%s", __func__);
26721
26722 /*-------------------------------------------------------------------------
26723 Sanity check
26724 -------------------------------------------------------------------------*/
26725 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26726 {
26727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26728 "%s: Invalid parameters", __func__);
26729 WDI_ASSERT(0);
26730 return WDI_STATUS_E_FAILURE;
26731 }
26732 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26733 /*-----------------------------------------------------------------------
26734 Get message buffer
26735 -----------------------------------------------------------------------*/
26736
26737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26738 WDI_DHCP_START_IND,
26739 sizeof(tDHCPInfo),
26740 &pSendBuffer, &usDataOffset, &usSendSize))||
26741 ( usSendSize < (usDataOffset + usLen )))
26742 {
26743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26744 "Unable to get send buffer in DHCP Start req %p ",
26745 pEventData);
26746 WDI_ASSERT(0);
26747 return WDI_STATUS_E_FAILURE;
26748 }
26749
26750 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26751 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26752 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26753 WDI_MAC_ADDR_LEN);
26754
26755 pWDICtx->pReqStatusUserData = NULL;
26756 pWDICtx->pfncRspCB = NULL;
26757
26758 /*-------------------------------------------------------------------------
26759 Send DHCP Start Indication to HAL
26760 -------------------------------------------------------------------------*/
26761 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26762
26763}/*WDI_ProcessDHCPStartInd*/
26764
26765/**
26766 @brief Process DHCP Stop indication message and post it to HAL
26767
26768 @param pWDICtx: pointer to the WLAN DAL context
26769 pEventData: pointer to the event information structure
26770
26771 @see
26772 @return Result of the function call
26773*/
26774WDI_Status
26775WDI_ProcessDHCPStopInd
26776(
26777 WDI_ControlBlockType* pWDICtx,
26778 WDI_EventInfoType* pEventData
26779)
26780{
26781 wpt_uint8* pSendBuffer = NULL;
26782 wpt_uint16 usDataOffset = 0;
26783 wpt_uint16 usSendSize = 0;
26784 wpt_uint16 usLen = 0;
26785 WDI_DHCPInd* pwdiDHCPInd = NULL;
26786 tDHCPInfo* pDHCPInfo;
26787
26788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26789
26790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26791 "%s", __func__);
26792
26793 /*-------------------------------------------------------------------------
26794 Sanity check
26795 -------------------------------------------------------------------------*/
26796
26797 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26798 {
26799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26800 "%s: Invalid parameters", __func__);
26801 WDI_ASSERT(0);
26802 return WDI_STATUS_E_FAILURE;
26803 }
26804 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26805 /*-----------------------------------------------------------------------
26806 Get message buffer
26807 -----------------------------------------------------------------------*/
26808
26809 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26810 WDI_DHCP_STOP_IND,
26811 sizeof(tDHCPInfo),
26812 &pSendBuffer, &usDataOffset, &usSendSize))||
26813 ( usSendSize < (usDataOffset + usLen )))
26814 {
26815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26816 "Unable to get send buffer in DHCP Start req %p ",
26817 pEventData);
26818 WDI_ASSERT(0);
26819 return WDI_STATUS_E_FAILURE;
26820 }
26821
26822 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26823 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26824 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26825 WDI_MAC_ADDR_LEN);
26826
26827 pWDICtx->pReqStatusUserData = NULL;
26828 pWDICtx->pfncRspCB = NULL;
26829 /*-------------------------------------------------------------------------
26830 Send DHCP Stop indication to HAL
26831 -------------------------------------------------------------------------*/
26832 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26833
26834}/*WDI_ProcessDHCPStopInd*/
26835
26836
Jeff Johnson295189b2012-06-20 16:38:30 -070026837#ifdef WLAN_FEATURE_GTK_OFFLOAD
26838/**
26839 @brief WDI_GTKOffloadReq will be called when the upper MAC
26840 wants to set GTK Rekey Counter while in power save. Upon
26841 the call of this API the WLAN DAL will pack and send a
26842 HAL GTK offload request message to the lower RIVA
26843 sub-system if DAL is in state STARTED.
26844
26845 In state BUSY this request will be queued. Request won't
26846 be allowed in any other state.
26847
26848 WDI_PostAssocReq must have been called.
26849
26850 @param pwdiGtkOffloadParams: the GTK offload as specified
26851 by the Device Interface
26852
26853 wdiGtkOffloadCb: callback for passing back the response
26854 of the GTK offload operation received from the device
26855
26856 pUserData: user data will be passed back with the
26857 callback
26858
26859 @see WDI_PostAssocReq
26860 @return Result of the function call
26861*/
26862WDI_Status
26863WDI_GTKOffloadReq
26864(
26865 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26866 WDI_GtkOffloadCb wdiGtkOffloadCb,
26867 void* pUserData
26868)
26869{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026870 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26872
26873 /*------------------------------------------------------------------------
26874 Sanity Check
26875 ------------------------------------------------------------------------*/
26876 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26877 {
26878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26879 "WDI API call before module is initialized - Fail request");
26880
26881 return WDI_STATUS_E_NOT_ALLOWED;
26882 }
26883
26884 /*------------------------------------------------------------------------
26885 Fill in Event data and post to the Main FSM
26886 ------------------------------------------------------------------------*/
26887 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26888 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026889 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026890 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26891 wdiEventData.pUserData = pUserData;
26892
26893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26894}
26895
26896
26897/**
26898 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26899 MAC wants to get GTK Rekey Counter while in power save.
26900 Upon the call of this API the WLAN DAL will pack and
26901 send a HAL GTK offload request message to the lower RIVA
26902 sub-system if DAL is in state STARTED.
26903
26904 In state BUSY this request will be queued. Request won't
26905 be allowed in any other state.
26906
26907 WDI_PostAssocReq must have been called.
26908
26909 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26910 Information Message as specified by the
26911 Device Interface
26912
26913 wdiGtkOffloadGetInfoCb: callback for passing back the
26914 response of the GTK offload operation received from the
26915 device
26916
26917 pUserData: user data will be passed back with the
26918 callback
26919
26920 @see WDI_PostAssocReq
26921 @return Result of the function call
26922*/
26923WDI_Status
26924WDI_GTKOffloadGetInfoReq
26925(
26926 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26927 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26928 void* pUserData
26929)
26930{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026931 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26933
26934 /*------------------------------------------------------------------------
26935 Sanity Check
26936 ------------------------------------------------------------------------*/
26937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26938 {
26939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26940 "WDI API call before module is initialized - Fail request");
26941
26942 return WDI_STATUS_E_NOT_ALLOWED;
26943 }
26944
26945 /*------------------------------------------------------------------------
26946 Fill in Event data and post to the Main FSM
26947 ------------------------------------------------------------------------*/
26948 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26949 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26950 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26951 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26952 wdiEventData.pUserData = pUserData;
26953
26954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26955}
26956
26957
26958/**
26959 @brief Process set GTK Offload Request function
26960
26961 @param pWDICtx: pointer to the WLAN DAL context
26962 pEventData: pointer to the event information structure
26963
26964 @see
26965 @return Result of the function call
26966*/
26967WDI_Status
26968WDI_ProcessGTKOffloadReq
26969(
26970 WDI_ControlBlockType* pWDICtx,
26971 WDI_EventInfoType* pEventData
26972)
26973{
26974 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26975 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26976 wpt_uint8* pSendBuffer = NULL;
26977 wpt_uint16 usDataOffset = 0;
26978 wpt_uint16 usSendSize = 0;
26979 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026980 wpt_uint8 ucCurrentSessionId = 0;
26981 WDI_BSSSessionType* pBSSSes = NULL;
26982
Jeff Johnson295189b2012-06-20 16:38:30 -070026983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26984
26985 /*-------------------------------------------------------------------------
26986 Sanity check
26987 -------------------------------------------------------------------------*/
26988 if (( NULL == pEventData ) ||
26989 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26990 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26991 {
26992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026994 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026995 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070026996 }
26997
26998 /*-----------------------------------------------------------------------
26999 Get message buffer
27000 -----------------------------------------------------------------------*/
27001 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27002 sizeof(gtkOffloadReqParams),
27003 &pSendBuffer, &usDataOffset, &usSendSize))||
27004 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27005 {
27006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27007 "Unable to get send buffer in GTK offload req %x %x %x",
27008 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27009 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027010 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027011 }
27012
27013 //
27014 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27015 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027016 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27017 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27018 &pBSSSes);
27019 if ( NULL == pBSSSes )
27020 {
27021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027022 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027023 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027024 }
27025
27026 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27027
Jeff Johnson295189b2012-06-20 16:38:30 -070027028 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27029 // Copy KCK
27030 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27031 // Copy KEK
27032 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27033 // Copy KeyReplayCounter
27034 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27035
27036 wpalMemoryCopy( pSendBuffer+usDataOffset,
27037 &gtkOffloadReqParams,
27038 sizeof(gtkOffloadReqParams));
27039
27040 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27041 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27042
27043 /*-------------------------------------------------------------------------
27044 Send Get STA Request to HAL
27045 -------------------------------------------------------------------------*/
27046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27047 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027048
27049fail:
27050 // Release the message buffer so we don't leak
27051 wpalMemoryFree(pSendBuffer);
27052
27053failRequest:
27054 //WDA should have failure check to avoid the memory leak
27055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027056}
27057
27058
27059/**
27060 @brief Process GTK Offload Get Information Request function
27061
27062 @param pWDICtx: pointer to the WLAN DAL context
27063 pEventData: pointer to the event information structure
27064
27065 @see
27066 @return Result of the function call
27067*/
27068WDI_Status
27069WDI_ProcessGTKOffloadGetInfoReq
27070(
27071 WDI_ControlBlockType* pWDICtx,
27072 WDI_EventInfoType* pEventData
27073)
27074{
27075 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27076 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27077 wpt_uint8* pSendBuffer = NULL;
27078 wpt_uint16 usDataOffset = 0;
27079 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027080 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27081 wpt_uint8 ucCurrentSessionId = 0;
27082 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027083
27084 /*-------------------------------------------------------------------------
27085 Sanity check
27086 -------------------------------------------------------------------------*/
27087 if (( NULL == pEventData ) ||
27088 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27089 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27090 {
27091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027093 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027094 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027095 }
27096
27097 /*-----------------------------------------------------------------------
27098 Get message buffer
27099 -----------------------------------------------------------------------*/
27100 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027101 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027103 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 {
27105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27106 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27107 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27108 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027109 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027110 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027111 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27112 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27113 &pBSSSes);
27114 if ( NULL == pBSSSes )
27115 {
27116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027117 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027118 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027119 }
27120 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027121
27122 //
27123 // Don't need to fill send buffer other than header
27124 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027125 wpalMemoryCopy( pSendBuffer+usDataOffset,
27126 &halGtkOffloadGetInfoReqParams,
27127 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027128
27129 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27130 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27131
27132 /*-------------------------------------------------------------------------
27133 Send Get STA Request to HAL
27134 -------------------------------------------------------------------------*/
27135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27136 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027137fail:
27138 // Release the message buffer so we don't leak
27139 wpalMemoryFree(pSendBuffer);
27140
27141failRequest:
27142 //WDA should have failure check to avoid the memory leak
27143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027144}
27145
27146/**
27147 @brief Process host offload Rsp function (called when a
27148 response is being received over the bus from HAL)
27149
27150 @param pWDICtx: pointer to the WLAN DAL context
27151 pEventData: pointer to the event information structure
27152
27153 @see
27154 @return Result of the function call
27155*/
27156WDI_Status
27157WDI_ProcessGtkOffloadRsp
27158(
27159 WDI_ControlBlockType* pWDICtx,
27160 WDI_EventInfoType* pEventData
27161)
27162{
Jeff Johnson295189b2012-06-20 16:38:30 -070027163 eHalStatus halStatus;
27164 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027165 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27166 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027167
27168 /*-------------------------------------------------------------------------
27169 Sanity check
27170 -------------------------------------------------------------------------*/
27171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27172 ( NULL == pEventData->pEventData))
27173 {
27174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027176 WDI_ASSERT(0);
27177 return WDI_STATUS_E_FAILURE;
27178 }
27179
Wilson Yangcf2cf012013-10-10 23:13:38 -070027180 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27181
Jeff Johnson295189b2012-06-20 16:38:30 -070027182 /*-------------------------------------------------------------------------
27183 Extract response and send it to UMAC
27184 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027185 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27186 {
27187 wpalMemoryCopy( &halGtkOffloadRspParams,
27188 pEventData->pEventData,
27189 sizeof(halGtkOffloadRspParams));
27190
27191 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027192 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027193 wdiGtkOffloadRsparams.bssIdx =
27194 halGtkOffloadRspParams.bssIdx;
27195 }
27196 else
27197 {
27198 halStatus = *((eHalStatus*)pEventData->pEventData);
27199 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27200 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027201
27202 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027203 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027204
27205 return WDI_STATUS_SUCCESS;
27206}
27207
27208/**
27209 @brief Process GTK Offload Get Information Response function
27210
27211 @param pWDICtx: pointer to the WLAN DAL context
27212 pEventData: pointer to the event information structure
27213
27214 @see
27215 @return Result of the function call
27216*/
27217WDI_Status
27218WDI_ProcessGTKOffloadGetInfoRsp
27219(
27220 WDI_ControlBlockType* pWDICtx,
27221 WDI_EventInfoType* pEventData
27222)
27223{
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027226 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27227 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027228 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027229
Jeff Johnson295189b2012-06-20 16:38:30 -070027230
27231 /*-------------------------------------------------------------------------
27232 Sanity check
27233 -------------------------------------------------------------------------*/
27234 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27235 ( NULL == pEventData->pEventData ))
27236 {
27237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027239 WDI_ASSERT(0);
27240 return WDI_STATUS_E_FAILURE;
27241 }
27242
Wilson Yangcf2cf012013-10-10 23:13:38 -070027243 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27244
27245 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027246 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*/