blob: edc182f2ab138b2184e2dc21647a5d52de9de9c0 [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 */
Arif Hussainfc753992013-08-09 15:09:58 -0700397#if defined WLAN_FEATURE_RELIABLE_MCAST
398 WDI_ProcessLBPLeaderReq, /* WDI_LBP_LEADER_REQ */
399#else
400 NULL,
401#endif /* WLAN_FEATURE_RELIABLE_MCAST */
402
403#ifdef FEATURE_CESIUM_PROPRIETARY
404 WDI_ProcessIbssPeerInfoReq, /* WDI_HAL_IBSS_PEER_INFO_REQ */
405#else
406 NULL,
407#endif /* FEATURE_CESIUM_PROPRIETARY */
Rajeev3db91f12013-10-05 11:03:42 +0530408
409#ifdef FEATURE_WLAN_BATCH_SCAN
410 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
411#else
412 NULL,
413#endif /* FEATURE_WLAN_BATCH_SCAN */
414
Arif Hussainfc753992013-08-09 15:09:58 -0700415 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schangd82195a2013-03-13 18:41:24 -0700416 /*-------------------------------------------------------------------------
417 Indications
418 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700419 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800420 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530421 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
422 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700423#ifdef WLAN_FEATURE_11W
424 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
425#else
426 NULL,
427#endif
Yue Ma365933a2013-08-14 15:59:08 -0700428 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
429 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530430#ifdef FEATURE_WLAN_BATCH_SCAN
431 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
432 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
433#else
434 NULL,
435 NULL,
436#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -0700437 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700438};
439
440
Jeff Johnsone7245742012-09-05 17:12:55 -0700441/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700442 DAL Request Processing Array - the functions in this table will only be
443 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700444 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700445 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700446WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700447{
448 /*INIT*/
449 WDI_ProcessStartRsp, /* WDI_START_RESP */
450 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
451 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
452
453 /*SCAN*/
454 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
455 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
456 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
457 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
458
459 /* ASSOCIATION*/
460 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
461 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
462 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
463 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
464 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
465
466 /* Security */
467 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
468 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
469 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
470 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
471
472 /* QoS and BA APIs */
473 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
474 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
475 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
476 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
477 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
478
479 /* Miscellaneous Control APIs */
480 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
481 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
482 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
483 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
484 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
485
486 /* BA APIs*/
487 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
488 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700489
Jeff Johnson295189b2012-06-20 16:38:30 -0700490 /* IBSS APIs*/
491 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
492 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
493
494 /*Soft AP APIs*/
495 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
496 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
497 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
498 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
499
500 /* PowerSave APIs */
501 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
502 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
503 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
504 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
505 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
506 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
507 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
508 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
509 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
510 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
511 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
512 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
513 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
514 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
515 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
516 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
517 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
518 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700519
Jeff Johnson295189b2012-06-20 16:38:30 -0700520
521 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
522
523 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
524 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
525#ifdef WLAN_FEATURE_VOWIFI_11R
526 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
527#else
528 NULL,
529#endif /* WLAN_FEATURE_VOWIFI_11R */
530 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
531 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700532#ifdef FEATURE_OEM_DATA_SUPPORT
533 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
534#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700535 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700536#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700537 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
538
Jeff Johnson295189b2012-06-20 16:38:30 -0700539 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700540
Jeff Johnson295189b2012-06-20 16:38:30 -0700541 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700542
Jeff Johnsone7245742012-09-05 17:12:55 -0700543 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
544
Jeff Johnson295189b2012-06-20 16:38:30 -0700545#ifdef FEATURE_WLAN_SCAN_PNO
546 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
547 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
548 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
549#else
550 NULL,
551 NULL,
552 NULL,
553#endif // FEATURE_WLAN_SCAN_PNO
554
555 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
556
557 /*---------------------------------------------------------------------
558 Indications
559 ---------------------------------------------------------------------*/
560#ifdef WLAN_FEATURE_PACKET_FILTERING
561 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700562 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700563 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700564 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700565 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700566 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700567 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700568 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700569#else
570 NULL,
571 NULL,
572 NULL,
573 NULL,
574#endif // WLAN_FEATURE_PACKET_FILTERING
575
576 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
577 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
578
579 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
580#ifdef FEATURE_WLAN_CCX
581 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
582#else
583 NULL,
584#endif
585
586#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700587 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
588 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700589#else
590 NULL,
591 NULL,
592#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700593 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
594 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700595#ifdef WLAN_FEATURE_11AC
596 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700597#else
598 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700599#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800600#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
601 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
602#else
603 NULL,
604#endif
schangd82195a2013-03-13 18:41:24 -0700605 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700606#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700607 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700608#else
609 NULL,
610#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530611#ifdef FEATURE_WLAN_TDLS
612 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
613#else
614 NULL,
615#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700616#ifdef FEATURE_WLAN_LPHB
617 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
618#else
619 NULL,
620#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530621
622#ifdef FEATURE_WLAN_BATCH_SCAN
623 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
624#else
625 NULL,
626#endif /*FEATURE_WLAN_BATCH_SCAN*/
627
Jeff Johnson295189b2012-06-20 16:38:30 -0700628 /*---------------------------------------------------------------------
629 Indications
630 ---------------------------------------------------------------------*/
631 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
632 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
633 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
634 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
635 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
636 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
637
638 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
639
640 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
641
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700643
644#ifdef FEATURE_WLAN_SCAN_PNO
645 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
646#else
647 NULL,
648#endif // FEATURE_WLAN_SCAN_PNO
649
650#ifdef WLAN_WAKEUP_EVENTS
651 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
652#else // WLAN_WAKEUP_EVENTS
653 NULL,
654#endif // WLAN_WAKEUP_EVENTS
655
656 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800657
Viral Modi9dc288a2012-12-10 13:09:21 -0800658 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530659#ifdef FEATURE_WLAN_TDLS
660 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
661#else
662 NULL,
663#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700664
665#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700666 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700667#else
668 NULL,
669#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700670
671 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700672
673 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530674
675#ifdef FEATURE_WLAN_BATCH_SCAN
676 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
677#else
678 NULL,
679#endif
680
Jeff Johnson295189b2012-06-20 16:38:30 -0700681};
682
683
Jeff Johnsone7245742012-09-05 17:12:55 -0700684/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700685 WLAN DAL Global Control Block
686 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700687WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700688static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
689
Jeff Johnsone7245742012-09-05 17:12:55 -0700690const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700691
692/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700693WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700694void* WDI_GET_PAL_CTX( void )
695{
Jeff Johnsone7245742012-09-05 17:12:55 -0700696 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700697}/*WDI_GET_PAL_CTX*/
698
Jeff Johnsone7245742012-09-05 17:12:55 -0700699/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700700 Helper inline converters
701 ============================================================================*/
702/*Convert WDI driver type into HAL driver type*/
703WPT_STATIC WPT_INLINE WDI_Status
704WDI_HAL_2_WDI_STATUS
705(
706 eHalStatus halStatus
707);
708
709/*Convert WDI request type into HAL request type*/
710WPT_STATIC WPT_INLINE tHalHostMsgType
711WDI_2_HAL_REQ_TYPE
712(
713 WDI_RequestEnumType wdiReqType
714);
715
716/*Convert WDI response type into HAL response type*/
717WPT_STATIC WPT_INLINE WDI_ResponseEnumType
718HAL_2_WDI_RSP_TYPE
719(
720 tHalHostMsgType halMsg
721);
722
723/*Convert WDI driver type into HAL driver type*/
724WPT_STATIC WPT_INLINE tDriverType
725WDI_2_HAL_DRV_TYPE
726(
727 WDI_DriverType wdiDriverType
728);
729
730/*Convert WDI stop reason into HAL stop reason*/
731WPT_STATIC WPT_INLINE tHalStopType
732WDI_2_HAL_STOP_REASON
733(
734 WDI_StopType wdiStopType
735);
736
737/*Convert WDI scan mode type into HAL scan mode type*/
738WPT_STATIC WPT_INLINE eHalSysMode
739WDI_2_HAL_SCAN_MODE
740(
741 WDI_ScanMode wdiScanMode
742);
743
744/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700745WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700746WDI_2_HAL_SEC_CH_OFFSET
747(
748 WDI_HTSecondaryChannelOffset wdiSecChOffset
749);
750
751/*Convert WDI BSS type into HAL BSS type*/
752WPT_STATIC WPT_INLINE tSirBssType
753WDI_2_HAL_BSS_TYPE
754(
755 WDI_BssType wdiBSSType
756);
757
758/*Convert WDI NW type into HAL NW type*/
759WPT_STATIC WPT_INLINE tSirNwType
760WDI_2_HAL_NW_TYPE
761(
762 WDI_NwType wdiNWType
763);
764
765/*Convert WDI chanel bonding type into HAL cb type*/
766WPT_STATIC WPT_INLINE ePhyChanBondState
767WDI_2_HAL_CB_STATE
768(
769 WDI_PhyChanBondState wdiCbState
770);
771
772/*Convert WDI chanel bonding type into HAL cb type*/
773WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
774WDI_2_HAL_HT_OPER_MODE
775(
776 WDI_HTOperatingMode wdiHTOperMode
777);
778
779/*Convert WDI mimo PS type into HAL mimo PS type*/
780WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
781WDI_2_HAL_MIMO_PS
782(
783 WDI_HTMIMOPowerSaveState wdiHTOperMode
784);
785
786/*Convert WDI ENC type into HAL ENC type*/
787WPT_STATIC WPT_INLINE tAniEdType
788WDI_2_HAL_ENC_TYPE
789(
790 WDI_EncryptType wdiEncType
791);
792
793/*Convert WDI WEP type into HAL WEP type*/
794WPT_STATIC WPT_INLINE tAniWepType
795WDI_2_HAL_WEP_TYPE
796(
797 WDI_WepType wdiWEPType
798);
799
800/*Convert WDI Link State into HAL Link State*/
801WPT_STATIC WPT_INLINE tSirLinkState
802WDI_2_HAL_LINK_STATE
803(
804 WDI_LinkStateType wdiLinkState
805);
806
Jeff Johnsone7245742012-09-05 17:12:55 -0700807/*Translate a STA Context from WDI into HAL*/
808WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700809void
810WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700811(
Jeff Johnson295189b2012-06-20 16:38:30 -0700812 tConfigStaParams* phalConfigSta,
813 WDI_ConfigStaReqInfoType* pwdiConfigSta
814);
Jeff Johnsone7245742012-09-05 17:12:55 -0700815
816/*Translate a Rate set info from WDI into HAL*/
817WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700818WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700819(
Jeff Johnson295189b2012-06-20 16:38:30 -0700820 tSirMacRateSet* pHalRateSet,
821 WDI_RateSet* pwdiRateSet
822);
823
824/*Translate an EDCA Parameter Record from WDI into HAL*/
825WPT_STATIC WPT_INLINE void
826WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700827(
Jeff Johnson295189b2012-06-20 16:38:30 -0700828 tSirMacEdcaParamRecord* phalEdcaParam,
829 WDI_EdcaParamRecord* pWDIEdcaParam
830);
831
832/*Copy a management frame header from WDI fmt into HAL fmt*/
833WPT_STATIC WPT_INLINE void
834WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
835(
836 tSirMacMgmtHdr* pmacMgmtHdr,
837 WDI_MacMgmtHdr* pwdiMacMgmtHdr
838);
839
840/*Copy config bss parameters from WDI fmt into HAL fmt*/
841WPT_STATIC WPT_INLINE void
842WDI_CopyWDIConfigBSSToHALConfigBSS
843(
844 tConfigBssParams* phalConfigBSS,
845 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
846);
847
Jeff Johnsone7245742012-09-05 17:12:55 -0700848/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 pointed to by user data */
850WPT_STATIC WPT_INLINE void
851WDI_ExtractRequestCBFromEvent
852(
853 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700854 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700855 void** ppUserData
856);
857
858wpt_uint8
859WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700860(
Jeff Johnson295189b2012-06-20 16:38:30 -0700861 WDI_ControlBlockType* pWDICtx,
862 WDI_BSSSessionType** ppSession
863);
864
865void
866WDI_AddBcastSTAtoSTATable
867(
868 WDI_ControlBlockType* pWDICtx,
869 WDI_AddStaParams * staParams,
870 wpt_uint16 usBcastStaIdx
871);
872
873WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700874(
Jeff Johnson295189b2012-06-20 16:38:30 -0700875 WDI_ControlBlockType* pWDICtx,
876 WDI_EventInfoType* pEventData
877);
878
879void
880WDI_SetPowerStateCb
881(
882 wpt_status status,
883 unsigned int dxePhyAddr,
884 void *pContext
885);
886
887#define CASE_RETURN_STRING( str ) \
888 case ( ( str ) ): return( #str ); break \
889
890/**
891 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700892
893 @param wdiReqMsgId: WDI Message request Id
894
895 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700896 @return Result of the function call
897*/
898static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
899{
900 switch (wdiReqMsgId)
901 {
902 CASE_RETURN_STRING( WDI_START_REQ );
903 CASE_RETURN_STRING( WDI_STOP_REQ );
904 CASE_RETURN_STRING( WDI_CLOSE_REQ );
905 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
906 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
907 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
908 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
909 CASE_RETURN_STRING( WDI_JOIN_REQ );
910 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
911 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
912 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
913 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
914 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
915 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
916 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
917 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
918 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
919 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
920 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
921 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
922 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
923 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
924 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
925 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
926 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
927 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
928 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
929 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
930 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
931 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
932 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
933 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
934 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
935 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussainfc753992013-08-09 15:09:58 -0700936 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530938#ifdef FEATURE_WLAN_TDLS
939 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
940#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700941 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
942 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
943 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
944 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
945 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
946 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
947 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
948 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
949 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
950 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
951 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
952 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
953 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
954 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
955 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
956 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
957 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
958 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
959 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
960 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
961 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
962 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
963 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
964 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
965 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700966 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700967 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
968 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
969 #ifdef FEATURE_WLAN_SCAN_PNO
970 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
971 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
972 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
973 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700974#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700975 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700976#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700977 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
978 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
979 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
980 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
981 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
982 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
983 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
984 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
985 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800986 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800987 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700988#ifdef WLAN_FEATURE_11W
989 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
990#endif
Rajeev3db91f12013-10-05 11:03:42 +0530991#ifdef FEATURE_WLAN_BATCH_SCAN
992 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
993 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
994 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
995#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 default:
997 return "Unknown WDI MessageId";
998 }
999}
1000
1001
1002
1003/**
1004 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001005
1006 @param wdiRespMsgId: WDI Message response Id
1007
1008 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001009 @return Result of the function call
1010*/
1011static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1012{
1013 switch (wdiRespMsgId)
1014 {
1015 CASE_RETURN_STRING( WDI_START_RESP );
1016 CASE_RETURN_STRING( WDI_STOP_RESP );
1017 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1018 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1019 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1020 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1021 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1022 CASE_RETURN_STRING( WDI_JOIN_RESP );
1023 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1024 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1025 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1026 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1027 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1028 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1029 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1030 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1031 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1032 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1033 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1034 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1035 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1036 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1037 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1038 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1039 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1040 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1041 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1042 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1043 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1044 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1045 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1046 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1047 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1048 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1049 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301050#ifdef FEATURE_WLAN_TDLS
1051 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1052 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1053#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1055 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1056 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1057 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1058 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1059 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1060 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1061 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1062 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1063 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1064 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1065 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1066 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1067 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1068 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1069 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1070 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1071 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1072 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1073 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1074 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1075 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1076 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1077 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1078 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001079 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001080 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1081 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1082 #ifdef FEATURE_WLAN_SCAN_PNO
1083 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1084 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1085 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1086 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001087#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001088 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001089#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001090 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1091 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1092 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1093 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1094 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1095 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1096 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1097 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001098 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301099#ifdef FEATURE_WLAN_BATCH_SCAN
1100 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1101#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 default:
1103 return "Unknown WDI MessageId";
1104 }
1105}
1106
1107/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301108 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1109 Capability bitmap array.
1110 @param capabilityBitmap - Base address of Bitmap array
1111 @see
1112 @returns None
1113 */
1114void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1115{
1116 int i;
1117 char capStr[512];
1118 char *pCapStr = capStr;
1119 for (i = 0; i < 32; i++) {
1120 if ((*(capabilityBitmap + 0) & (1 << i))) {
1121 switch(i) {
1122 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1123 pCapStr += strlen("MCC");
1124 break;
1125 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1126 pCapStr += strlen("P2P");
1127 break;
1128 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1129 pCapStr += strlen("DOT11AC");
1130 break;
1131 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1132 pCapStr += strlen("SLM_SESSIONIZATION");
1133 break;
1134 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1135 pCapStr += strlen("DOT11AC_OPMODE");
1136 break;
1137 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1138 pCapStr += strlen("SAP32STA");
1139 break;
1140 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1141 pCapStr += strlen("TDLS");
1142 break;
1143 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1144 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1145 break;
1146 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1147 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1148 break;
1149 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1150 pCapStr += strlen("BEACON_OFFLOAD");
1151 break;
1152 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1153 pCapStr += strlen("SCAN_OFFLOAD");
1154 break;
1155 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1156 pCapStr += strlen("ROAM_OFFLOAD");
1157 break;
1158 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1159 pCapStr += strlen("BCN_MISS_OFFLOAD");
1160 break;
1161 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1162 pCapStr += strlen("STA_POWERSAVE");
1163 break;
1164 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1165 pCapStr += strlen("AP_UAPSD");
1166 break;
1167 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1168 pCapStr += strlen("AP_DFS");
1169 break;
1170 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1171 pCapStr += strlen("BLOCKACK");
1172 break;
1173 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1174 pCapStr += strlen("PHY_ERR");
1175 break;
1176 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1177 pCapStr += strlen("BCN_FILTER");
1178 break;
1179 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1180 pCapStr += strlen("RTT");
1181 break;
1182 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1183 pCapStr += strlen("RATECTRL");
1184 break;
1185 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1186 pCapStr += strlen("WOW");
1187 break;
1188 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1189 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1190 break;
1191 }
1192 *pCapStr++ = ',';
1193 *pCapStr++ = ' ';
1194 }
1195 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301196 pCapStr -= 2;
1197 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301198 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301200}
1201
1202/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001203 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001204
1205 @param halStatusId: HAL status Id
1206
1207 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 @return Result of the function call
1209*/
1210static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1211{
1212 switch (halStatusId)
1213 {
1214 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1215 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1216 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1217 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1218 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1219 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1220 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1221 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1222 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1223 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1224 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1225 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1226 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1227 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1228 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1229 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1230 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1231 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1232 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1233 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1234 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1235 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1236 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1237 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1238 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1239 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1240 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1241 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1242 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1243 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1244 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1245 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1246 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1247 default:
1248 return "Unknown HAL status";
1249 }
1250}
1251
Jeff Johnsone7245742012-09-05 17:12:55 -07001252/*========================================================================
1253
Jeff Johnson295189b2012-06-20 16:38:30 -07001254 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001255
Jeff Johnson295189b2012-06-20 16:38:30 -07001256==========================================================================*/
1257
1258/**
1259 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001260
Jeff Johnson295189b2012-06-20 16:38:30 -07001261 DAL will allocate all the resources it needs. It will open PAL, it will also
1262 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001263 DXE/SMD or any other drivers that they need.
1264
Jeff Johnson295189b2012-06-20 16:38:30 -07001265 @param pOSContext: pointer to the OS context provided by the UMAC
1266 will be passed on to PAL on Open
1267 ppWDIGlobalCtx: output pointer of Global Context
1268 pWdiDevCapability: output pointer of device capability
1269
1270 @return Result of the function call
1271*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001272WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001273WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001274(
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 void* pOSContext,
1276 void** ppWDIGlobalCtx,
1277 WDI_DeviceCapabilityType* pWdiDevCapability,
1278 unsigned int driverType
1279)
1280{
1281 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001284 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1286
1287 /*---------------------------------------------------------------------
1288 Sanity check
1289 ---------------------------------------------------------------------*/
1290 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1291 {
1292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1293 "Invalid input parameters in WDI_Init");
1294
Jeff Johnsone7245742012-09-05 17:12:55 -07001295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001296 }
1297
1298 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001299 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001300 ---------------------------------------------------------------------*/
1301 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1302 {
1303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1304 "WDI module already initialized - return");
1305
Jeff Johnsone7245742012-09-05 17:12:55 -07001306 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001307 }
1308
1309 /*Module is now initialized - this flag is to ensure the fact that multiple
1310 init will not happen on WDI
1311 !! - potential race does exist because read and set are not atomic,
1312 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001313 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001314
1315 /*Setup the control block */
1316 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001317 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001318
1319 /*Setup the STA Table*/
1320 wdiStatus = WDI_STATableInit(&gWDICb);
1321 if ( WDI_STATUS_SUCCESS != wdiStatus )
1322 {
1323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1324 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001325 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001326 goto fail_STATableInit;
1327 }
1328
1329 /*------------------------------------------------------------------------
1330 Open the PAL
1331 ------------------------------------------------------------------------*/
1332 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1333 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1334 {
1335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1336 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001337 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001338 goto fail_wpalOpen;
1339 }
1340
1341 /*Initialize main synchro mutex - it will be used to ensure integrity of
1342 the main WDI Control Block*/
1343 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1344 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1345 {
1346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1347 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001348 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001349 goto fail_mutex;
1350 }
1351
1352 /*Initialize the response timer - it will be used to time all messages
1353 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001354 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1355 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001356 &gWDICb);
1357 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1358 {
1359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1360 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001361 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 goto fail_timer;
1363 }
1364
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001365 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1366 WDI_SsrTimerCB,
1367 &gWDICb);
1368 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1369 {
1370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1371 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001372 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001373 goto fail_timer2;
1374 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001375 /* Initialize the WDI Pending Request Queue*/
1376 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1377 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1378 {
1379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1380 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001381 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001382 goto fail_pend_queue;
1383 }
1384
1385 /*Init WDI Pending Assoc Id Queue */
1386 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1387 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1388 {
1389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1390 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001391 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001392 goto fail_assoc_queue;
1393 }
1394
1395 /*Initialize the BSS sessions pending Queue */
1396 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1397 {
1398 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1399 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1400 {
1401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1402 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001403 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001404 goto fail_bss_queue;
1405 }
1406 }
1407
1408 /*Indicate the control block is sufficiently initialized for callbacks*/
1409 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1410
1411 /*------------------------------------------------------------------------
1412 Initialize the Data Path Utility Module
1413 ------------------------------------------------------------------------*/
1414 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1415 if ( WDI_STATUS_SUCCESS != wdiStatus )
1416 {
1417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1418 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001419 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001420 goto fail_dp_util_init;
1421 }
1422
1423 /* Init Set power state event */
1424 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001425 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 {
1427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1428 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001429 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 goto fail_power_event;
1431 }
1432
1433 /* Init WCTS action event */
1434 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 {
1437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1438 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001439 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001440 goto fail_wcts_event;
1441 }
1442
1443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001444 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001445 ------------------------------------------------------------------------*/
1446 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1447 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001448 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 wctsCBs.wctsRxMsgCBData = &gWDICb;
1450
Jeff Johnsone7245742012-09-05 17:12:55 -07001451 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001452 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001453 WDI_CT_CHANNEL_SIZE,
1454 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001455
1456 if ( NULL == gWDICb.wctsHandle )
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 WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 goto fail_wcts_open;
1461 }
1462
1463 gWDICb.driverMode = (tDriverType)driverType;
1464 /* FTM mode not need to open Transport Driver */
1465 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001466 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001467 /*------------------------------------------------------------------------
1468 Open the Data Transport
1469 ------------------------------------------------------------------------*/
1470 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1471 {
1472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001473 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001474 goto fail_wdts_open;
1475 }
1476 }
1477
1478 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001479 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001480
1481 /*Send the context as a ptr to the global WDI Control Block*/
1482 *ppWDIGlobalCtx = &gWDICb;
1483
1484 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001485 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001486 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1487 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1488 return WDI_STATUS_SUCCESS;
1489
1490 /* ERROR handlers
1491 Undo everything that completed successfully */
1492
1493 fail_wdts_open:
1494 {
1495 wpt_status eventStatus;
1496
1497 /* Closing WCTS in this scenario is tricky since it has to close
1498 the SMD channel and then we get notified asynchronously when
1499 the channel has been closed. So we take some of the logic from
1500 the "normal" close procedure in WDI_Close()
1501 */
1502
1503 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001504 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 {
1506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001507 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001508 }
1509
1510 WCTS_CloseTransport(gWDICb.wctsHandle);
1511
1512 /* Wait for WCTS to close the control transport. If we were able
1513 to reset the event flag, then we'll wait for the event,
1514 otherwise we'll wait for a maximum amount of time required for
1515 the channel to be closed */
1516 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1517 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001518 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001519 WDI_WCTS_ACTION_TIMEOUT);
1520 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1521 {
1522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001523 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 }
1525 }
1526 else
1527 {
1528 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1529 }
1530 }
1531 fail_wcts_open:
1532 wpalEventDelete(&gWDICb.wctsActionEvent);
1533 fail_wcts_event:
1534 wpalEventDelete(&gWDICb.setPowerStateEvent);
1535 fail_power_event:
1536 WDI_DP_UtilsExit(&gWDICb);
1537 fail_dp_util_init:
1538 gWDICb.magic = 0;
1539 fail_bss_queue:
1540 /* entries 0 thru i-1 were successfully initialized */
1541 while (0 < i)
1542 {
1543 i--;
1544 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1545 }
1546 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1547 fail_assoc_queue:
1548 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1549 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001550 wpalTimerDelete(&gWDICb.ssrTimer);
1551 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001552 wpalTimerDelete(&gWDICb.wptResponseTimer);
1553 fail_timer:
1554 wpalMutexDelete(&gWDICb.wptMutex);
1555 fail_mutex:
1556 wpalClose(gWDICb.pPALContext);
1557 fail_wpalOpen:
1558 WDI_STATableClose(&gWDICb);
1559 fail_STATableInit:
1560 gWDIInitialized = eWLAN_PAL_FALSE;
1561
1562 return WDI_STATUS_E_FAILURE;
1563
1564}/*WDI_Init*/;
1565
1566/**
1567 @brief WDI_Start will be called when the upper MAC is ready to
1568 commence operation with the WLAN Device. Upon the call
1569 of this API the WLAN DAL will pack and send a HAL Start
1570 message to the lower RIVA sub-system if the SMD channel
1571 has been fully opened and the RIVA subsystem is up.
1572
1573 If the RIVA sub-system is not yet up and running DAL
1574 will queue the request for Open and will wait for the
1575 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001576 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001577
1578 WDI_Init must have been called.
1579
Jeff Johnsone7245742012-09-05 17:12:55 -07001580 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001581 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001582
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 wdiStartRspCb: callback for passing back the response of
1584 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001585
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001587 callback
1588
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 @see WDI_Start
1590 @return Result of the function call
1591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001593WDI_Start
1594(
1595 WDI_StartReqParamsType* pwdiStartParams,
1596 WDI_StartRspCb wdiStartRspCb,
1597 void* pUserData
1598)
1599{
1600 WDI_EventInfoType wdiEventData;
1601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1602
1603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 ------------------------------------------------------------------------*/
1606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1607 {
1608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1609 "WDI API call before module is initialized - Fail request");
1610
Jeff Johnsone7245742012-09-05 17:12:55 -07001611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001612 }
1613
1614 /*------------------------------------------------------------------------
1615 Fill in Event data and post to the Main FSM
1616 ------------------------------------------------------------------------*/
1617 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001618 wdiEventData.pEventData = pwdiStartParams;
1619 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1620 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001621 wdiEventData.pUserData = pUserData;
1622
1623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1624
1625}/*WDI_Start*/
1626
1627/**
1628 @brief WDI_Stop will be called when the upper MAC is ready to
1629 stop any operation with the WLAN Device. Upon the call
1630 of this API the WLAN DAL will pack and send a HAL Stop
1631 message to the lower RIVA sub-system if the DAL Core is
1632 in started state.
1633
1634 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001635
1636 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001637
1638 WDI_Start must have been called.
1639
Jeff Johnsone7245742012-09-05 17:12:55 -07001640 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001641 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001642
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 wdiStopRspCb: callback for passing back the response of
1644 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001645
Jeff Johnson295189b2012-06-20 16:38:30 -07001646 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001647 callback
1648
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 @see WDI_Start
1650 @return Result of the function call
1651*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001652WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001653WDI_Stop
1654(
1655 WDI_StopReqParamsType* pwdiStopParams,
1656 WDI_StopRspCb wdiStopRspCb,
1657 void* pUserData
1658)
1659{
1660 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001661 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1663
1664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001665 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 ------------------------------------------------------------------------*/
1667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1668 {
1669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1670 "WDI API call before module is initialized - Fail request");
1671
Jeff Johnsone7245742012-09-05 17:12:55 -07001672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001673 }
1674
Jeff Johnson43971f52012-07-17 12:26:56 -07001675 /*Access to the global state must be locked before cleaning */
1676 wpalMutexAcquire(&pWDICtx->wptMutex);
1677
1678 /*Clear all pending request*/
1679 WDI_ClearPendingRequests(pWDICtx);
1680
1681 /*We have completed cleaning unlock now*/
1682 wpalMutexRelease(&pWDICtx->wptMutex);
1683
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 /* Free the global variables */
1685 wpalMemoryFree(gpHostWlanFeatCaps);
1686 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001687 gpHostWlanFeatCaps = NULL;
1688 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001689
1690 /*------------------------------------------------------------------------
1691 Fill in Event data and post to the Main FSM
1692 ------------------------------------------------------------------------*/
1693 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001694 wdiEventData.pEventData = pwdiStopParams;
1695 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1696 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001697 wdiEventData.pUserData = pUserData;
1698
1699 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1700
1701}/*WDI_Stop*/
1702
1703
1704
1705/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001706 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001707 needs to interact with DAL. DAL will free its control
1708 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001709
1710 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001711
1712 WDI_Stop must have been called.
1713
1714 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001715
Jeff Johnson295189b2012-06-20 16:38:30 -07001716 @see WDI_Stop
1717 @return Result of the function call
1718*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001719WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001720WDI_Close
1721(
1722 void
1723)
1724{
1725 wpt_uint8 i;
1726 WDI_EventInfoType wdiEventData;
1727 wpt_status wptStatus;
1728 wpt_status eventStatus;
1729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1730
1731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 ------------------------------------------------------------------------*/
1734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1735 {
1736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1737 "WDI API call before module is initialized - Fail request");
1738
Jeff Johnsone7245742012-09-05 17:12:55 -07001739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 }
1741
1742 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1743 (the control transport will be closed by the FSM and we'll want
1744 to wait until that completes)*/
1745 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 {
1748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001749 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001750 /* fall through and try to finish closing via the FSM */
1751 }
1752
1753 /*------------------------------------------------------------------------
1754 Fill in Event data and post to the Main FSM
1755 ------------------------------------------------------------------------*/
1756 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001757 wdiEventData.pEventData = NULL;
1758 wdiEventData.uEventDataSize = 0;
1759 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 wdiEventData.pUserData = NULL;
1761
1762 gWDIInitialized = eWLAN_PAL_FALSE;
1763
1764 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1765
1766 /*Wait for WCTS to close the control transport
1767 (but only if we were able to reset the event flag*/
1768 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1769 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001770 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 WDI_WCTS_ACTION_TIMEOUT);
1772 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001775 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 }
1777 }
1778
1779 /* Destroy the WCTS action event */
1780 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1781 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1782 {
1783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1784 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001785 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 }
1787
1788 /* Destroy the Set Power State event */
1789 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1790 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1791 {
1792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1793 "WDI Close failed to destroy an event");
1794
Jeff Johnsone7245742012-09-05 17:12:55 -07001795 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 }
1797
1798 /*------------------------------------------------------------------------
1799 Closes the Data Path Utility Module
1800 ------------------------------------------------------------------------*/
1801 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1802 {
1803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1804 "WDI Init failed to close the DP Util Module");
1805
Jeff Johnsone7245742012-09-05 17:12:55 -07001806 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 }
1808
1809 /*destroy the BSS sessions pending Queue */
1810 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1811 {
1812 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1813 }
1814
1815 /* destroy the WDI Pending Assoc Id Request Queue*/
1816 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1817
1818 /* destroy the WDI Pending Request Queue*/
1819 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001820
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 /*destroy the response timer */
1822 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1823
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001824 /*destroy the SSR timer */
1825 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1826
Jeff Johnson295189b2012-06-20 16:38:30 -07001827 /*invalidate the main synchro mutex */
1828 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1829 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1830 {
1831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1832 "Failed to delete mutex %d", wptStatus);
1833 WDI_ASSERT(0);
1834 }
1835
1836 /*Clear control block. note that this will clear the "magic"
1837 which will inhibit all asynchronous callbacks*/
1838 WDI_CleanCB(&gWDICb);
1839
1840 return wptStatus;
1841
1842}/*WDI_Close*/
1843
1844/**
1845 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1846 This will do most of the WDI stop & close
1847 operations without doing any handshake with Riva
1848
1849 This will also make sure that the control transport
1850 will NOT be closed.
1851
1852 This request will not be queued.
1853
1854
1855 WDI_Start must have been called.
1856
1857 @param closeTransport: Close control channel if this is set
1858
1859 @return Result of the function call
1860*/
1861WDI_Status
1862WDI_Shutdown
1863(
1864 wpt_boolean closeTransport
1865)
1866{
1867 WDI_EventInfoType wdiEventData;
1868 wpt_status wptStatus;
1869 int i = 0;
1870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1871
1872 /*------------------------------------------------------------------------
1873 Sanity Check
1874 ------------------------------------------------------------------------*/
1875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1876 {
1877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1878 "WDI API call before module is initialized - Fail request");
1879
1880 return WDI_STATUS_E_NOT_ALLOWED;
1881 }
1882
1883 /*------------------------------------------------------------------------
1884 Fill in Event data and post to the Main FSM
1885 ------------------------------------------------------------------------*/
1886 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1887 wdiEventData.pEventData = NULL;
1888 wdiEventData.uEventDataSize = 0;
1889
1890 /* Shutdown will not be queued, if the state is busy timer will be
1891 * stopped & this message will be processed.*/
1892 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1893 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1894 {
1895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001896 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001897 }
1898 /* Destroy the Set Power State event */
1899 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1900 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1901 {
1902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1903 "WDI Close failed to destroy an event");
1904
1905 WDI_ASSERT(0);
1906 }
1907 /*------------------------------------------------------------------------
1908 Closes the Data Path Utility Module
1909 ------------------------------------------------------------------------*/
1910 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1911 {
1912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1913 "WDI Init failed to close the DP Util Module");
1914
1915 WDI_ASSERT(0);
1916 }
1917 if ( closeTransport )
1918 {
1919 /* Close control transport, called from module unload */
1920 WCTS_CloseTransport(gWDICb.wctsHandle);
1921 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001922 else
1923 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001924 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001925 the pending messages in the transport queue */
1926 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1927 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 /*destroy the BSS sessions pending Queue */
1929 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1930 {
1931 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1932 }
1933
1934 /* destroy the WDI Pending Assoc Id Request Queue*/
1935 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1936 /* destroy the WDI Pending Request Queue*/
1937 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1938 /*destroy the response timer */
1939 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001940 /*destroy the SSR timer */
1941 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001942
1943 /*invalidate the main synchro mutex */
1944 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1945 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1946 {
1947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001948 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 WDI_ASSERT(0);
1950 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001951 /* Free the global variables */
1952 wpalMemoryFree(gpHostWlanFeatCaps);
1953 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001954 gpHostWlanFeatCaps = NULL;
1955 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001956 /*Clear control block. note that this will clear the "magic"
1957 which will inhibit all asynchronous callbacks*/
1958 WDI_CleanCB(&gWDICb);
1959 return wptStatus;
1960
1961}/*WDI_Shutdown*/
1962
1963
Jeff Johnsone7245742012-09-05 17:12:55 -07001964/*========================================================================
1965
Jeff Johnson295189b2012-06-20 16:38:30 -07001966 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001967
Jeff Johnson295189b2012-06-20 16:38:30 -07001968==========================================================================*/
1969
1970/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 the WLAN Device to get ready for a scan procedure. Upon
1973 the call of this API the WLAN DAL will pack and send a
1974 HAL Init Scan request message to the lower RIVA
1975 sub-system if DAL is in state STARTED.
1976
1977 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001979
1980 WDI_Start must have been called.
1981
1982 @param wdiInitScanParams: the init scan parameters as specified
1983 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001984
Jeff Johnson295189b2012-06-20 16:38:30 -07001985 wdiInitScanRspCb: callback for passing back the response
1986 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001987
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 callback
1990
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 @see WDI_Start
1992 @return Result of the function call
1993*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001994WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001995WDI_InitScanReq
1996(
1997 WDI_InitScanReqParamsType* pwdiInitScanParams,
1998 WDI_InitScanRspCb wdiInitScanRspCb,
1999 void* pUserData
2000)
2001{
2002 WDI_EventInfoType wdiEventData;
2003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2004
2005 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 ------------------------------------------------------------------------*/
2008 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2009 {
2010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2011 "WDI API call before module is initialized - Fail request");
2012
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 }
2015
2016 /*------------------------------------------------------------------------
2017 Fill in Event data and post to the Main FSM
2018 ------------------------------------------------------------------------*/
2019 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 wdiEventData.pEventData = pwdiInitScanParams;
2021 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2022 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002023 wdiEventData.pUserData = pUserData;
2024
2025 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2026
2027}/*WDI_InitScanReq*/
2028
2029/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002030 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002031 wishes to change the Scan channel on the WLAN Device.
2032 Upon the call of this API the WLAN DAL will pack and
2033 send a HAL Start Scan request message to the lower RIVA
2034 sub-system if DAL is in state STARTED.
2035
2036 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002038
2039 WDI_InitScanReq must have been called.
2040
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 wdiStartScanRspCb: callback for passing back the
2045 response of the start scan operation received from the
2046 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 callback
2050
Jeff Johnson295189b2012-06-20 16:38:30 -07002051 @see WDI_InitScanReq
2052 @return Result of the function call
2053*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002054WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002055WDI_StartScanReq
2056(
2057 WDI_StartScanReqParamsType* pwdiStartScanParams,
2058 WDI_StartScanRspCb wdiStartScanRspCb,
2059 void* pUserData
2060)
2061{
2062 WDI_EventInfoType wdiEventData;
2063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2064
2065 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002066 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002067 ------------------------------------------------------------------------*/
2068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2069 {
2070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2071 "WDI API call before module is initialized - Fail request");
2072
Jeff Johnsone7245742012-09-05 17:12:55 -07002073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002074 }
2075
2076 /*------------------------------------------------------------------------
2077 Fill in Event data and post to the Main FSM
2078 ------------------------------------------------------------------------*/
2079 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 wdiEventData.pEventData = pwdiStartScanParams;
2081 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2082 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002083 wdiEventData.pUserData = pUserData;
2084
2085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2086
2087}/*WDI_StartScanReq*/
2088
2089
2090/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 wants to end scanning for a particular channel that it
2093 had set before by calling Scan Start on the WLAN Device.
2094 Upon the call of this API the WLAN DAL will pack and
2095 send a HAL End Scan request message to the lower RIVA
2096 sub-system if DAL is in state STARTED.
2097
2098 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002099 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002100
2101 WDI_StartScanReq must have been called.
2102
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002105
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 wdiEndScanRspCb: callback for passing back the response
2107 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002108
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002110 callback
2111
Jeff Johnson295189b2012-06-20 16:38:30 -07002112 @see WDI_StartScanReq
2113 @return Result of the function call
2114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002116WDI_EndScanReq
2117(
2118 WDI_EndScanReqParamsType* pwdiEndScanParams,
2119 WDI_EndScanRspCb wdiEndScanRspCb,
2120 void* pUserData
2121)
2122{
2123 WDI_EventInfoType wdiEventData;
2124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2125
2126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 ------------------------------------------------------------------------*/
2129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2130 {
2131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2132 "WDI API call before module is initialized - Fail request");
2133
Jeff Johnsone7245742012-09-05 17:12:55 -07002134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002135 }
2136
2137 /*------------------------------------------------------------------------
2138 Fill in Event data and post to the Main FSM
2139 ------------------------------------------------------------------------*/
2140 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002141 wdiEventData.pEventData = pwdiEndScanParams;
2142 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2143 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002144 wdiEventData.pUserData = pUserData;
2145
2146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2147
2148}/*WDI_EndScanReq*/
2149
2150
2151/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002152 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 completed the scan process on the WLAN Device. Upon the
2154 call of this API the WLAN DAL will pack and send a HAL
2155 Finish Scan Request request message to the lower RIVA
2156 sub-system if DAL is in state STARTED.
2157
2158 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002159 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002160
2161 WDI_InitScanReq must have been called.
2162
Jeff Johnsone7245742012-09-05 17:12:55 -07002163 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002164 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002165
Jeff Johnson295189b2012-06-20 16:38:30 -07002166 wdiFinishScanRspCb: callback for passing back the
2167 response of the finish scan operation received from the
2168 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002169
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002171 callback
2172
Jeff Johnson295189b2012-06-20 16:38:30 -07002173 @see WDI_InitScanReq
2174 @return Result of the function call
2175*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002176WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002177WDI_FinishScanReq
2178(
2179 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2180 WDI_FinishScanRspCb wdiFinishScanRspCb,
2181 void* pUserData
2182)
2183{
2184 WDI_EventInfoType wdiEventData;
2185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2186
2187 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002189 ------------------------------------------------------------------------*/
2190 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2191 {
2192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2193 "WDI API call before module is initialized - Fail request");
2194
Jeff Johnsone7245742012-09-05 17:12:55 -07002195 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002196 }
2197
2198 /*------------------------------------------------------------------------
2199 Fill in Event data and post to the Main FSM
2200 ------------------------------------------------------------------------*/
2201 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 wdiEventData.pEventData = pwdiFinishScanParams;
2203 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2204 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 wdiEventData.pUserData = pUserData;
2206
2207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2208
2209}/*WDI_FinishScanReq*/
2210
Jeff Johnsone7245742012-09-05 17:12:55 -07002211/*========================================================================
2212
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002214
Jeff Johnson295189b2012-06-20 16:38:30 -07002215==========================================================================*/
2216
2217/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002218 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 to start an association procedure to a BSS. Upon the
2220 call of this API the WLAN DAL will pack and send a HAL
2221 Join request message to the lower RIVA sub-system if
2222 DAL is in state STARTED.
2223
2224 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002226
2227 WDI_Start must have been called.
2228
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002231
Jeff Johnson295189b2012-06-20 16:38:30 -07002232 wdiJoinRspCb: callback for passing back the response of
2233 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002234
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002236 callback
2237
Jeff Johnson295189b2012-06-20 16:38:30 -07002238 @see WDI_Start
2239 @return Result of the function call
2240*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002241WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002242WDI_JoinReq
2243(
2244 WDI_JoinReqParamsType* pwdiJoinParams,
2245 WDI_JoinRspCb wdiJoinRspCb,
2246 void* pUserData
2247)
2248{
2249 WDI_EventInfoType wdiEventData;
2250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2251
2252 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002254 ------------------------------------------------------------------------*/
2255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2256 {
2257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2258 "WDI API call before module is initialized - Fail request");
2259
Jeff Johnsone7245742012-09-05 17:12:55 -07002260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002261 }
2262
2263 /*------------------------------------------------------------------------
2264 Fill in Event data and post to the Main FSM
2265 ------------------------------------------------------------------------*/
2266 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002267 wdiEventData.pEventData = pwdiJoinParams;
2268 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2269 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002270 wdiEventData.pUserData = pUserData;
2271
2272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2273
2274}/*WDI_JoinReq*/
2275
2276/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002277 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 wishes to configure the newly acquired or in process of
2279 being acquired BSS to the HW . Upon the call of this API
2280 the WLAN DAL will pack and send a HAL Config BSS request
2281 message to the lower RIVA sub-system if DAL is in state
2282 STARTED.
2283
2284 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002285 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002286
2287 WDI_JoinReq must have been called.
2288
Jeff Johnsone7245742012-09-05 17:12:55 -07002289 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002291
Jeff Johnson295189b2012-06-20 16:38:30 -07002292 wdiConfigBSSRspCb: callback for passing back the
2293 response of the config BSS operation received from the
2294 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002295
Jeff Johnson295189b2012-06-20 16:38:30 -07002296 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 callback
2298
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 @see WDI_JoinReq
2300 @return Result of the function call
2301*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002302WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002303WDI_ConfigBSSReq
2304(
2305 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2306 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2307 void* pUserData
2308)
2309{
2310 WDI_EventInfoType wdiEventData;
2311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2312
2313 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 ------------------------------------------------------------------------*/
2316 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2317 {
2318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2319 "WDI API call before module is initialized - Fail request");
2320
Jeff Johnsone7245742012-09-05 17:12:55 -07002321 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 }
2323
2324 /*------------------------------------------------------------------------
2325 Fill in Event data and post to the Main FSM
2326 ------------------------------------------------------------------------*/
2327 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002328 wdiEventData.pEventData = pwdiConfigBSSParams;
2329 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2330 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 wdiEventData.pUserData = pUserData;
2332
2333 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2334
2335}/*WDI_ConfigBSSReq*/
2336
2337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002338 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 disassociating from the BSS and wishes to notify HW.
2340 Upon the call of this API the WLAN DAL will pack and
2341 send a HAL Del BSS request message to the lower RIVA
2342 sub-system if DAL is in state STARTED.
2343
2344 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002345 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002346
2347 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2348
Jeff Johnsone7245742012-09-05 17:12:55 -07002349 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002351
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 wdiDelBSSRspCb: callback for passing back the response
2353 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002354
Jeff Johnson295189b2012-06-20 16:38:30 -07002355 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002356 callback
2357
2358 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 @return Result of the function call
2360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002362WDI_DelBSSReq
2363(
2364 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2365 WDI_DelBSSRspCb wdiDelBSSRspCb,
2366 void* pUserData
2367)
2368{
2369 WDI_EventInfoType wdiEventData;
2370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2371
2372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 ------------------------------------------------------------------------*/
2375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2376 {
2377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2378 "WDI API call before module is initialized - Fail request");
2379
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 }
2382
2383 /*------------------------------------------------------------------------
2384 Fill in Event data and post to the Main FSM
2385 ------------------------------------------------------------------------*/
2386 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002387 wdiEventData.pEventData = pwdiDelBSSParams;
2388 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2389 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002390 wdiEventData.pUserData = pUserData;
2391
2392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2393
2394}/*WDI_DelBSSReq*/
2395
2396/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 associated to a BSS and wishes to configure HW for
2399 associated state. Upon the call of this API the WLAN DAL
2400 will pack and send a HAL Post Assoc request message to
2401 the lower RIVA sub-system if DAL is in state STARTED.
2402
2403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002405
2406 WDI_JoinReq must have been called.
2407
2408 @param wdiPostAssocReqParams: the assoc parameters as specified
2409 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 wdiPostAssocRspCb: callback for passing back the
2412 response of the post assoc operation received from the
2413 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002416 callback
2417
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 @see WDI_JoinReq
2419 @return Result of the function call
2420*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002421WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002422WDI_PostAssocReq
2423(
2424 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2425 WDI_PostAssocRspCb wdiPostAssocRspCb,
2426 void* pUserData
2427)
2428{
2429 WDI_EventInfoType wdiEventData;
2430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2431
2432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002433 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002434 ------------------------------------------------------------------------*/
2435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2436 {
2437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2438 "WDI API call before module is initialized - Fail request");
2439
Jeff Johnsone7245742012-09-05 17:12:55 -07002440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002441 }
2442
2443 /*------------------------------------------------------------------------
2444 Fill in Event data and post to the Main FSM
2445 ------------------------------------------------------------------------*/
2446 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 wdiEventData.pEventData = pwdiPostAssocReqParams;
2448 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2449 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002450 wdiEventData.pUserData = pUserData;
2451
2452 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2453
2454}/*WDI_PostAssocReq*/
2455
2456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 association with another STA has ended and the station
2459 must be deleted from HW. Upon the call of this API the
2460 WLAN DAL will pack and send a HAL Del STA request
2461 message to the lower RIVA sub-system if DAL is in state
2462 STARTED.
2463
2464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002466
2467 WDI_PostAssocReq must have been called.
2468
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 wdiDelSTARspCb: callback for passing back the response
2473 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 callback
2477
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 @see WDI_PostAssocReq
2479 @return Result of the function call
2480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002482WDI_DelSTAReq
2483(
2484 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2485 WDI_DelSTARspCb wdiDelSTARspCb,
2486 void* pUserData
2487)
2488{
2489 WDI_EventInfoType wdiEventData;
2490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2491
2492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 ------------------------------------------------------------------------*/
2495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2496 {
2497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2498 "WDI API call before module is initialized - Fail request");
2499
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 }
2502
2503 /*------------------------------------------------------------------------
2504 Fill in Event data and post to the Main FSM
2505 ------------------------------------------------------------------------*/
2506 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002507 wdiEventData.pEventData = pwdiDelSTAParams;
2508 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2509 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 wdiEventData.pUserData = pUserData;
2511
2512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2513
2514}/*WDI_DelSTAReq*/
2515
Jeff Johnsone7245742012-09-05 17:12:55 -07002516/*========================================================================
2517
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002519
Jeff Johnson295189b2012-06-20 16:38:30 -07002520==========================================================================*/
2521
2522/**
2523 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2524 install a BSS encryption key on the HW. Upon the call of this
2525 API the WLAN DAL will pack and send a Set BSS Key request
2526 message to the lower RIVA sub-system if DAL is in state
2527 STARTED.
2528
2529 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002531
2532 WDI_PostAssocReq must have been called.
2533
Jeff Johnsone7245742012-09-05 17:12:55 -07002534 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002536
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 wdiSetBSSKeyRspCb: callback for passing back the
2538 response of the set BSS Key operation received from the
2539 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002542 callback
2543
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 @see WDI_PostAssocReq
2545 @return Result of the function call
2546*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002547WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002548WDI_SetBSSKeyReq
2549(
2550 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2551 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2552 void* pUserData
2553)
2554{
2555 WDI_EventInfoType wdiEventData;
2556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2557
2558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 ------------------------------------------------------------------------*/
2561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2562 {
2563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2564 "WDI API call before module is initialized - Fail request");
2565
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002567 }
2568
2569 /*------------------------------------------------------------------------
2570 Fill in Event data and post to the Main FSM
2571 ------------------------------------------------------------------------*/
2572 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2574 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2575 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 wdiEventData.pUserData = pUserData;
2577
2578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2579
2580}/*WDI_SetBSSKeyReq*/
2581
2582/**
2583 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2584 uninstall a BSS key from HW. Upon the call of this API the
2585 WLAN DAL will pack and send a HAL Remove BSS Key request
2586 message to the lower RIVA sub-system if DAL is in state
2587 STARTED.
2588
2589 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002590 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002591
2592 WDI_SetBSSKeyReq must have been called.
2593
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002596
Jeff Johnson295189b2012-06-20 16:38:30 -07002597 wdiRemoveBSSKeyRspCb: callback for passing back the
2598 response of the remove BSS key operation received from
2599 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 callback
2603
Jeff Johnson295189b2012-06-20 16:38:30 -07002604 @see WDI_SetBSSKeyReq
2605 @return Result of the function call
2606*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002608WDI_RemoveBSSKeyReq
2609(
2610 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2611 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2612 void* pUserData
2613)
2614{
2615 WDI_EventInfoType wdiEventData;
2616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2617
2618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 ------------------------------------------------------------------------*/
2621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2622 {
2623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2624 "WDI API call before module is initialized - Fail request");
2625
Jeff Johnsone7245742012-09-05 17:12:55 -07002626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002627 }
2628
2629 /*------------------------------------------------------------------------
2630 Fill in Event data and post to the Main FSM
2631 ------------------------------------------------------------------------*/
2632 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2634 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2635 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 wdiEventData.pUserData = pUserData;
2637
2638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2639
2640}/*WDI_RemoveBSSKeyReq*/
2641
2642
2643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 ready to install a STA(ast) encryption key in HW. Upon
2646 the call of this API the WLAN DAL will pack and send a
2647 HAL Set STA Key request message to the lower RIVA
2648 sub-system if DAL is in state STARTED.
2649
2650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002652
2653 WDI_PostAssocReq must have been called.
2654
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002657
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 wdiSetSTAKeyRspCb: callback for passing back the
2659 response of the set STA key operation received from the
2660 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002663 callback
2664
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 @see WDI_PostAssocReq
2666 @return Result of the function call
2667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002669WDI_SetSTAKeyReq
2670(
2671 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2672 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2673 void* pUserData
2674)
2675{
2676 WDI_EventInfoType wdiEventData;
2677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2678
2679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002681 ------------------------------------------------------------------------*/
2682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2683 {
2684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2685 "WDI API call before module is initialized - Fail request");
2686
Jeff Johnsone7245742012-09-05 17:12:55 -07002687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002688 }
2689
2690 /*------------------------------------------------------------------------
2691 Fill in Event data and post to the Main FSM
2692 ------------------------------------------------------------------------*/
2693 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2695 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2696 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 wdiEventData.pUserData = pUserData;
2698
2699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2700
2701}/*WDI_SetSTAKeyReq*/
2702
2703
2704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002705 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wants to uninstall a previously set STA key in HW. Upon
2707 the call of this API the WLAN DAL will pack and send a
2708 HAL Remove STA Key request message to the lower RIVA
2709 sub-system if DAL is in state STARTED.
2710
2711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002713
2714 WDI_SetSTAKeyReq must have been called.
2715
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002718
Jeff Johnson295189b2012-06-20 16:38:30 -07002719 wdiRemoveSTAKeyRspCb: callback for passing back the
2720 response of the remove STA key operation received from
2721 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002722
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002724 callback
2725
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 @see WDI_SetSTAKeyReq
2727 @return Result of the function call
2728*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002730WDI_RemoveSTAKeyReq
2731(
2732 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2733 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2734 void* pUserData
2735)
2736{
2737 WDI_EventInfoType wdiEventData;
2738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2739
2740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002742 ------------------------------------------------------------------------*/
2743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2744 {
2745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2746 "WDI API call before module is initialized - Fail request");
2747
Jeff Johnsone7245742012-09-05 17:12:55 -07002748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 }
2750
2751 /*------------------------------------------------------------------------
2752 Fill in Event data and post to the Main FSM
2753 ------------------------------------------------------------------------*/
2754 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2756 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2757 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002758 wdiEventData.pUserData = pUserData;
2759
2760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2761
2762}/*WDI_RemoveSTAKeyReq*/
2763
2764
2765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002766 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 wants to install a STA Bcast encryption key on the HW.
2768 Upon the call of this API the WLAN DAL will pack and
2769 send a HAL Start request message to the lower RIVA
2770 sub-system if DAL is in state STARTED.
2771
2772 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002773 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002774
2775 WDI_PostAssocReq must have been called.
2776
Jeff Johnsone7245742012-09-05 17:12:55 -07002777 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 wdiSetSTABcastKeyRspCb: callback for passing back the
2781 response of the set BSS Key operation received from the
2782 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002783
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002785 callback
2786
Jeff Johnson295189b2012-06-20 16:38:30 -07002787 @see WDI_PostAssocReq
2788 @return Result of the function call
2789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002791WDI_SetSTABcastKeyReq
2792(
2793 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2794 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2795 void* pUserData
2796)
2797
2798{
2799 WDI_EventInfoType wdiEventData;
2800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2801
2802 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002804 ------------------------------------------------------------------------*/
2805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2806 {
2807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2808 "WDI API call before module is initialized - Fail request");
2809
Jeff Johnsone7245742012-09-05 17:12:55 -07002810 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002811 }
2812
2813 /*------------------------------------------------------------------------
2814 Fill in Event data and post to the Main FSM
2815 ------------------------------------------------------------------------*/
2816 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002817 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2818 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2819 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 wdiEventData.pUserData = pUserData;
2821
2822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2823
2824}/*WDI_SetSTABcastKeyReq*/
2825
2826/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002827 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 MAC wants to uninstall a STA Bcast key from HW. Upon the
2829 call of this API the WLAN DAL will pack and send a HAL
2830 Remove STA Bcast Key request message to the lower RIVA
2831 sub-system if DAL is in state STARTED.
2832
2833 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002835
2836 WDI_SetSTABcastKeyReq must have been called.
2837
Jeff Johnsone7245742012-09-05 17:12:55 -07002838 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 parameters as specified by the Device
2840 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002841
Jeff Johnson295189b2012-06-20 16:38:30 -07002842 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2843 response of the remove STA Bcast key operation received
2844 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002847 callback
2848
Jeff Johnson295189b2012-06-20 16:38:30 -07002849 @see WDI_SetSTABcastKeyReq
2850 @return Result of the function call
2851*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002852WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002853WDI_RemoveSTABcastKeyReq
2854(
2855 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2856 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2857 void* pUserData
2858)
2859{
2860 WDI_EventInfoType wdiEventData;
2861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2862
2863 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002864 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 ------------------------------------------------------------------------*/
2866 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2867 {
2868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2869 "WDI API call before module is initialized - Fail request");
2870
Jeff Johnsone7245742012-09-05 17:12:55 -07002871 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002872 }
2873
2874 /*------------------------------------------------------------------------
2875 Fill in Event data and post to the Main FSM
2876 ------------------------------------------------------------------------*/
2877 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002878 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2879 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2880 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 wdiEventData.pUserData = pUserData;
2882
2883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2884
2885}/*WDI_RemoveSTABcastKeyReq*/
2886
2887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002888 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 MAC wants to set Max Tx Power to HW. Upon the
2890 call of this API the WLAN DAL will pack and send a HAL
2891 Remove STA Bcast Key request message to the lower RIVA
2892 sub-system if DAL is in state STARTED.
2893
2894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002896
2897 WDI_SetSTABcastKeyReq must have been called.
2898
Jeff Johnsone7245742012-09-05 17:12:55 -07002899 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 parameters as specified by the Device
2901 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2904 response of the remove STA Bcast key operation received
2905 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002906
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002908 callback
2909
Jeff Johnson295189b2012-06-20 16:38:30 -07002910 @see WDI_SetMaxTxPowerReq
2911 @return Result of the function call
2912*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002914WDI_SetMaxTxPowerReq
2915(
2916 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2917 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2918 void* pUserData
2919)
2920{
2921 WDI_EventInfoType wdiEventData;
2922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2923
2924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 ------------------------------------------------------------------------*/
2927 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2928 {
2929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2930 "WDI API call before module is initialized - Fail request");
2931
Jeff Johnsone7245742012-09-05 17:12:55 -07002932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002933 }
2934
2935 /*------------------------------------------------------------------------
2936 Fill in Event data and post to the Main FSM
2937 ------------------------------------------------------------------------*/
2938 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002939 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2940 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2941 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 wdiEventData.pUserData = pUserData;
2943
2944 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2945}
2946
schangd82195a2013-03-13 18:41:24 -07002947/**
Arif Hussainfc753992013-08-09 15:09:58 -07002948 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2949 MAC wants to set Max Tx Power to HW for specific band.
2950
2951 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2952
2953 wdiReqStatusCb: callback for passing back the
2954 response msg from the device
2955
2956 pUserData: user data will be passed back with the
2957 callback
2958
2959 @see WDI_SetMaxTxPowerPerBandReq
2960 @return Result of the function call
2961*/
2962WDI_Status
2963WDI_SetMaxTxPowerPerBandReq
2964(
2965 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2966 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2967 void* pUserData
2968)
2969{
2970 WDI_EventInfoType wdiEventData;
2971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2972
2973 /*------------------------------------------------------------------------
2974 Sanity Check
2975 ------------------------------------------------------------------------*/
2976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2977 {
2978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2979 "WDI API call before module is initialized - Fail request");
2980
2981 return WDI_STATUS_E_NOT_ALLOWED;
2982 }
2983
2984 /*------------------------------------------------------------------------
2985 Fill in Event data and post to the Main FSM
2986 ------------------------------------------------------------------------*/
2987 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2988 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2989 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2990 wdiEventData.pCBfnc = wdiReqStatusCb;
2991 wdiEventData.pUserData = pUserData;
2992
2993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2994}
2995
2996/**
schangd82195a2013-03-13 18:41:24 -07002997 @brief WDI_SetTxPowerReq will be called when the upper
2998 MAC wants to set Tx Power to HW.
2999 In state BUSY this request will be queued. Request won't
3000 be allowed in any other state.
3001
3002
3003 @param pwdiSetTxPowerParams: set TS Power parameters
3004 BSSID and target TX Power with dbm included
3005
3006 wdiReqStatusCb: callback for passing back the response
3007
3008 pUserData: user data will be passed back with the
3009 callback
3010
3011 @return Result of the function call
3012*/
3013WDI_Status
3014WDI_SetTxPowerReq
3015(
3016 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3017 WDA_SetTxPowerRspCb wdiReqStatusCb,
3018 void* pUserData
3019)
3020{
3021 WDI_EventInfoType wdiEventData;
3022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3023
3024 /*------------------------------------------------------------------------
3025 Sanity Check
3026 ------------------------------------------------------------------------*/
3027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3028 {
3029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3030 "WDI API call before module is initialized - Fail request");
3031
3032 return WDI_STATUS_E_NOT_ALLOWED;
3033 }
3034
3035 /*------------------------------------------------------------------------
3036 Fill in Event data and post to the Main FSM
3037 ------------------------------------------------------------------------*/
3038 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3039 wdiEventData.pEventData = pwdiSetTxPowerParams;
3040 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3041 wdiEventData.pCBfnc = wdiReqStatusCb;
3042 wdiEventData.pUserData = pUserData;
3043
3044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3045}
3046
Jeff Johnson295189b2012-06-20 16:38:30 -07003047#ifdef FEATURE_WLAN_CCX
3048WDI_Status
3049WDI_TSMStatsReq
3050(
3051 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3052 WDI_TsmRspCb wdiReqStatusCb,
3053 void* pUserData
3054)
3055{
3056 WDI_EventInfoType wdiEventData;
3057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 /*------------------------------------------------------------------------
3059 Sanity Check
3060 ------------------------------------------------------------------------*/
3061 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3062 {
3063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3064 "WDI API call before module is initialized - Fail request");
3065
3066 return WDI_STATUS_E_NOT_ALLOWED;
3067 }
3068
3069 /*------------------------------------------------------------------------
3070 Fill in Event data and post to the Main FSM
3071 ------------------------------------------------------------------------*/
3072 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3073 wdiEventData.pEventData = pwdiTsmReqParams;
3074 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3075 wdiEventData.pCBfnc = wdiReqStatusCb;
3076 wdiEventData.pUserData = pUserData;
3077
3078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3079
3080}
3081#endif
3082
3083/*========================================================================
3084
3085 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003086
Jeff Johnson295189b2012-06-20 16:38:30 -07003087==========================================================================*/
3088
3089/**
3090 @brief WDI_AddTSReq will be called when the upper MAC to inform
3091 the device of a successful add TSpec negotiation. HW
3092 needs to receive the TSpec Info from the UMAC in order
3093 to configure properly the QoS data traffic. Upon the
3094 call of this API the WLAN DAL will pack and send a HAL
3095 Add TS request message to the lower RIVA sub-system if
3096 DAL is in state STARTED.
3097
3098 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003100
3101 WDI_PostAssocReq must have been called.
3102
3103 @param wdiAddTsReqParams: the add TS parameters as specified by
3104 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003105
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 wdiAddTsRspCb: callback for passing back the response of
3107 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003108
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 callback
3111
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 @see WDI_PostAssocReq
3113 @return Result of the function call
3114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003116WDI_AddTSReq
3117(
3118 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3119 WDI_AddTsRspCb wdiAddTsRspCb,
3120 void* pUserData
3121)
3122{
3123 WDI_EventInfoType wdiEventData;
3124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3125
3126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 ------------------------------------------------------------------------*/
3129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3130 {
3131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3132 "WDI API call before module is initialized - Fail request");
3133
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 }
3136
3137 /*------------------------------------------------------------------------
3138 Fill in Event data and post to the Main FSM
3139 ------------------------------------------------------------------------*/
3140 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 wdiEventData.pEventData = pwdiAddTsReqParams;
3142 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3143 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 wdiEventData.pUserData = pUserData;
3145
3146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3147
3148}/*WDI_AddTSReq*/
3149
3150
3151
3152/**
3153 @brief WDI_DelTSReq will be called when the upper MAC has ended
3154 admission on a specific AC. This is to inform HW that
3155 QoS traffic parameters must be rest. Upon the call of
3156 this API the WLAN DAL will pack and send a HAL Del TS
3157 request message to the lower RIVA sub-system if DAL is
3158 in state STARTED.
3159
3160 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003162
3163 WDI_AddTSReq must have been called.
3164
3165 @param wdiDelTsReqParams: the del TS parameters as specified by
3166 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003167
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 wdiDelTsRspCb: callback for passing back the response of
3169 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003170
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 callback
3173
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 @see WDI_AddTSReq
3175 @return Result of the function call
3176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003178WDI_DelTSReq
3179(
3180 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3181 WDI_DelTsRspCb wdiDelTsRspCb,
3182 void* pUserData
3183)
3184{
3185 WDI_EventInfoType wdiEventData;
3186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3187
3188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 ------------------------------------------------------------------------*/
3191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3192 {
3193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3194 "WDI API call before module is initialized - Fail request");
3195
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 }
3198
3199 /*------------------------------------------------------------------------
3200 Fill in Event data and post to the Main FSM
3201 ------------------------------------------------------------------------*/
3202 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 wdiEventData.pEventData = pwdiDelTsReqParams;
3204 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3205 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 wdiEventData.pUserData = pUserData;
3207
3208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3209
3210}/*WDI_DelTSReq*/
3211
3212
3213
3214/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 wishes to update the EDCA parameters used by HW for QoS
3217 data traffic. Upon the call of this API the WLAN DAL
3218 will pack and send a HAL Update EDCA Params request
3219 message to the lower RIVA sub-system if DAL is in state
3220 STARTED.
3221
3222 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003224
3225 WDI_PostAssocReq must have been called.
3226
Jeff Johnsone7245742012-09-05 17:12:55 -07003227 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003229
Jeff Johnson295189b2012-06-20 16:38:30 -07003230 wdiUpdateEDCAParamsRspCb: callback for passing back the
3231 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003232
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 callback
3235
Jeff Johnson295189b2012-06-20 16:38:30 -07003236 @see WDI_PostAssocReq
3237 @return Result of the function call
3238*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003239WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003240WDI_UpdateEDCAParams
3241(
3242 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3243 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3244 void* pUserData
3245)
3246{
3247 WDI_EventInfoType wdiEventData;
3248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3249
3250 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003251 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 ------------------------------------------------------------------------*/
3253 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3254 {
3255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3256 "WDI API call before module is initialized - Fail request");
3257
Jeff Johnsone7245742012-09-05 17:12:55 -07003258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003259 }
3260
3261 /*------------------------------------------------------------------------
3262 Fill in Event data and post to the Main FSM
3263 ------------------------------------------------------------------------*/
3264 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003265 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3266 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3267 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 wdiEventData.pUserData = pUserData;
3269
3270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3271
3272}/*WDI_UpdateEDCAParams*/
3273
3274
3275/**
3276 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3277 successfully a BA session and needs to notify the HW for
3278 the appropriate settings to take place. Upon the call of
3279 this API the WLAN DAL will pack and send a HAL Add BA
3280 request message to the lower RIVA sub-system if DAL is
3281 in state STARTED.
3282
3283 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003285
3286 WDI_PostAssocReq must have been called.
3287
3288 @param wdiAddBAReqParams: the add BA parameters as specified by
3289 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 wdiAddBARspCb: callback for passing back the response of
3292 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 callback
3296
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 @see WDI_PostAssocReq
3298 @return Result of the function call
3299*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003300WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003301WDI_AddBASessionReq
3302(
3303 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3304 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3305 void* pUserData
3306)
3307{
3308 WDI_EventInfoType wdiEventData;
3309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3310
3311 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003312 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 ------------------------------------------------------------------------*/
3314 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3315 {
3316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3317 "WDI API call before module is initialized - Fail request");
3318
Jeff Johnsone7245742012-09-05 17:12:55 -07003319 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 }
3321
3322 /*------------------------------------------------------------------------
3323 Fill in Event data and post to the Main FSM
3324 ------------------------------------------------------------------------*/
3325 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003326 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3327 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3328 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003329 wdiEventData.pUserData = pUserData;
3330
3331 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3332
3333}/*WDI_AddBASessionReq*/
3334
3335/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003336 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003337 inform HW that it has deleted a previously created BA
3338 session. Upon the call of this API the WLAN DAL will
3339 pack and send a HAL Del BA request message to the lower
3340 RIVA sub-system if DAL is in state STARTED.
3341
3342 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003343 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003344
3345 WDI_AddBAReq must have been called.
3346
3347 @param wdiDelBAReqParams: the del BA parameters as specified by
3348 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003349
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 wdiDelBARspCb: callback for passing back the response of
3351 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003352
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003354 callback
3355
Jeff Johnson295189b2012-06-20 16:38:30 -07003356 @see WDI_AddBAReq
3357 @return Result of the function call
3358*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003359WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003360WDI_DelBAReq
3361(
3362 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3363 WDI_DelBARspCb wdiDelBARspCb,
3364 void* pUserData
3365)
3366{
3367 WDI_EventInfoType wdiEventData;
3368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3369
3370 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003371 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003372 ------------------------------------------------------------------------*/
3373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3374 {
3375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3376 "WDI API call before module is initialized - Fail request");
3377
Jeff Johnsone7245742012-09-05 17:12:55 -07003378 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003379 }
3380
3381 /*------------------------------------------------------------------------
3382 Fill in Event data and post to the Main FSM
3383 ------------------------------------------------------------------------*/
3384 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003385 wdiEventData.pEventData = pwdiDelBAReqParams;
3386 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3387 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003388 wdiEventData.pUserData = pUserData;
3389
3390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3391
3392}/*WDI_DelBAReq*/
3393
Jeff Johnsone7245742012-09-05 17:12:55 -07003394/*========================================================================
3395
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003397
Jeff Johnson295189b2012-06-20 16:38:30 -07003398==========================================================================*/
3399
3400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 wants to set the power save related configurations of
3403 the WLAN Device. Upon the call of this API the WLAN DAL
3404 will pack and send a HAL Update CFG request message to
3405 the lower RIVA sub-system if DAL is in state STARTED.
3406
3407 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003408 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003409
3410 WDI_Start must have been called.
3411
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003414
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 wdiSetPwrSaveCfgCb: callback for passing back the
3416 response of the set power save cfg operation received
3417 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003420 callback
3421
Jeff Johnson295189b2012-06-20 16:38:30 -07003422 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 @return Result of the function call
3424*/
3425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003426WDI_SetPwrSaveCfgReq
3427(
3428 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3429 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3430 void* pUserData
3431)
3432{
3433 WDI_EventInfoType wdiEventData;
3434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3435
3436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 ------------------------------------------------------------------------*/
3439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3440 {
3441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3442 "WDI API call before module is initialized - Fail request");
3443
Jeff Johnsone7245742012-09-05 17:12:55 -07003444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003445 }
3446
3447 /*------------------------------------------------------------------------
3448 Fill in Event data and post to the Main FSM
3449 ------------------------------------------------------------------------*/
3450 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003451 wdiEventData.pEventData = pwdiPowerSaveCfg;
3452 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3453 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003454 wdiEventData.pUserData = pUserData;
3455
3456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3457
3458}/*WDI_SetPwrSaveCfgReq*/
3459
3460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003461 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003462 request the device to get into IMPS power state. Upon
3463 the call of this API the WLAN DAL will send a HAL Enter
3464 IMPS request message to the lower RIVA sub-system if DAL
3465 is in state STARTED.
3466
3467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003469
Jeff Johnsone7245742012-09-05 17:12:55 -07003470
3471 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 response of the Enter IMPS operation received from the
3473 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 callback
3477
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 @see WDI_Start
3479 @return Result of the function call
3480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003482WDI_EnterImpsReq
3483(
3484 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3485 void* pUserData
3486)
3487{
3488 WDI_EventInfoType wdiEventData;
3489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3490
3491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 ------------------------------------------------------------------------*/
3494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3495 {
3496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3497 "WDI API call before module is initialized - Fail request");
3498
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 }
3501
3502 /*------------------------------------------------------------------------
3503 Fill in Event data and post to the Main FSM
3504 ------------------------------------------------------------------------*/
3505 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 wdiEventData.pEventData = NULL;
3507 wdiEventData.uEventDataSize = 0;
3508 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003509 wdiEventData.pUserData = pUserData;
3510
3511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3512
3513}/*WDI_EnterImpsReq*/
3514
3515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003516 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003517 request the device to get out of IMPS power state. Upon
3518 the call of this API the WLAN DAL will send a HAL Exit
3519 IMPS request message to the lower RIVA sub-system if DAL
3520 is in state STARTED.
3521
3522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003524
Jeff Johnson295189b2012-06-20 16:38:30 -07003525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526
3527 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 callback
3532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 @see WDI_Start
3534 @return Result of the function call
3535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003537WDI_ExitImpsReq
3538(
3539 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3540 void* pUserData
3541)
3542{
3543 WDI_EventInfoType wdiEventData;
3544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3545
3546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003548 ------------------------------------------------------------------------*/
3549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3550 {
3551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3552 "WDI API call before module is initialized - Fail request");
3553
Jeff Johnsone7245742012-09-05 17:12:55 -07003554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 }
3556
3557 /*------------------------------------------------------------------------
3558 Fill in Event data and post to the Main FSM
3559 ------------------------------------------------------------------------*/
3560 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 wdiEventData.pEventData = NULL;
3562 wdiEventData.uEventDataSize = 0;
3563 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003564 wdiEventData.pUserData = pUserData;
3565
3566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3567
3568}/*WDI_ExitImpsReq*/
3569
3570/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003571 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 request the device to get into BMPS power state. Upon
3573 the call of this API the WLAN DAL will pack and send a
3574 HAL Enter BMPS request message to the lower RIVA
3575 sub-system if DAL is in state STARTED.
3576
3577 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003578 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003579
3580 WDI_PostAssocReq must have been called.
3581
Jeff Johnsone7245742012-09-05 17:12:55 -07003582 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003584
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 wdiEnterBmpsRspCb: callback for passing back the
3586 response of the Enter BMPS operation received from the
3587 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 callback
3591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 @see WDI_PostAssocReq
3593 @return Result of the function call
3594*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003595WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003596WDI_EnterBmpsReq
3597(
3598 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3599 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3600 void* pUserData
3601)
3602{
3603 WDI_EventInfoType wdiEventData;
3604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3605
3606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003607 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 ------------------------------------------------------------------------*/
3609 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3610 {
3611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3612 "WDI API call before module is initialized - Fail request");
3613
Jeff Johnsone7245742012-09-05 17:12:55 -07003614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 }
3616
3617 /*------------------------------------------------------------------------
3618 Fill in Event data and post to the Main FSM
3619 ------------------------------------------------------------------------*/
3620 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3622 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3623 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 wdiEventData.pUserData = pUserData;
3625
3626 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3627
3628}/*WDI_EnterBmpsReq*/
3629
3630/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003632 request the device to get out of BMPS power state. Upon
3633 the call of this API the WLAN DAL will pack and send a
3634 HAL Exit BMPS request message to the lower RIVA
3635 sub-system if DAL is in state STARTED.
3636
3637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003639
3640 WDI_PostAssocReq must have been called.
3641
Jeff Johnsone7245742012-09-05 17:12:55 -07003642 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 wdiExitBmpsRspCb: callback for passing back the response
3646 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003647
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 callback
3650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 @see WDI_PostAssocReq
3652 @return Result of the function call
3653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003655WDI_ExitBmpsReq
3656(
3657 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3658 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3659 void* pUserData
3660)
3661{
3662 WDI_EventInfoType wdiEventData;
3663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3664
3665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 ------------------------------------------------------------------------*/
3668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3669 {
3670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3671 "WDI API call before module is initialized - Fail request");
3672
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 }
3675
3676 /*------------------------------------------------------------------------
3677 Fill in Event data and post to the Main FSM
3678 ------------------------------------------------------------------------*/
3679 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3681 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3682 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 wdiEventData.pUserData = pUserData;
3684
3685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3686
3687}/*WDI_ExitBmpsReq*/
3688
3689/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003690 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003691 request the device to get into UAPSD power state. Upon
3692 the call of this API the WLAN DAL will pack and send a
3693 HAL Enter UAPSD request message to the lower RIVA
3694 sub-system if DAL is in state STARTED.
3695
3696 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003697 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003698
3699 WDI_PostAssocReq must have been called.
3700 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003701
3702 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003704
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 wdiEnterUapsdRspCb: callback for passing back the
3706 response of the Enter UAPSD operation received from the
3707 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 callback
3711
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3713 @return Result of the function call
3714*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003715WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003716WDI_EnterUapsdReq
3717(
3718 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3719 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3720 void* pUserData
3721)
3722{
3723 WDI_EventInfoType wdiEventData;
3724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3725
3726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003727 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003728 ------------------------------------------------------------------------*/
3729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3730 {
3731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3732 "WDI API call before module is initialized - Fail request");
3733
Jeff Johnsone7245742012-09-05 17:12:55 -07003734 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003735 }
3736
3737 /*------------------------------------------------------------------------
3738 Fill in Event data and post to the Main FSM
3739 ------------------------------------------------------------------------*/
3740 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3742 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3743 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 wdiEventData.pUserData = pUserData;
3745
3746 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3747
3748}/*WDI_EnterUapsdReq*/
3749
3750/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 request the device to get out of UAPSD power state. Upon
3753 the call of this API the WLAN DAL will send a HAL Exit
3754 UAPSD request message to the lower RIVA sub-system if
3755 DAL is in state STARTED.
3756
3757 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003759
3760 WDI_PostAssocReq must have been called.
3761
Jeff Johnsone7245742012-09-05 17:12:55 -07003762 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 response of the Exit UAPSD operation received from the
3764 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 callback
3768
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 @see WDI_PostAssocReq
3770 @return Result of the function call
3771*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003772WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003773WDI_ExitUapsdReq
3774(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003775 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003776 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3777 void* pUserData
3778)
3779{
3780 WDI_EventInfoType wdiEventData;
3781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3782
3783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003784 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 ------------------------------------------------------------------------*/
3786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3787 {
3788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3789 "WDI API call before module is initialized - Fail request");
3790
Jeff Johnsone7245742012-09-05 17:12:55 -07003791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 }
3793
3794 /*------------------------------------------------------------------------
3795 Fill in Event data and post to the Main FSM
3796 ------------------------------------------------------------------------*/
3797 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003798 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3799 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 wdiEventData.pUserData = pUserData;
3802
3803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3804
3805}/*WDI_ExitUapsdReq*/
3806
3807/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 MAC wants to set the UAPSD related configurations
3810 of an associated STA (while acting as an AP) to the WLAN
3811 Device. Upon the call of this API the WLAN DAL will pack
3812 and send a HAL Update UAPSD params request message to
3813 the lower RIVA sub-system if DAL is in state STARTED.
3814
3815 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003817
3818 WDI_ConfigBSSReq must have been called.
3819
Jeff Johnsone7245742012-09-05 17:12:55 -07003820 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003822
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 wdiUpdateUapsdParamsCb: callback for passing back the
3824 response of the update UAPSD params operation received
3825 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003826
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 callback
3829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 @see WDI_ConfigBSSReq
3831 @return Result of the function call
3832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003834WDI_UpdateUapsdParamsReq
3835(
3836 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3837 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3838 void* pUserData
3839)
3840{
3841 WDI_EventInfoType wdiEventData;
3842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3843
3844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 ------------------------------------------------------------------------*/
3847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3848 {
3849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3850 "WDI API call before module is initialized - Fail request");
3851
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 }
3854
3855 /*------------------------------------------------------------------------
3856 Fill in Event data and post to the Main FSM
3857 ------------------------------------------------------------------------*/
3858 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003860 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 wdiEventData.pUserData = pUserData;
3863
3864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3865
3866}/*WDI_UpdateUapsdParamsReq*/
3867
3868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003869 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003870 MAC wants to set the UAPSD related configurations before
3871 requesting for enter UAPSD power state to the WLAN
3872 Device. Upon the call of this API the WLAN DAL will pack
3873 and send a HAL Set UAPSD params request message to
3874 the lower RIVA sub-system if DAL is in state STARTED.
3875
3876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003878
3879 WDI_PostAssocReq must have been called.
3880
3881 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3882 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003883
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 wdiSetUapsdAcParamsCb: callback for passing back the
3885 response of the set UAPSD params operation received from
3886 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003887
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 callback
3890
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 @see WDI_PostAssocReq
3892 @return Result of the function call
3893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003895WDI_SetUapsdAcParamsReq
3896(
3897 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3898 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3899 void* pUserData
3900)
3901{
3902 WDI_EventInfoType wdiEventData;
3903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3904
3905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003907 ------------------------------------------------------------------------*/
3908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3909 {
3910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3911 "WDI API call before module is initialized - Fail request");
3912
Jeff Johnsone7245742012-09-05 17:12:55 -07003913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 }
3915
3916 /*------------------------------------------------------------------------
3917 Fill in Event data and post to the Main FSM
3918 ------------------------------------------------------------------------*/
3919 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003920 wdiEventData.pEventData = pwdiUapsdInfo;
3921 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3922 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003923 wdiEventData.pUserData = pUserData;
3924
3925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3926
3927}/*WDI_SetUapsdAcParamsReq*/
3928
3929/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003930 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003931 MAC wants to set/reset the RXP filters for received pkts
3932 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3933 and send a HAL configure RXP filter request message to
3934 the lower RIVA sub-system.
3935
3936 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003937 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003938
Jeff Johnsone7245742012-09-05 17:12:55 -07003939
3940 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 filter as specified by the Device
3942 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003943
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 wdiConfigureRxpFilterCb: callback for passing back the
3945 response of the configure RXP filter operation received
3946 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003947
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 callback
3950
Jeff Johnson295189b2012-06-20 16:38:30 -07003951 @return Result of the function call
3952*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003953WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003954WDI_ConfigureRxpFilterReq
3955(
3956 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3957 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3958 void* pUserData
3959)
3960{
3961 WDI_EventInfoType wdiEventData;
3962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3963
3964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 ------------------------------------------------------------------------*/
3967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3968 {
3969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3970 "WDI API call before module is initialized - Fail request");
3971
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 }
3974
3975 /*------------------------------------------------------------------------
3976 Fill in Event data and post to the Main FSM
3977 ------------------------------------------------------------------------*/
3978 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003979 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3980 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3981 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 wdiEventData.pUserData = pUserData;
3983
3984 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3985}/*WDI_ConfigureRxpFilterReq*/
3986
3987/**
3988 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3989 wants to set the beacon filters while in power save.
3990 Upon the call of this API the WLAN DAL will pack and
3991 send a Beacon filter request message to the
3992 lower RIVA sub-system.
3993
3994 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003995 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003996
Jeff Johnsone7245742012-09-05 17:12:55 -07003997
3998 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 filter as specified by the Device
4000 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 wdiBeaconFilterCb: callback for passing back the
4003 response of the set beacon filter operation received
4004 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 callback
4008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 @return Result of the function call
4010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004012WDI_SetBeaconFilterReq
4013(
4014 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4015 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4016 void* pUserData
4017)
4018{
4019 WDI_EventInfoType wdiEventData;
4020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4021
4022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 ------------------------------------------------------------------------*/
4025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4026 {
4027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4028 "WDI API call before module is initialized - Fail request");
4029
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 }
4032
4033 /*------------------------------------------------------------------------
4034 Fill in Event data and post to the Main FSM
4035 ------------------------------------------------------------------------*/
4036 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004038 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004039 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004040 wdiEventData.pUserData = pUserData;
4041
4042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4043}/*WDI_SetBeaconFilterReq*/
4044
4045/**
4046 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4047 wants to remove the beacon filter for particular IE
4048 while in power save. Upon the call of this API the WLAN
4049 DAL will pack and send a remove Beacon filter request
4050 message to the lower RIVA sub-system.
4051
4052 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004054
Jeff Johnsone7245742012-09-05 17:12:55 -07004055
4056 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 filter as specified by the Device
4058 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004059
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 wdiBeaconFilterCb: callback for passing back the
4061 response of the remove beacon filter operation received
4062 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004065 callback
4066
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 @return Result of the function call
4068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004070WDI_RemBeaconFilterReq
4071(
4072 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4073 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4074 void* pUserData
4075)
4076{
4077 WDI_EventInfoType wdiEventData;
4078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4079
4080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 ------------------------------------------------------------------------*/
4083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4084 {
4085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4086 "WDI API call before module is initialized - Fail request");
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 }
4090
4091 /*------------------------------------------------------------------------
4092 Fill in Event data and post to the Main FSM
4093 ------------------------------------------------------------------------*/
4094 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004096 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 wdiEventData.pUserData = pUserData;
4099
4100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4101}/*WDI_RemBeaconFilterReq*/
4102
4103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 MAC wants to set the RSSI thresholds related
4106 configurations while in power save. Upon the call of
4107 this API the WLAN DAL will pack and send a HAL Set RSSI
4108 thresholds request message to the lower RIVA
4109 sub-system if DAL is in state STARTED.
4110
4111 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004113
4114 WDI_PostAssocReq must have been called.
4115
4116 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4117 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004118
Jeff Johnson295189b2012-06-20 16:38:30 -07004119 wdiSetUapsdAcParamsCb: callback for passing back the
4120 response of the set UAPSD params operation received from
4121 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 callback
4125
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 @see WDI_PostAssocReq
4127 @return Result of the function call
4128*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004130WDI_SetRSSIThresholdsReq
4131(
4132 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4133 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4134 void* pUserData
4135)
4136{
4137 WDI_EventInfoType wdiEventData;
4138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4139
4140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 ------------------------------------------------------------------------*/
4143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4144 {
4145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4146 "WDI API call before module is initialized - Fail request");
4147
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 }
4150
4151 /*------------------------------------------------------------------------
4152 Fill in Event data and post to the Main FSM
4153 ------------------------------------------------------------------------*/
4154 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004156 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 wdiEventData.pUserData = pUserData;
4159
4160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4161}/* WDI_SetRSSIThresholdsReq*/
4162
4163/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 wants to set the filter to minimize unnecessary host
4166 wakeup due to broadcast traffic while in power save.
4167 Upon the call of this API the WLAN DAL will pack and
4168 send a HAL host offload request message to the
4169 lower RIVA sub-system if DAL is in state STARTED.
4170
4171 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004173
4174 WDI_PostAssocReq must have been called.
4175
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004178
Jeff Johnson295189b2012-06-20 16:38:30 -07004179 wdiHostOffloadCb: callback for passing back the response
4180 of the host offload operation received from the
4181 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 callback
4185
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 @see WDI_PostAssocReq
4187 @return Result of the function call
4188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004190WDI_HostOffloadReq
4191(
4192 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4193 WDI_HostOffloadCb wdiHostOffloadCb,
4194 void* pUserData
4195)
4196{
4197 WDI_EventInfoType wdiEventData;
4198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4199
4200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004202 ------------------------------------------------------------------------*/
4203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4204 {
4205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4206 "WDI API call before module is initialized - Fail request");
4207
Jeff Johnsone7245742012-09-05 17:12:55 -07004208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 }
4210
4211 /*------------------------------------------------------------------------
4212 Fill in Event data and post to the Main FSM
4213 ------------------------------------------------------------------------*/
4214 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004216 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 wdiEventData.pUserData = pUserData;
4219
4220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4221}/*WDI_HostOffloadReq*/
4222
4223/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004224 @brief WDI_KeepAliveReq will be called when the upper MAC
4225 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 and minimize unnecessary host wakeups due to while in power save.
4227 Upon the call of this API the WLAN DAL will pack and
4228 send a HAL Keep Alive request message to the
4229 lower RIVA sub-system if DAL is in state STARTED.
4230
4231 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004233
4234 WDI_PostAssocReq must have been called.
4235
Jeff Johnsone7245742012-09-05 17:12:55 -07004236 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004238
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 wdiKeepAliveCb: callback for passing back the response
4240 of the Keep Alive operation received from the
4241 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004242
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004244 callback
4245
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 @see WDI_PostAssocReq
4247 @return Result of the function call
4248*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004249WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004250WDI_KeepAliveReq
4251(
4252 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4253 WDI_KeepAliveCb wdiKeepAliveCb,
4254 void* pUserData
4255)
4256{
4257 WDI_EventInfoType wdiEventData;
4258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4259
4260 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 ------------------------------------------------------------------------*/
4263 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4264 {
4265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4266 "WDI_KeepAliveReq: WDI API call before module "
4267 "is initialized - Fail request");
4268
Jeff Johnsone7245742012-09-05 17:12:55 -07004269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004270 }
4271
4272 /*------------------------------------------------------------------------
4273 Fill in Event data and post to the Main FSM
4274 ------------------------------------------------------------------------*/
4275 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 wdiEventData.pEventData = pwdiKeepAliveParams;
4277 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4278 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 wdiEventData.pUserData = pUserData;
4280
4281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4282}/*WDI_KeepAliveReq*/
4283
4284/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004285 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004286 wants to set the Wowl Bcast ptrn to minimize unnecessary
4287 host wakeup due to broadcast traffic while in power
4288 save. Upon the call of this API the WLAN DAL will pack
4289 and send a HAL Wowl Bcast ptrn request message to the
4290 lower RIVA sub-system if DAL is in state STARTED.
4291
4292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004294
4295 WDI_PostAssocReq must have been called.
4296
Jeff Johnsone7245742012-09-05 17:12:55 -07004297 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 wdiWowlAddBcPtrnCb: callback for passing back the
4301 response of the add Wowl bcast ptrn operation received
4302 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 callback
4306
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 @see WDI_PostAssocReq
4308 @return Result of the function call
4309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004311WDI_WowlAddBcPtrnReq
4312(
4313 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4314 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4315 void* pUserData
4316)
4317{
4318 WDI_EventInfoType wdiEventData;
4319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4320
4321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 ------------------------------------------------------------------------*/
4324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4325 {
4326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4327 "WDI API call before module is initialized - Fail request");
4328
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 }
4331
4332 /*------------------------------------------------------------------------
4333 Fill in Event data and post to the Main FSM
4334 ------------------------------------------------------------------------*/
4335 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004337 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004338 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 wdiEventData.pUserData = pUserData;
4340
4341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4342}/*WDI_WowlAddBcPtrnReq*/
4343
4344/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004345 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 wants to clear the Wowl Bcast ptrn. Upon the call of
4347 this API the WLAN DAL will pack and send a HAL delete
4348 Wowl Bcast ptrn request message to the lower RIVA
4349 sub-system if DAL is in state STARTED.
4350
4351 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004352 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004353
4354 WDI_WowlAddBcPtrnReq must have been called.
4355
Jeff Johnsone7245742012-09-05 17:12:55 -07004356 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004358
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 wdiWowlDelBcPtrnCb: callback for passing back the
4360 response of the del Wowl bcast ptrn operation received
4361 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 callback
4365
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 @see WDI_WowlAddBcPtrnReq
4367 @return Result of the function call
4368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004370WDI_WowlDelBcPtrnReq
4371(
4372 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4373 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4374 void* pUserData
4375)
4376{
4377 WDI_EventInfoType wdiEventData;
4378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4379
4380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 ------------------------------------------------------------------------*/
4383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4384 {
4385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4386 "WDI API call before module is initialized - Fail request");
4387
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 }
4390
4391 /*------------------------------------------------------------------------
4392 Fill in Event data and post to the Main FSM
4393 ------------------------------------------------------------------------*/
4394 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004396 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004397 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004398 wdiEventData.pUserData = pUserData;
4399
4400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4401}/*WDI_WowlDelBcPtrnReq*/
4402
4403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 wants to enter the Wowl state to minimize unnecessary
4406 host wakeup while in power save. Upon the call of this
4407 API the WLAN DAL will pack and send a HAL Wowl enter
4408 request message to the lower RIVA sub-system if DAL is
4409 in state STARTED.
4410
4411 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004413
4414 WDI_PostAssocReq must have been called.
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 wdiWowlEnterReqCb: callback for passing back the
4420 response of the enter Wowl operation received from the
4421 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 callback
4425
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 @see WDI_PostAssocReq
4427 @return Result of the function call
4428*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004429WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004430WDI_WowlEnterReq
4431(
4432 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4433 WDI_WowlEnterReqCb wdiWowlEnterCb,
4434 void* pUserData
4435)
4436{
4437 WDI_EventInfoType wdiEventData;
4438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4439
4440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004441 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 ------------------------------------------------------------------------*/
4443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4444 {
4445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4446 "WDI API call before module is initialized - Fail request");
4447
Jeff Johnsone7245742012-09-05 17:12:55 -07004448 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004449 }
4450
4451 /*------------------------------------------------------------------------
4452 Fill in Event data and post to the Main FSM
4453 ------------------------------------------------------------------------*/
4454 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004455 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004456 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004457 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004458 wdiEventData.pUserData = pUserData;
4459
4460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4461}/*WDI_WowlEnterReq*/
4462
4463/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004464 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004465 wants to exit the Wowl state. Upon the call of this API
4466 the WLAN DAL will pack and send a HAL Wowl exit request
4467 message to the lower RIVA sub-system if DAL is in state
4468 STARTED.
4469
4470 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004471 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004472
4473 WDI_WowlEnterReq must have been called.
4474
Jeff Johnsone7245742012-09-05 17:12:55 -07004475 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004476 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004477
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 wdiWowlExitReqCb: callback for passing back the response
4479 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004482 callback
4483
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 @see WDI_WowlEnterReq
4485 @return Result of the function call
4486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004488WDI_WowlExitReq
4489(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004490 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 WDI_WowlExitReqCb wdiWowlExitCb,
4492 void* pUserData
4493)
4494{
4495 WDI_EventInfoType wdiEventData;
4496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4497
4498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 ------------------------------------------------------------------------*/
4501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4502 {
4503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4504 "WDI API call before module is initialized - Fail request");
4505
Jeff Johnsone7245742012-09-05 17:12:55 -07004506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004507 }
4508
4509 /*------------------------------------------------------------------------
4510 Fill in Event data and post to the Main FSM
4511 ------------------------------------------------------------------------*/
4512 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004513 wdiEventData.pEventData = pwdiWowlExitParams;
4514 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004515 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004516 wdiEventData.pUserData = pUserData;
4517
4518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4519}/*WDI_WowlExitReq*/
4520
4521/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004522 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 the upper MAC wants to dynamically adjusts the listen
4524 interval based on the WLAN/MSM activity. Upon the call
4525 of this API the WLAN DAL will pack and send a HAL
4526 configure Apps Cpu Wakeup State request message to the
4527 lower RIVA sub-system.
4528
4529 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004531
Jeff Johnsone7245742012-09-05 17:12:55 -07004532
4533 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 Apps Cpu Wakeup State as specified by the
4535 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004536
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4538 back the response of the configure Apps Cpu Wakeup State
4539 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004540
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 callback
4543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 @return Result of the function call
4545*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004547WDI_ConfigureAppsCpuWakeupStateReq
4548(
4549 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4550 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4551 void* pUserData
4552)
4553{
4554 WDI_EventInfoType wdiEventData;
4555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4556
4557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 ------------------------------------------------------------------------*/
4560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4561 {
4562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4563 "WDI API call before module is initialized - Fail request");
4564
Jeff Johnsone7245742012-09-05 17:12:55 -07004565 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004566 }
4567
4568 /*------------------------------------------------------------------------
4569 Fill in Event data and post to the Main FSM
4570 ------------------------------------------------------------------------*/
4571 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004572 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4573 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4574 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004575 wdiEventData.pUserData = pUserData;
4576
4577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4578}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4579/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 to to perform a flush operation on a given AC. Upon the
4582 call of this API the WLAN DAL will pack and send a HAL
4583 Flush AC request message to the lower RIVA sub-system if
4584 DAL is in state STARTED.
4585
4586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004588
4589 WDI_AddBAReq must have been called.
4590
Jeff Johnsone7245742012-09-05 17:12:55 -07004591 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004593
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 wdiFlushAcRspCb: callback for passing back the response
4595 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004596
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004598 callback
4599
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 @see WDI_AddBAReq
4601 @return Result of the function call
4602*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004603WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004604WDI_FlushAcReq
4605(
4606 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4607 WDI_FlushAcRspCb wdiFlushAcRspCb,
4608 void* pUserData
4609)
4610{
4611 WDI_EventInfoType wdiEventData;
4612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4613
4614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004615 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 ------------------------------------------------------------------------*/
4617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4618 {
4619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4620 "WDI API call before module is initialized - Fail request");
4621
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 }
4624
4625 /*------------------------------------------------------------------------
4626 Fill in Event data and post to the Main FSM
4627 ------------------------------------------------------------------------*/
4628 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 wdiEventData.pEventData = pwdiFlushAcReqParams;
4630 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4631 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004632 wdiEventData.pUserData = pUserData;
4633
4634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4635
4636}/*WDI_FlushAcReq*/
4637
4638/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004640 wants to notify the lower mac on a BT AMP event. This is
4641 to inform BTC-SLM that some BT AMP event occurred. Upon
4642 the call of this API the WLAN DAL will pack and send a
4643 HAL BT AMP event request message to the lower RIVA
4644 sub-system if DAL is in state STARTED.
4645
4646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004648
Jeff Johnsone7245742012-09-05 17:12:55 -07004649
4650 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004651 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004652
Jeff Johnson295189b2012-06-20 16:38:30 -07004653 wdiBtAmpEventRspCb: callback for passing back the
4654 response of the BT AMP event operation received from the
4655 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004656
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004658 callback
4659
Jeff Johnson295189b2012-06-20 16:38:30 -07004660 @return Result of the function call
4661*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004662WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004663WDI_BtAmpEventReq
4664(
4665 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4666 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4667 void* pUserData
4668)
4669{
4670 WDI_EventInfoType wdiEventData;
4671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4672
4673 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 ------------------------------------------------------------------------*/
4676 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4677 {
4678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4679 "WDI API call before module is initialized - Fail request");
4680
Jeff Johnsone7245742012-09-05 17:12:55 -07004681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 }
4683
4684 /*------------------------------------------------------------------------
4685 Fill in Event data and post to the Main FSM
4686 ------------------------------------------------------------------------*/
4687 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004688 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4689 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4690 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004691 wdiEventData.pUserData = pUserData;
4692
4693 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4694
4695}/*WDI_BtAmpEventReq*/
4696
Jeff Johnsone7245742012-09-05 17:12:55 -07004697#ifdef FEATURE_OEM_DATA_SUPPORT
4698/**
4699 @brief WDI_Start Oem Data Req will be called when the upper MAC
4700 wants to notify the lower mac on a oem data Req event.Upon
4701 the call of this API the WLAN DAL will pack and send a
4702 HAL OEM Data Req event request message to the lower RIVA
4703 sub-system if DAL is in state STARTED.
4704
4705 In state BUSY this request will be queued. Request won't
4706 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004707
4708
Jeff Johnsone7245742012-09-05 17:12:55 -07004709
4710 @param pwdiOemDataReqParams: the Oem Data Req as
4711 specified by the Device Interface
4712
4713 wdiStartOemDataRspCb: callback for passing back the
4714 response of the Oem Data Req received from the
4715 device
4716
4717 pUserData: user data will be passed back with the
4718 callback
4719
4720 @return Result of the function call
4721*/
4722WDI_Status
4723WDI_StartOemDataReq
4724(
4725 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4726 WDI_oemDataRspCb wdiOemDataRspCb,
4727 void* pUserData
4728)
4729{
4730 WDI_EventInfoType wdiEventData;
4731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4732
4733 /*------------------------------------------------------------------------
4734 Sanity Check
4735 ------------------------------------------------------------------------*/
4736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4737 {
4738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4739 "WDI API call before module is initialized - Fail request");
4740
4741 return WDI_STATUS_E_NOT_ALLOWED;
4742 }
4743
4744 /*------------------------------------------------------------------------
4745 Fill in Event data and post to the Main FSM
4746 ------------------------------------------------------------------------*/
4747 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4748 wdiEventData.pEventData = pwdiOemDataReqParams;
4749 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4750 wdiEventData.pCBfnc = wdiOemDataRspCb;
4751 wdiEventData.pUserData = pUserData;
4752
4753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4754
4755
4756}
4757
4758#endif
4759
4760
4761/*========================================================================
4762
Jeff Johnson295189b2012-06-20 16:38:30 -07004763 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004764
Jeff Johnson295189b2012-06-20 16:38:30 -07004765==========================================================================*/
4766/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004767 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004768 the WLAN HW to change the current channel of operation.
4769 Upon the call of this API the WLAN DAL will pack and
4770 send a HAL Start request message to the lower RIVA
4771 sub-system if DAL is in state STARTED.
4772
4773 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004774 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004775
4776 WDI_Start must have been called.
4777
Jeff Johnsone7245742012-09-05 17:12:55 -07004778 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004779 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 wdiSwitchChRspCb: callback for passing back the response
4782 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004783
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004785 callback
4786
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 @see WDI_Start
4788 @return Result of the function call
4789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004791WDI_SwitchChReq
4792(
4793 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4794 WDI_SwitchChRspCb wdiSwitchChRspCb,
4795 void* pUserData
4796)
4797{
4798 WDI_EventInfoType wdiEventData;
4799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4800
4801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 ------------------------------------------------------------------------*/
4804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4805 {
4806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4807 "WDI API call before module is initialized - Fail request");
4808
Jeff Johnsone7245742012-09-05 17:12:55 -07004809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 }
4811
4812 /*------------------------------------------------------------------------
4813 Fill in Event data and post to the Main FSM
4814 ------------------------------------------------------------------------*/
4815 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 wdiEventData.pEventData = pwdiSwitchChReqParams;
4817 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4818 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 wdiEventData.pUserData = pUserData;
4820
4821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4822
4823}/*WDI_SwitchChReq*/
4824
4825
4826/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 wishes to add or update a STA in HW. Upon the call of
4829 this API the WLAN DAL will pack and send a HAL Start
4830 message request message to the lower RIVA sub-system if
4831 DAL is in state STARTED.
4832
4833 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004834 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004835
4836 WDI_Start must have been called.
4837
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004840
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 wdiConfigSTARspCb: callback for passing back the
4842 response of the config STA operation received from the
4843 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004844
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 callback
4847
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 @see WDI_Start
4849 @return Result of the function call
4850*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004851WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004852WDI_ConfigSTAReq
4853(
4854 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4855 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4856 void* pUserData
4857)
4858{
4859 WDI_EventInfoType wdiEventData;
4860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4861
4862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004864 ------------------------------------------------------------------------*/
4865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4866 {
4867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4868 "WDI API call before module is initialized - Fail request");
4869
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 }
4872
4873 /*------------------------------------------------------------------------
4874 Fill in Event data and post to the Main FSM
4875 ------------------------------------------------------------------------*/
4876 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4878 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4879 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 wdiEventData.pUserData = pUserData;
4881
4882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4883
4884}/*WDI_ConfigSTAReq*/
4885
4886/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 wants to change the state of an ongoing link. Upon the
4889 call of this API the WLAN DAL will pack and send a HAL
4890 Start message request message to the lower RIVA
4891 sub-system if DAL is in state STARTED.
4892
4893 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004894 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004895
4896 WDI_JoinStartReq must have been called.
4897
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004900
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 wdiSetLinkStateRspCb: callback for passing back the
4902 response of the set link state operation received from
4903 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 callback
4907
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 @see WDI_JoinStartReq
4909 @return Result of the function call
4910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004912WDI_SetLinkStateReq
4913(
4914 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4915 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4916 void* pUserData
4917)
4918{
4919 WDI_EventInfoType wdiEventData;
4920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4921
4922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 ------------------------------------------------------------------------*/
4925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4926 {
4927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4928 "WDI API call before module is initialized - Fail request");
4929
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 }
4932
4933 /*------------------------------------------------------------------------
4934 Fill in Event data and post to the Main FSM
4935 ------------------------------------------------------------------------*/
4936 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4938 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4939 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004940 wdiEventData.pUserData = pUserData;
4941
4942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4943
4944}/*WDI_SetLinkStateReq*/
4945
4946
4947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004948 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004949 to get statistics (MIB counters) from the device. Upon
4950 the call of this API the WLAN DAL will pack and send a
4951 HAL Start request message to the lower RIVA sub-system
4952 if DAL is in state STARTED.
4953
4954 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004956
4957 WDI_Start must have been called.
4958
Jeff Johnsone7245742012-09-05 17:12:55 -07004959 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004960 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004961
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 wdiGetStatsRspCb: callback for passing back the response
4963 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004964
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004966 callback
4967
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 @see WDI_Start
4969 @return Result of the function call
4970*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004971WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004972WDI_GetStatsReq
4973(
4974 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4975 WDI_GetStatsRspCb wdiGetStatsRspCb,
4976 void* pUserData
4977)
4978{
4979 WDI_EventInfoType wdiEventData;
4980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4981
4982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 ------------------------------------------------------------------------*/
4985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4986 {
4987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4988 "WDI API call before module is initialized - Fail request");
4989
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004991 }
4992
4993 /*------------------------------------------------------------------------
4994 Fill in Event data and post to the Main FSM
4995 ------------------------------------------------------------------------*/
4996 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 wdiEventData.pEventData = pwdiGetStatsReqParams;
4998 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4999 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005000 wdiEventData.pUserData = pUserData;
5001
5002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5003
5004}/*WDI_GetStatsReq*/
5005
Srinivas Girigowda2471d832013-01-25 13:33:11 -08005006#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5007/**
5008 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5009 to get roam rssi from the device. Upon
5010 the call of this API the WLAN DAL will pack and send a
5011 HAL Start request message to the lower RIVA sub-system
5012 if DAL is in state STARTED.
5013
5014 In state BUSY this request will be queued. Request won't
5015 be allowed in any other state.
5016
5017 WDI_Start must have been called.
5018
5019 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5020 specified by the Device Interface
5021
5022 wdiGetRoamRssiRspCb: callback for passing back the response
5023 of the get stats operation received from the device
5024
5025 pUserData: user data will be passed back with the
5026 callback
5027
5028 @see WDI_Start
5029 @return Result of the function call
5030*/
5031WDI_Status
5032WDI_GetRoamRssiReq
5033(
5034 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5035 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5036 void* pUserData
5037)
5038{
5039 WDI_EventInfoType wdiEventData;
5040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5041
5042 /*------------------------------------------------------------------------
5043 Sanity Check
5044 ------------------------------------------------------------------------*/
5045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5046 {
5047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5048 "WDI API call before module is initialized - Fail request");
5049
5050 return WDI_STATUS_E_NOT_ALLOWED;
5051 }
5052 /*------------------------------------------------------------------------
5053 Fill in Event data and post to the Main FSM
5054 ------------------------------------------------------------------------*/
5055 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5056 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5057 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5058 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5059 wdiEventData.pUserData = pUserData;
5060
5061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5062
5063}/*WDI_GetRoamRssiReq*/
5064#endif
5065
Jeff Johnson295189b2012-06-20 16:38:30 -07005066
5067/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 it wishes to change the configuration of the WLAN
5070 Device. Upon the call of this API the WLAN DAL will pack
5071 and send a HAL Update CFG request message to the lower
5072 RIVA sub-system if DAL is 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_Start must have been called.
5078
Jeff Johnsone7245742012-09-05 17:12:55 -07005079 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005081
Jeff Johnson295189b2012-06-20 16:38:30 -07005082 wdiUpdateCfgsRspCb: callback for passing back the
5083 response of the update cfg operation received from the
5084 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005085
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 callback
5088
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 @see WDI_Start
5090 @return Result of the function call
5091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005093WDI_UpdateCfgReq
5094(
5095 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5096 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5097 void* pUserData
5098)
5099{
5100 WDI_EventInfoType wdiEventData;
5101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5102
5103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 ------------------------------------------------------------------------*/
5106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5107 {
5108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5109 "WDI API call before module is initialized - Fail request");
5110
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 }
5113
5114 /*------------------------------------------------------------------------
5115 Fill in Event data and post to the Main FSM
5116 ------------------------------------------------------------------------*/
5117 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5119 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5120 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 wdiEventData.pUserData = pUserData;
5122
5123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5124
5125}/*WDI_UpdateCfgReq*/
5126
5127
5128
5129/**
5130 @brief WDI_AddBAReq will be called when the upper MAC has setup
5131 successfully a BA session and needs to notify the HW for
5132 the appropriate settings to take place. Upon the call of
5133 this API the WLAN DAL will pack and send a HAL Add BA
5134 request message to the lower RIVA sub-system if DAL is
5135 in state STARTED.
5136
5137 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005138 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005139
5140 WDI_PostAssocReq must have been called.
5141
5142 @param wdiAddBAReqParams: the add BA parameters as specified by
5143 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005144
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 wdiAddBARspCb: callback for passing back the response of
5146 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005147
Jeff Johnson295189b2012-06-20 16:38:30 -07005148 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 callback
5150
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 @see WDI_PostAssocReq
5152 @return Result of the function call
5153*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005155WDI_AddBAReq
5156(
5157 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5158 WDI_AddBARspCb wdiAddBARspCb,
5159 void* pUserData
5160)
5161{
5162 WDI_EventInfoType wdiEventData;
5163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5164
5165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005167 ------------------------------------------------------------------------*/
5168 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5169 {
5170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5171 "WDI API call before module is initialized - Fail request");
5172
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 }
5175
5176 /*------------------------------------------------------------------------
5177 Fill in Event data and post to the Main FSM
5178 ------------------------------------------------------------------------*/
5179 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 wdiEventData.pEventData = pwdiAddBAReqParams;
5181 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5182 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 wdiEventData.pUserData = pUserData;
5184
5185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5186
5187}/*WDI_AddBAReq*/
5188
5189
5190/**
5191 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5192 successfully a BA session and needs to notify the HW for
5193 the appropriate settings to take place. Upon the call of
5194 this API the WLAN DAL will pack and send a HAL Add BA
5195 request message to the lower RIVA sub-system if DAL is
5196 in state STARTED.
5197
5198 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005199 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005200
5201 WDI_PostAssocReq must have been called.
5202
5203 @param wdiAddBAReqParams: the add BA parameters as specified by
5204 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 wdiAddBARspCb: callback for passing back the response of
5207 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005208
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 callback
5211
Jeff Johnson295189b2012-06-20 16:38:30 -07005212 @see WDI_PostAssocReq
5213 @return Result of the function call
5214*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005215WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005216WDI_TriggerBAReq
5217(
5218 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5219 WDI_TriggerBARspCb wdiTriggerBARspCb,
5220 void* pUserData
5221)
5222{
5223 WDI_EventInfoType wdiEventData;
5224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5225
5226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005228 ------------------------------------------------------------------------*/
5229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5230 {
5231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5232 "WDI API call before module is initialized - Fail request");
5233
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 }
5236
5237 /*------------------------------------------------------------------------
5238 Fill in Event data and post to the Main FSM
5239 ------------------------------------------------------------------------*/
5240 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005241 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5242 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5243 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005244 wdiEventData.pUserData = pUserData;
5245
5246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5247
5248}/*WDI_AddBAReq*/
5249
5250/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 wishes to update any of the Beacon parameters used by HW.
5253 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5254 message to the lower RIVA sub-system if DAL is in state
5255 STARTED.
5256
5257 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005259
5260 WDI_PostAssocReq must have been called.
5261
Jeff Johnsone7245742012-09-05 17:12:55 -07005262 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005264
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 wdiUpdateBeaconParamsRspCb: callback for passing back the
5266 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005267
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005269 callback
5270
Jeff Johnson295189b2012-06-20 16:38:30 -07005271 @see WDI_PostAssocReq
5272 @return Result of the function call
5273*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005274WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005275WDI_UpdateBeaconParamsReq
5276(
5277 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5278 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5279 void* pUserData
5280)
5281{
5282 WDI_EventInfoType wdiEventData;
5283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5284
5285 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005286 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005287 ------------------------------------------------------------------------*/
5288 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5289 {
5290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5291 "WDI API call before module is initialized - Fail request");
5292
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 }
5295
5296 /*------------------------------------------------------------------------
5297 Fill in Event data and post to the Main FSM
5298 ------------------------------------------------------------------------*/
5299 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5301 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5302 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 wdiEventData.pUserData = pUserData;
5304
5305 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5306
5307}/*WDI_UpdateBeaconParamsReq*/
5308
5309/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005310 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005311 wishes to update the Beacon template used by HW.
5312 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5313 message to the lower RIVA sub-system if DAL is in state
5314 STARTED.
5315
5316 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005318
5319 WDI_PostAssocReq must have been called.
5320
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 wdiSendBeaconParamsRspCb: callback for passing back the
5325 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 callback
5329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 @see WDI_PostAssocReq
5331 @return Result of the function call
5332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005334WDI_SendBeaconParamsReq
5335(
5336 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5337 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5338 void* pUserData
5339)
5340{
5341 WDI_EventInfoType wdiEventData;
5342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5343
5344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 ------------------------------------------------------------------------*/
5347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5348 {
5349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5350 "WDI API call before module is initialized - Fail request");
5351
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 }
5354
5355 /*------------------------------------------------------------------------
5356 Fill in Event data and post to the Main FSM
5357 ------------------------------------------------------------------------*/
5358 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 wdiEventData.pEventData = pwdiSendBeaconParams;
5360 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5361 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 wdiEventData.pUserData = pUserData;
5363
5364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5365
5366}/*WDI_SendBeaconParamsReq*/
5367
5368/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005369 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 upper MAC wants to update the probe response template to
5371 be transmitted as Soft AP
5372 Upon the call of this API the WLAN DAL will
5373 pack and send the probe rsp template message to the
5374 lower RIVA sub-system if DAL is in state STARTED.
5375
5376 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005378
5379
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005382
Jeff Johnson295189b2012-06-20 16:38:30 -07005383 wdiSendBeaconParamsRspCb: callback for passing back the
5384 response of the Send Beacon Params operation received
5385 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 callback
5389
Jeff Johnson295189b2012-06-20 16:38:30 -07005390 @see WDI_AddBAReq
5391 @return Result of the function call
5392*/
5393
Jeff Johnsone7245742012-09-05 17:12:55 -07005394WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005395WDI_UpdateProbeRspTemplateReq
5396(
5397 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5398 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5399 void* pUserData
5400)
5401{
5402 WDI_EventInfoType wdiEventData;
5403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5404
5405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005406 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005407 ------------------------------------------------------------------------*/
5408 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5409 {
5410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5411 "WDI API call before module is initialized - Fail request");
5412
Jeff Johnsone7245742012-09-05 17:12:55 -07005413 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005414 }
5415
5416 /*------------------------------------------------------------------------
5417 Fill in Event data and post to the Main FSM
5418 ------------------------------------------------------------------------*/
5419 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5421 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5422 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 wdiEventData.pUserData = pUserData;
5424
5425 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5426
5427}/*WDI_UpdateProbeRspTemplateReq*/
5428
5429/**
5430 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5431 to the NV memory.
5432
5433
5434 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5435 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005436
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 wdiNvDownloadRspCb: callback for passing back the response of
5438 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005439
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005441 callback
5442
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 @see WDI_PostAssocReq
5444 @return Result of the function call
5445*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005446WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005447WDI_NvDownloadReq
5448(
5449 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5450 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5451 void* pUserData
5452)
5453{
5454 WDI_EventInfoType wdiEventData;
5455
5456 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005457 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 ------------------------------------------------------------------------*/
5459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5460 {
5461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5462 "WDI API call before module is initialized - Fail request");
5463
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 }
5466
5467 /*------------------------------------------------------------------------
5468 Fill in Event data and post to the Main FSM
5469 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005470 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5471 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5472 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5473 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 wdiEventData.pUserData = pUserData;
5475
5476 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5477
5478}/*WDI_NVDownloadReq*/
5479
Jeff Johnson295189b2012-06-20 16:38:30 -07005480/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005481 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005482 upper MAC wants to send Notice of Absence
5483 Upon the call of this API the WLAN DAL will
5484 pack and send the probe rsp template message to the
5485 lower RIVA sub-system if DAL is in state STARTED.
5486
5487 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005488 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005489
5490
Jeff Johnsone7245742012-09-05 17:12:55 -07005491 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005492 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005493
Jeff Johnson295189b2012-06-20 16:38:30 -07005494 wdiSendBeaconParamsRspCb: callback for passing back the
5495 response of the Send Beacon Params operation received
5496 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005497
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005499 callback
5500
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 @see WDI_AddBAReq
5502 @return Result of the function call
5503*/
5504WDI_Status
5505WDI_SetP2PGONOAReq
5506(
5507 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5508 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5509 void* pUserData
5510)
5511{
5512 WDI_EventInfoType wdiEventData;
5513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5514
5515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005517 ------------------------------------------------------------------------*/
5518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5519 {
5520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5521 "WDI API call before module is initialized - Fail request");
5522
Jeff Johnsone7245742012-09-05 17:12:55 -07005523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005524 }
5525
5526 /*------------------------------------------------------------------------
5527 Fill in Event data and post to the Main FSM
5528 ------------------------------------------------------------------------*/
5529 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005530 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5531 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5532 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 wdiEventData.pUserData = pUserData;
5534
5535 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5536
5537}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005538
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305539#ifdef FEATURE_WLAN_TDLS
5540/**
5541 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5542 upper MAC wants to send TDLS Link Establish Request Parameters
5543 Upon the call of this API the WLAN DAL will
5544 pack and send the TDLS Link Establish Request message to the
5545 lower RIVA sub-system if DAL is in state STARTED.
5546
5547 In state BUSY this request will be queued. Request won't
5548 be allowed in any other state.
5549
5550
5551 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5552 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5553
5554 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5555 response of the TDLS Link Establish request received
5556 from the device
5557
5558 pUserData: user data will be passed back with the
5559 callback
5560
5561 @see
5562 @return Result of the function call
5563*/
5564WDI_Status
5565WDI_SetTDLSLinkEstablishReq
5566(
5567 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5568 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5569 void* pUserData
5570)
5571{
5572 WDI_EventInfoType wdiEventData;
5573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5574
5575 /*------------------------------------------------------------------------
5576 Sanity Check
5577 ------------------------------------------------------------------------*/
5578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5579 {
5580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5581 "WDI API call before module is initialized - Fail request");
5582
5583 return WDI_STATUS_E_NOT_ALLOWED;
5584 }
5585
5586 /*------------------------------------------------------------------------
5587 Fill in Event data and post to the Main FSM
5588 ------------------------------------------------------------------------*/
5589 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5590 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5591 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5592 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5593 wdiEventData.pUserData = pUserData;
5594
5595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5596
5597}/*WDI_SetTDLSLinkEstablishReq*/
5598#endif
5599
Jeff Johnson295189b2012-06-20 16:38:30 -07005600/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 UMAC wanted to add STA self while opening any new session
5603 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005605
5606
Jeff Johnsone7245742012-09-05 17:12:55 -07005607 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 specified by the Device Interface
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
5613 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 @return Result of the function call
5615*/
5616WDI_Status
5617WDI_AddSTASelfReq
5618(
5619 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5620 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
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_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5643 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5644 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 wdiEventData.pUserData = pUserData;
5646
5647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5648
5649}/*WDI_AddSTASelfReq*/
5650
5651
Jeff Johnsone7245742012-09-05 17:12:55 -07005652#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005653/**
5654 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5655 the device of a successful add TSpec negotiation. HW
5656 needs to receive the TSpec Info from the UMAC in order
5657 to configure properly the QoS data traffic. Upon the
5658 call of this API the WLAN DAL will pack and send a HAL
5659 Add TS request message to the lower RIVA sub-system if
5660 DAL is in state STARTED.
5661
5662 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005664
5665 WDI_PostAssocReq must have been called.
5666
5667 @param wdiAddTsReqParams: the add TS parameters as specified by
5668 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005669
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 wdiAddTsRspCb: callback for passing back the response of
5671 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005672
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005674 callback
5675
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 @see WDI_PostAssocReq
5677 @return Result of the function call
5678*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005680WDI_AggrAddTSReq
5681(
5682 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5683 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5684 void* pUserData
5685)
5686{
5687 WDI_EventInfoType wdiEventData;
5688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5689
5690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005691 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005692 ------------------------------------------------------------------------*/
5693 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5694 {
5695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5696 "WDI API call before module is initialized - Fail request");
5697
Jeff Johnsone7245742012-09-05 17:12:55 -07005698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 }
5700
5701 /*------------------------------------------------------------------------
5702 Fill in Event data and post to the Main FSM
5703 ------------------------------------------------------------------------*/
5704 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005705 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5706 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5707 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005708 wdiEventData.pUserData = pUserData;
5709
5710 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5711
5712}/*WDI_AggrAddTSReq*/
5713
5714#endif /* WLAN_FEATURE_VOWIFI_11R */
5715
Jeff Johnson295189b2012-06-20 16:38:30 -07005716/**
5717 @brief WDI_FTMCommandReq
5718 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005719
5720 @param ftmCommandReq: FTM Command Body
5721 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 @see
5725 @return Result of the function call
5726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005728WDI_FTMCommandReq
5729(
5730 WDI_FTMCommandReqType *ftmCommandReq,
5731 WDI_FTMCommandRspCb ftmCommandRspCb,
5732 void *pUserData
5733)
5734{
5735 WDI_EventInfoType wdiEventData;
5736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5737
5738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 ------------------------------------------------------------------------*/
5741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5742 {
5743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5744 "WDI API call before module is initialized - Fail request");
5745
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005747 }
5748
5749 /*------------------------------------------------------------------------
5750 Fill in Event data and post to the Main FSM
5751 ------------------------------------------------------------------------*/
5752 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5753 wdiEventData.pEventData = (void *)ftmCommandReq;
5754 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5755 wdiEventData.pCBfnc = ftmCommandRspCb;
5756 wdiEventData.pUserData = pUserData;
5757
5758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5759}
Jeff Johnson295189b2012-06-20 16:38:30 -07005760/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005761 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005762
5763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005765
5766
5767 @param pwdiResumeReqParams: as specified by
5768 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005769
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 wdiResumeReqRspCb: callback for passing back the response of
5771 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005772
Jeff Johnson295189b2012-06-20 16:38:30 -07005773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005774 callback
5775
5776 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 @return Result of the function call
5778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005780WDI_HostResumeReq
5781(
5782 WDI_ResumeParamsType* pwdiResumeReqParams,
5783 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5784 void* pUserData
5785)
5786{
5787 WDI_EventInfoType wdiEventData;
5788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5789
5790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 ------------------------------------------------------------------------*/
5793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5794 {
5795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5796 "WDI API call before module is initialized - Fail request");
5797
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 }
5800
5801 /*------------------------------------------------------------------------
5802 Fill in Event data and post to the Main FSM
5803 ------------------------------------------------------------------------*/
5804 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005805 wdiEventData.pEventData = pwdiResumeReqParams;
5806 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5807 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 wdiEventData.pUserData = pUserData;
5809
5810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5811
5812}/*WDI_HostResumeReq*/
5813
5814/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005816
5817 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005818 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005819
5820
5821 @param pwdiDelStaSelfReqParams: as specified by
5822 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 wdiDelStaSelfRspCb: callback for passing back the response of
5825 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 callback
5829
Jeff Johnson295189b2012-06-20 16:38:30 -07005830 @see WDI_PostAssocReq
5831 @return Result of the function call
5832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005834WDI_DelSTASelfReq
5835(
5836 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5837 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5838 void* pUserData
5839)
5840{
5841 WDI_EventInfoType wdiEventData;
5842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5843
5844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 ------------------------------------------------------------------------*/
5847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5848 {
5849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5850 "WDI API call before module is initialized - Fail request");
5851
Jeff Johnsone7245742012-09-05 17:12:55 -07005852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005853 }
5854
5855 /*------------------------------------------------------------------------
5856 Fill in Event data and post to the Main FSM
5857 ------------------------------------------------------------------------*/
5858 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5860 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5861 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 wdiEventData.pUserData = pUserData;
5863
5864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5865
5866}/*WDI_AggrAddTSReq*/
5867
5868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5870 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005871 Upon the call of this API the WLAN DAL will pack
5872 and send a HAL Set Tx Per Tracking request message to the
5873 lower RIVA sub-system if DAL is in state STARTED.
5874
5875 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005877
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005880
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 pwdiSetTxPerTrackingRspCb: callback for passing back the
5882 response of the set Tx PER Tracking configurations operation received
5883 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005884
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005886 callback
5887
Jeff Johnson295189b2012-06-20 16:38:30 -07005888 @return Result of the function call
5889*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005891WDI_SetTxPerTrackingReq
5892(
5893 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5894 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5895 void* pUserData
5896)
5897{
5898 WDI_EventInfoType wdiEventData;
5899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5900
5901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 ------------------------------------------------------------------------*/
5904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5907 "WDI API call before module is initialized - Fail request");
5908
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 }
5911
5912 /*------------------------------------------------------------------------
5913 Fill in Event data and post to the Main FSM
5914 ------------------------------------------------------------------------*/
5915 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005916 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005918 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 wdiEventData.pUserData = pUserData;
5920
5921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5922
5923}/*WDI_SetTxPerTrackingReq*/
5924
5925/**
5926 @brief WDI_SetTmLevelReq
5927 If HW Thermal condition changed, driver should react based on new
5928 HW thermal condition.
5929
5930 @param pwdiSetTmLevelReq: New thermal condition information
5931
5932 pwdiSetTmLevelRspCb: callback
5933
5934 usrData: user data will be passed back with the
5935 callback
5936
5937 @return Result of the function call
5938*/
5939WDI_Status
5940WDI_SetTmLevelReq
5941(
5942 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5943 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5944 void *usrData
5945)
5946{
5947 WDI_EventInfoType wdiEventData;
5948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5949
5950 /*------------------------------------------------------------------------
5951 Sanity Check
5952 ------------------------------------------------------------------------*/
5953 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5954 {
5955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5956 "WDI API call before module is initialized - Fail request");
5957
5958 return WDI_STATUS_E_NOT_ALLOWED;
5959 }
5960
5961 /*------------------------------------------------------------------------
5962 Fill in Event data and post to the Main FSM
5963 ------------------------------------------------------------------------*/
5964 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5965 wdiEventData.pEventData = pwdiSetTmLevelReq;
5966 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5967 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5968 wdiEventData.pUserData = usrData;
5969
5970 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5971}
5972
5973/**
5974 @brief WDI_HostSuspendInd
5975
5976 Suspend Indication from the upper layer will be sent
5977 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005978
Jeff Johnson295189b2012-06-20 16:38:30 -07005979 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005980
5981 @see
5982
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 @return Status of the request
5984*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005985WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005986WDI_HostSuspendInd
5987(
5988 WDI_SuspendParamsType* pwdiSuspendIndParams
5989)
5990{
5991
5992 WDI_EventInfoType wdiEventData;
5993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5994
5995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005996 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 ------------------------------------------------------------------------*/
5998 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5999 {
6000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6001 "WDI API call before module is initialized - Fail request");
6002
Jeff Johnsone7245742012-09-05 17:12:55 -07006003 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006004 }
6005
6006 /*------------------------------------------------------------------------
6007 Fill in Event data and post to the Main FSM
6008 ------------------------------------------------------------------------*/
6009 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006010 wdiEventData.pEventData = pwdiSuspendIndParams;
6011 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6012 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006013 wdiEventData.pUserData = NULL;
6014
6015 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6016
6017}/*WDI_HostSuspendInd*/
6018
6019/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006020 @brief WDI_TrafficStatsInd
6021 Traffic Stats from the upper layer will be sent
6022 down to HAL
6023
6024 @param WDI_TrafficStatsIndType
6025
6026 @see
6027
6028 @return Status of the request
6029*/
6030WDI_Status
6031WDI_TrafficStatsInd
6032(
6033 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6034)
6035{
6036
6037 WDI_EventInfoType wdiEventData;
6038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6039
6040 /*------------------------------------------------------------------------
6041 Sanity Check
6042 ------------------------------------------------------------------------*/
6043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6044 {
6045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6046 "WDI API call before module is initialized - Fail request");
6047
6048 return WDI_STATUS_E_NOT_ALLOWED;
6049 }
6050
6051 /*------------------------------------------------------------------------
6052 Fill in Event data and post to the Main FSM
6053 ------------------------------------------------------------------------*/
6054 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6055 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6056 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6057 wdiEventData.pCBfnc = NULL;
6058 wdiEventData.pUserData = NULL;
6059
6060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6061
6062}/*WDI_TrafficStatsInd*/
6063
Chet Lanctota96bb432013-03-18 10:26:30 -07006064#ifdef WLAN_FEATURE_11W
6065/**
6066 @brief WDI_ExcludeUnencryptedInd
6067 Register with HAL to receive/drop unencrypted frames
6068
6069 @param WDI_ExcludeUnencryptIndType
6070
6071 @see
6072
6073 @return Status of the request
6074*/
6075WDI_Status
6076WDI_ExcludeUnencryptedInd
6077(
6078 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6079)
6080{
6081
6082 WDI_EventInfoType wdiEventData;
6083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6084
6085 /*------------------------------------------------------------------------
6086 Sanity Check
6087 ------------------------------------------------------------------------*/
6088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6089 {
6090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6091 "WDI API call before module is initialized - Fail request");
6092
6093 return WDI_STATUS_E_NOT_ALLOWED;
6094 }
6095
6096 /*------------------------------------------------------------------------
6097 Fill in Event data and post to the Main FSM
6098 ------------------------------------------------------------------------*/
6099 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6100 wdiEventData.pEventData = pWdiExcUnencParams;
6101 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6102 wdiEventData.pCBfnc = NULL;
6103 wdiEventData.pUserData = NULL;
6104
6105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6106
6107}/*WDI_TrafficStatsInd*/
6108#endif
6109
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006110/**
Yue Ma365933a2013-08-14 15:59:08 -07006111 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6112
6113 @param addPeriodicTxPtrnParams: Add Pattern parameters
6114
6115 @see
6116
6117 @return Status of the request
6118*/
6119WDI_Status
6120WDI_AddPeriodicTxPtrnInd
6121(
6122 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6123)
6124{
6125 WDI_EventInfoType wdiEventData;
6126
6127 /*-------------------------------------------------------------------------
6128 Sanity Check
6129 ------------------------------------------------------------------------*/
6130 if (eWLAN_PAL_FALSE == gWDIInitialized)
6131 {
6132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6133 "WDI API call before module is initialized - Fail request!");
6134
6135 return WDI_STATUS_E_NOT_ALLOWED;
6136 }
6137
6138 /*-------------------------------------------------------------------------
6139 Fill in Event data and post to the Main FSM
6140 ------------------------------------------------------------------------*/
6141 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6142 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6143 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6144 wdiEventData.pCBfnc = NULL;
6145 wdiEventData.pUserData = NULL;
6146
6147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6148}
6149
6150/**
6151 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6152
6153 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6154
6155 @see
6156
6157 @return Status of the request
6158*/
6159WDI_Status
6160WDI_DelPeriodicTxPtrnInd
6161(
6162 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6163)
6164{
6165 WDI_EventInfoType wdiEventData;
6166
6167 /*-------------------------------------------------------------------------
6168 Sanity Check
6169 ------------------------------------------------------------------------*/
6170 if (eWLAN_PAL_FALSE == gWDIInitialized)
6171 {
6172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6173 "WDI API call before module is initialized - Fail request!");
6174
6175 return WDI_STATUS_E_NOT_ALLOWED;
6176 }
6177
6178 /*-------------------------------------------------------------------------
6179 Fill in Event data and post to the Main FSM
6180 ------------------------------------------------------------------------*/
6181 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6182 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6183 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6184 wdiEventData.pCBfnc = NULL;
6185 wdiEventData.pUserData = NULL;
6186
6187 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6188}
6189
6190/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 @brief WDI_HALDumpCmdReq
6192 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006193
6194 @param halDumpCmdReqParams: Hal Dump Command Body
6195 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006197
Jeff Johnson295189b2012-06-20 16:38:30 -07006198 @see
6199 @return Result of the function call
6200*/
6201WDI_Status WDI_HALDumpCmdReq
6202(
6203 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6204 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6205 void *pUserData
6206)
6207{
6208 WDI_EventInfoType wdiEventData;
6209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6210
6211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 ------------------------------------------------------------------------*/
6214 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6215 {
6216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6217 "WDI API call before module is initialized - Fail request");
6218
Jeff Johnsone7245742012-09-05 17:12:55 -07006219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006220 }
6221
6222 /*------------------------------------------------------------------------
6223 Fill in Event data and post to the Main FSM
6224 ------------------------------------------------------------------------*/
6225 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6226 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6227 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6228 wdiEventData.pCBfnc = halDumpCmdRspCb;
6229 wdiEventData.pUserData = pUserData;
6230
6231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6232}
6233
Jeff Johnsone7245742012-09-05 17:12:55 -07006234/*============================================================================
6235
Jeff Johnson295189b2012-06-20 16:38:30 -07006236 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006237
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 ============================================================================*/
6239
6240/**
6241 @brief Main FSM Start function for all states except BUSY
6242
Jeff Johnsone7245742012-09-05 17:12:55 -07006243
6244 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 wdiEV: event posted to the main DAL FSM
6246 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006247 structure
6248
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 @see
6250 @return Result of the function call
6251*/
6252WDI_Status
6253WDI_PostMainEvent
6254(
Jeff Johnsone7245742012-09-05 17:12:55 -07006255 WDI_ControlBlockType* pWDICtx,
6256 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006258
Jeff Johnson295189b2012-06-20 16:38:30 -07006259)
6260{
Jeff Johnsone7245742012-09-05 17:12:55 -07006261 WDI_Status wdiStatus;
6262 WDI_MainFuncType pfnWDIMainEvHdlr;
6263 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6265
6266 /*-------------------------------------------------------------------------
6267 Sanity check
6268 -------------------------------------------------------------------------*/
6269 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6270 ( wdiEV >= WDI_MAX_EVENT ))
6271 {
6272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6273 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6274 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 }
6277
6278 /*Access to the global state must be locked */
6279 wpalMutexAcquire(&pWDICtx->wptMutex);
6280
6281 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006282 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006283
6284 wdiOldState = pWDICtx->uGlobalState;
6285
6286 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6288 response comes from CCPU for the request sent by host:
6289 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 -07006290 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 -07006291 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 CCPU:
6293 don't change the state */
6294 if ( WDI_RESPONSE_EVENT != wdiEV)
6295 {
6296 /*Transition to BUSY State - the request is now being processed by the FSM,
6297 if the request fails we shall transition back to the old state, if not
6298 the request will manage its own state transition*/
6299 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6300 }
6301 /* If the state function associated with the EV is NULL it means that this
6302 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006303 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 {
6305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 }
6310 else
6311 {
6312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006313 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006315 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006316 }
6317
6318 /* If a request handles itself well it will end up in a success or in a
6319 pending
6320 Success - means that the request was processed and the proper state
6321 transition already occurred or will occur when the resp is received
6322 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006323
Jeff Johnson295189b2012-06-20 16:38:30 -07006324 Pending - means the request could not be processed at this moment in time
6325 because the FSM was already busy so no state transition or dequeueing
6326 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006327
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 Success for synchronous case means that the transition may occur and
6329 processing of pending requests may continue - so it should go through
6330 and restores the state and continue processing queued requests*/
6331 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6332 ( WDI_STATUS_PENDING != wdiStatus ))
6333 {
6334 if ( WDI_RESPONSE_EVENT != wdiEV)
6335 {
6336 /*The request has failed or could not be processed - transition back to
6337 the old state - check to see if anything was queued and try to execute
6338 The dequeue logic should post a message to a thread and return - no
6339 actual processing can occur */
6340 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6341 }
6342 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006343
Jeff Johnson295189b2012-06-20 16:38:30 -07006344 }
6345
6346 /* we have completed processing the event */
6347 wpalMutexRelease(&pWDICtx->wptMutex);
6348
Jeff Johnsone7245742012-09-05 17:12:55 -07006349 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006350
6351}/*WDI_PostMainEvent*/
6352
6353
6354/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006356--------------------------------------------------------------------------*/
6357/**
6358 @brief Main FSM Start function for all states except BUSY
6359
Jeff Johnsone7245742012-09-05 17:12:55 -07006360
6361 @param pWDICtx: pointer to the WLAN DAL context
6362 pEventData: pointer to the event information structure
6363
Jeff Johnson295189b2012-06-20 16:38:30 -07006364 @see
6365 @return Result of the function call
6366*/
6367WDI_Status
6368WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006369(
Jeff Johnson295189b2012-06-20 16:38:30 -07006370 WDI_ControlBlockType* pWDICtx,
6371 WDI_EventInfoType* pEventData
6372)
6373{
6374
6375 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 ----------------------------------------------------------------------*/
6378 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6379 {
6380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006381 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006382 pWDICtx, pEventData);
6383 return WDI_STATUS_E_FAILURE;
6384 }
6385
6386 wpalMutexAcquire(&pWDICtx->wptMutex);
6387
6388 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 ----------------------------------------------------------------------*/
6391 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6392 {
6393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6394 "Control Transport not yet Open - queueing the request");
6395
6396 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006398
6399 wpalMutexRelease(&pWDICtx->wptMutex);
6400 return WDI_STATUS_PENDING;
6401 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006402
Jeff Johnson295189b2012-06-20 16:38:30 -07006403 wpalMutexRelease(&pWDICtx->wptMutex);
6404
6405 /*Return Success*/
6406 return WDI_ProcessRequest( pWDICtx, pEventData );
6407
6408}/*WDI_MainStart*/
6409
6410/**
6411 @brief Main FSM Response function for state INIT
6412
Jeff Johnsone7245742012-09-05 17:12:55 -07006413
6414 @param pWDICtx: pointer to the WLAN DAL context
6415 pEventData: pointer to the event information structure
6416
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 @see
6418 @return Result of the function call
6419*/
6420WDI_Status
6421WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006422(
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 WDI_ControlBlockType* pWDICtx,
6424 WDI_EventInfoType* pEventData
6425)
6426{
6427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006428 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006431
6432 /*Return Success*/
6433 return WDI_STATUS_E_NOT_ALLOWED;
6434}/* WDI_MainRspInit */
6435
6436/**
6437 @brief Main FSM Close function for all states except BUSY
6438
Jeff Johnsone7245742012-09-05 17:12:55 -07006439
6440 @param pWDICtx: pointer to the WLAN DAL context
6441 pEventData: pointer to the event information structure
6442
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 @see
6444 @return Result of the function call
6445*/
6446WDI_Status
6447WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006448(
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 WDI_ControlBlockType* pWDICtx,
6450 WDI_EventInfoType* pEventData
6451)
6452{
6453
6454 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 ----------------------------------------------------------------------*/
6457 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6458 {
6459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006460 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 pWDICtx, pEventData);
6462 return WDI_STATUS_E_FAILURE;
6463 }
6464
6465 /*Return Success*/
6466 return WDI_ProcessRequest( pWDICtx, pEventData );
6467
6468}/*WDI_MainClose*/
6469/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006471--------------------------------------------------------------------------*/
6472/**
6473 @brief Main FSM Start function for state STARTED
6474
Jeff Johnsone7245742012-09-05 17:12:55 -07006475
6476 @param pWDICtx: pointer to the WLAN DAL context
6477 pEventData: pointer to the event information structure
6478
Jeff Johnson295189b2012-06-20 16:38:30 -07006479 @see
6480 @return Result of the function call
6481*/
6482WDI_Status
6483WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006484(
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 WDI_ControlBlockType* pWDICtx,
6486 WDI_EventInfoType* pEventData
6487)
6488{
6489 WDI_StartRspCb wdiStartRspCb = NULL;
6490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6491
6492 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 ----------------------------------------------------------------------*/
6495 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6496 {
6497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006498 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006499 pWDICtx, pEventData);
6500 return WDI_STATUS_E_FAILURE;
6501 }
6502
6503 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 ----------------------------------------------------------------------*/
6506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006508
6509 wpalMutexAcquire(&pWDICtx->wptMutex);
6510
6511 /*Transition back to started because the post function transitioned us to
6512 busy*/
6513 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6514
6515 /*Check to see if any request is pending*/
6516 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006517
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 wpalMutexRelease(&pWDICtx->wptMutex);
6519
6520 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006521 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6522
Jeff Johnson295189b2012-06-20 16:38:30 -07006523 /*Notify UMAC*/
6524 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6525
6526 /*Return Success*/
6527 return WDI_STATUS_SUCCESS;
6528
6529}/*WDI_MainStartStarted*/
6530
6531/**
6532 @brief Main FSM Stop function for state STARTED
6533
Jeff Johnsone7245742012-09-05 17:12:55 -07006534
6535 @param pWDICtx: pointer to the WLAN DAL context
6536 pEventData: pointer to the event information structure
6537
Jeff Johnson295189b2012-06-20 16:38:30 -07006538 @see
6539 @return Result of the function call
6540*/
6541WDI_Status
6542WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006543(
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 WDI_ControlBlockType* pWDICtx,
6545 WDI_EventInfoType* pEventData
6546)
6547{
6548 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006549 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 ----------------------------------------------------------------------*/
6551 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6552 {
6553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006554 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006555 pWDICtx, pEventData);
6556 return WDI_STATUS_E_FAILURE;
6557 }
6558
6559 /*State at this point is BUSY - because we enter this state before posting
6560 an event to the FSM in order to prevent potential race conditions*/
6561
6562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6563 "Processing stop request in FSM");
6564
6565 /*Return Success*/
6566 return WDI_ProcessRequest( pWDICtx, pEventData );
6567
6568}/*WDI_MainStopStarted*/
6569/**
6570 @brief Main FSM Request function for state started
6571
Jeff Johnsone7245742012-09-05 17:12:55 -07006572
6573 @param pWDICtx: pointer to the WLAN DAL context
6574 pEventData: pointer to the event information structure
6575
Jeff Johnson295189b2012-06-20 16:38:30 -07006576 @see
6577 @return Result of the function call
6578*/
6579WDI_Status
6580WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006581(
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 WDI_ControlBlockType* pWDICtx,
6583 WDI_EventInfoType* pEventData
6584)
6585{
6586
6587 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006588 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 ----------------------------------------------------------------------*/
6590 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6591 {
6592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006593 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 pWDICtx, pEventData);
6595 return WDI_STATUS_E_FAILURE;
6596 }
6597
6598 /*State at this point is BUSY - because we enter this state before posting
6599 an event to the FSM in order to prevent potential race conditions*/
6600
6601 /*Return Success*/
6602 return WDI_ProcessRequest( pWDICtx, pEventData );
6603
6604}/*WDI_MainReqStarted*/
6605
6606/**
6607 @brief Main FSM Response function for all states except INIT
6608
Jeff Johnsone7245742012-09-05 17:12:55 -07006609
6610 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 @see
6614 @return Result of the function call
6615*/
6616WDI_Status
6617WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006618(
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 WDI_ControlBlockType* pWDICtx,
6620 WDI_EventInfoType* pEventData
6621)
6622{
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006624 wpt_boolean expectedResponse;
6625
6626 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006627 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006628 ----------------------------------------------------------------------*/
6629 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6630 {
6631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006632 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 pWDICtx, pEventData);
6634 return WDI_STATUS_E_FAILURE;
6635 }
6636
6637 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6638 {
6639 /* we received an expected response */
6640 expectedResponse = eWLAN_PAL_TRUE;
6641
6642 /*We expect that we will transition to started after this processing*/
6643 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6644
6645 /* we are no longer expecting a response */
6646 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6647 }
6648 else
6649 {
6650 /* we received an indication or unexpected response */
6651 expectedResponse = eWLAN_PAL_FALSE;
6652 /* for indications no need to update state from what it is right
6653 now, unless it explicitly does it in the indication handler (say
6654 for device failure ind) */
6655 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6656 }
6657
6658 /*Process the response and indication */
6659 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6660
6661 /*Lock the CB as we are about to do a state transition*/
6662 wpalMutexAcquire(&pWDICtx->wptMutex);
6663
6664 /*Transition to the expected state after the response processing
6665 - this should always be started state with the following exceptions:
6666 1. processing of a failed start response
6667 2. device failure detected while processing response
6668 3. stop response received*/
6669 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006670
Jeff Johnson295189b2012-06-20 16:38:30 -07006671 /*Dequeue request that may have been queued while we were waiting for the
6672 response */
6673 if ( expectedResponse )
6674 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006675 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 }
6677
6678 wpalMutexRelease(&pWDICtx->wptMutex);
6679
6680 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006682
6683}/*WDI_MainRsp*/
6684
6685/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006687--------------------------------------------------------------------------*/
6688/**
6689 @brief Main FSM Stop function for state STOPPED
6690
Jeff Johnsone7245742012-09-05 17:12:55 -07006691
6692 @param pWDICtx: pointer to the WLAN DAL context
6693 pEventData: pointer to the event information structure
6694
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 @see
6696 @return Result of the function call
6697*/
6698WDI_Status
6699WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006700(
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 WDI_ControlBlockType* pWDICtx,
6702 WDI_EventInfoType* pEventData
6703)
6704{
6705 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 ----------------------------------------------------------------------*/
6708 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6709 {
6710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006711 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 pWDICtx, pEventData);
6713 return WDI_STATUS_E_FAILURE;
6714 }
6715
6716 /*We should normally not get a STOP request if we are already stopped
6717 since we should normally be stopped by the UMAC. However in some
6718 error situations we put ourselves in the stopped state without the
6719 UMAC knowing, so when we get a STOP request in this state we still
6720 process it since we need to clean up the underlying state */
6721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6722 "Processing stop request while stopped in FSM");
6723
6724 /*Return Success*/
6725 return WDI_ProcessRequest( pWDICtx, pEventData );
6726
6727}/*WDI_MainStopStopped*/
6728
6729/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006730 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006731--------------------------------------------------------------------------*/
6732/**
6733 @brief Main FSM Start function for state BUSY
6734
Jeff Johnsone7245742012-09-05 17:12:55 -07006735
6736 @param pWDICtx: pointer to the WLAN DAL context
6737 pEventData: pointer to the event information structure
6738
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 @see
6740 @return Result of the function call
6741*/
6742WDI_Status
6743WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006744(
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 WDI_ControlBlockType* pWDICtx,
6746 WDI_EventInfoType* pEventData
6747)
6748{
6749 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 ----------------------------------------------------------------------*/
6752 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6753 {
6754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006755 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 pWDICtx, pEventData);
6757 return WDI_STATUS_E_FAILURE;
6758 }
6759
6760 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006761 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 ----------------------------------------------------------------------*/
6763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6764 "WDI Busy state - queue start request");
6765
6766 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006768
6769 /*Return Success*/
6770 return WDI_STATUS_PENDING;
6771}/*WDI_MainStartBusy*/
6772
6773/**
6774 @brief Main FSM Stop function for state BUSY
6775
Jeff Johnsone7245742012-09-05 17:12:55 -07006776
6777 @param pWDICtx: pointer to the WLAN DAL context
6778 pEventData: pointer to the event information structure
6779
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 @see
6781 @return Result of the function call
6782*/
6783WDI_Status
6784WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006785(
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 WDI_ControlBlockType* pWDICtx,
6787 WDI_EventInfoType* pEventData
6788)
6789{
6790 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 ----------------------------------------------------------------------*/
6793 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6794 {
6795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006796 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006797 pWDICtx, pEventData);
6798 return WDI_STATUS_E_FAILURE;
6799 }
6800
6801 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006802 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 ----------------------------------------------------------------------*/
6804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6805 "WDI Busy state - queue stop request");
6806
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006809
Jeff Johnson295189b2012-06-20 16:38:30 -07006810}/*WDI_MainStopBusy*/
6811
6812/**
6813 @brief Main FSM Request function for state BUSY
6814
Jeff Johnsone7245742012-09-05 17:12:55 -07006815
6816 @param pWDICtx: pointer to the WLAN DAL context
6817 pEventData: pointer to the event information structure
6818
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 @see
6820 @return Result of the function call
6821*/
6822WDI_Status
6823WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006824(
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 WDI_ControlBlockType* pWDICtx,
6826 WDI_EventInfoType* pEventData
6827)
6828{
6829 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 ----------------------------------------------------------------------*/
6832 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6833 {
6834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006835 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 pWDICtx, pEventData);
6837 return WDI_STATUS_E_FAILURE;
6838 }
6839
6840 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006841 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 ----------------------------------------------------------------------*/
6843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6844 "WDI Busy state - queue request %d because waiting for response %d",
6845 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6846
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006849
Jeff Johnson295189b2012-06-20 16:38:30 -07006850}/*WDI_MainReqBusy*/
6851/**
6852 @brief Main FSM Close function for state BUSY
6853
Jeff Johnsone7245742012-09-05 17:12:55 -07006854
6855 @param pWDICtx: pointer to the WLAN DAL context
6856 pEventData: pointer to the event information structure
6857
Jeff Johnson295189b2012-06-20 16:38:30 -07006858 @see
6859 @return Result of the function call
6860*/
6861WDI_Status
6862WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006863(
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 WDI_ControlBlockType* pWDICtx,
6865 WDI_EventInfoType* pEventData
6866)
6867{
6868 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 ----------------------------------------------------------------------*/
6871 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6872 {
6873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006874 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 pWDICtx, pEventData);
6876 return WDI_STATUS_E_FAILURE;
6877 }
6878
6879 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 ----------------------------------------------------------------------*/
6882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6883 "WDI Busy state - queue close request");
6884
Jeff Johnsone7245742012-09-05 17:12:55 -07006885 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006887
Jeff Johnson295189b2012-06-20 16:38:30 -07006888}/*WDI_MainCloseBusy*/
6889
6890/**
6891 @brief Main FSM Shutdown function for INIT & STARTED states
6892
6893
6894 @param pWDICtx: pointer to the WLAN DAL context
6895 pEventData: pointer to the event information structure
6896
6897 @see
6898 @return Result of the function call
6899*/
6900WDI_Status
6901WDI_MainShutdown
6902(
6903 WDI_ControlBlockType* pWDICtx,
6904 WDI_EventInfoType* pEventData
6905)
6906{
6907 /*--------------------------------------------------------------------
6908 Sanity Check
6909 ----------------------------------------------------------------------*/
6910 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6911 {
6912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006913 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006914 pWDICtx, pEventData);
6915 return WDI_STATUS_E_FAILURE;
6916 }
6917
6918 /*State at this point is BUSY - because we enter this state before posting
6919 an event to the FSM in order to prevent potential race conditions*/
6920
6921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6922 "Processing shutdown request in FSM");
6923
6924 /*Return Success*/
6925 return WDI_ProcessRequest( pWDICtx, pEventData );
6926
6927}/*WDI_MainShutdown*/
6928
6929/**
6930 @brief Main FSM Shutdown function for BUSY state
6931
6932
6933 @param pWDICtx: pointer to the WLAN DAL context
6934 pEventData: pointer to the event information structure
6935
6936 @see
6937 @return Result of the function call
6938*/
6939WDI_Status
6940WDI_MainShutdownBusy
6941(
6942 WDI_ControlBlockType* pWDICtx,
6943 WDI_EventInfoType* pEventData
6944)
6945{
6946 /*--------------------------------------------------------------------
6947 Sanity Check
6948 ----------------------------------------------------------------------*/
6949 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6950 {
6951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006952 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 pWDICtx, pEventData);
6954 return WDI_STATUS_E_FAILURE;
6955 }
6956
6957 /* If you are waiting for a HAL response at this stage, you are not
6958 * going to get it. Riva is already shutdown/crashed.
6959 */
6960 wpalTimerStop(&gWDICb.wptResponseTimer);
6961
6962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6963 "Processing shutdown request in FSM: Busy state ");
6964
6965 return WDI_ProcessRequest( pWDICtx, pEventData );
6966
6967}/*WDI_MainShutdownBusy*/
6968
6969
Jeff Johnsone7245742012-09-05 17:12:55 -07006970/*=======================================================================
6971
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006973
Jeff Johnson295189b2012-06-20 16:38:30 -07006974*=======================================================================*/
6975
6976/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006978========================================================================*/
6979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006982
6983 @param pWDICtx: pointer to the WLAN DAL context
6984 pEventData: pointer to the event information structure
6985
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 @see
6987 @return Result of the function call
6988*/
6989WDI_Status
6990WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006991(
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 WDI_ControlBlockType* pWDICtx,
6993 WDI_EventInfoType* pEventData
6994)
6995{
6996 WDI_StartReqParamsType* pwdiStartParams = NULL;
6997 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 wpt_uint16 usDataOffset = 0;
7000 wpt_uint16 usSendSize = 0;
7001
Jeff Johnsone7245742012-09-05 17:12:55 -07007002 tHalMacStartReqMsg halStartReq;
7003 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7005
7006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 -------------------------------------------------------------------------*/
7009 if (( NULL == pEventData ) ||
7010 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7011 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7012 {
7013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 }
7018
7019 /*-----------------------------------------------------------------------
7020 Get message buffer
7021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 pwdiStartParams->usConfigBufferLen;
7024
Jeff Johnsone7245742012-09-05 17:12:55 -07007025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007026 usLen,
7027 &pSendBuffer, &usDataOffset, &usSendSize))||
7028 ( usSendSize < (usDataOffset + usLen )))
7029 {
7030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007031 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 pEventData, pwdiStartParams, wdiStartRspCb);
7033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007035 }
7036
7037 /*-----------------------------------------------------------------------
7038 Fill in the message
7039 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 halStartReq.startReqParams.driverType =
7041 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007042
Jeff Johnsone7245742012-09-05 17:12:55 -07007043 halStartReq.startReqParams.uConfigBufferLen =
7044 pwdiStartParams->usConfigBufferLen;
7045 wpalMemoryCopy( pSendBuffer+usDataOffset,
7046 &halStartReq.startReqParams,
7047 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 usDataOffset += sizeof(halStartReq.startReqParams);
7050 wpalMemoryCopy( pSendBuffer+usDataOffset,
7051 pwdiStartParams->pConfigBuffer,
7052 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007053
7054 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007056
7057 /*Save Low Level Ind CB and associated user data - it will be used further
7058 on when an indication is coming from the lower MAC*/
7059 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007061
Jeff Johnsone7245742012-09-05 17:12:55 -07007062 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7068
Jeff Johnsone7245742012-09-05 17:12:55 -07007069
Jeff Johnson295189b2012-06-20 16:38:30 -07007070}/*WDI_ProcessStartReq*/
7071
7072/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007073 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007075
7076 @param pWDICtx: pointer to the WLAN DAL context
7077 pEventData: pointer to the event information structure
7078
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 @see
7080 @return Result of the function call
7081*/
7082WDI_Status
7083WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007084(
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 WDI_ControlBlockType* pWDICtx,
7086 WDI_EventInfoType* pEventData
7087)
7088{
7089 WDI_StopReqParamsType* pwdiStopParams = NULL;
7090 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007092 wpt_uint16 usDataOffset = 0;
7093 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007094 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007095 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7097
7098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 -------------------------------------------------------------------------*/
7101 if (( NULL == pEventData ) ||
7102 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7103 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7104 {
7105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007108 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 }
7110
7111 /*-----------------------------------------------------------------------
7112 Get message buffer
7113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 sizeof(halStopReq.stopReqParams),
7116 &pSendBuffer, &usDataOffset, &usSendSize))||
7117 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7118 {
7119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007120 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 pEventData, pwdiStopParams, wdiStopRspCb);
7122 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007123 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007124 }
7125
7126 /*-----------------------------------------------------------------------
7127 Fill in the message
7128 -----------------------------------------------------------------------*/
7129 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7130 pwdiStopParams->wdiStopReason);
7131
Jeff Johnsone7245742012-09-05 17:12:55 -07007132 wpalMemoryCopy( pSendBuffer+usDataOffset,
7133 &halStopReq.stopReqParams,
7134 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007135
7136 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007137 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007138
7139 /*! TO DO: stop the data services */
7140 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7141 {
7142 /*Stop the STA Table !UT- check this logic again
7143 It is safer to do it here than on the response - because a stop is imminent*/
7144 WDI_STATableStop(pWDICtx);
7145
7146 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007147 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7148 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 {
7150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7151 "WDI Init failed to reset power state event");
7152
Jeff Johnsone7245742012-09-05 17:12:55 -07007153 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007154 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007155 }
7156 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007157 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7158 if( eWLAN_PAL_STATUS_SUCCESS != status )
7159 {
7160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007161 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007162 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007163 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007164 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007165 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007166 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007168 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7169 WDI_SET_POWER_STATE_TIMEOUT);
7170 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 {
7172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7173 "WDI Init failed to wait on an event");
7174
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007176 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 }
7178 }
7179
7180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7185
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007186fail:
7187 // Release the message buffer so we don't leak
7188 wpalMemoryFree(pSendBuffer);
7189
7190failRequest:
7191 //WDA should have failure check to avoid the memory leak
7192 return WDI_STATUS_E_FAILURE;
7193
Jeff Johnson295189b2012-06-20 16:38:30 -07007194}/*WDI_ProcessStopReq*/
7195
7196/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007197 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007199
7200 @param pWDICtx: pointer to the WLAN DAL context
7201 pEventData: pointer to the event information structure
7202
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 @see
7204 @return Result of the function call
7205*/
7206WDI_Status
7207WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007208(
Jeff Johnson295189b2012-06-20 16:38:30 -07007209 WDI_ControlBlockType* pWDICtx,
7210 WDI_EventInfoType* pEventData
7211)
7212{
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7215
7216 /*Lock control block for cleanup*/
7217 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007218
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 /*Clear all pending request*/
7220 WDI_ClearPendingRequests(pWDICtx);
7221
7222 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007224
7225 /* Close Data transport*/
7226 /* FTM mode does not open Data Path */
7227 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7228 {
7229 WDTS_Close(pWDICtx);
7230 }
7231
7232 /*Close the STA Table !UT- check this logic again*/
7233 WDI_STATableClose(pWDICtx);
7234
7235 /*close the PAL */
7236 wptStatus = wpalClose(pWDICtx->pPALContext);
7237 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7238 {
7239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7240 "Failed to wpal Close %d", wptStatus);
7241 WDI_ASSERT(0);
7242 }
7243
7244 /*Transition back to init state*/
7245 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7246
7247 wpalMutexRelease(&pWDICtx->wptMutex);
7248
7249 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007250 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007251
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007253}/*WDI_ProcessCloseReq*/
7254
7255
7256/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007258===========================================================================*/
7259
7260/**
7261 @brief Process Init Scan Request function (called when Main FSM
7262 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007263
7264 @param pWDICtx: pointer to the WLAN DAL context
7265 pEventData: pointer to the event information structure
7266
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 @see
7268 @return Result of the function call
7269*/
7270WDI_Status
7271WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007272(
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 WDI_ControlBlockType* pWDICtx,
7274 WDI_EventInfoType* pEventData
7275)
7276{
7277 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7278 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 wpt_uint16 usDataOffset = 0;
7281 wpt_uint16 usSendSize = 0;
7282 wpt_uint8 i = 0;
7283
7284 tHalInitScanReqMsg halInitScanReqMsg;
7285
Jeff Johnsone7245742012-09-05 17:12:55 -07007286 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007287 * It shold be removed once host and riva changes are in sync*/
7288 tHalInitScanConReqMsg halInitScanConReqMsg;
7289
7290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7291
7292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 -------------------------------------------------------------------------*/
7295 if (( NULL == pEventData ) ||
7296 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7297 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7298 {
7299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 }
7304
7305#if 0
7306 wpalMutexAcquire(&pWDICtx->wptMutex);
7307 /*-----------------------------------------------------------------------
7308 Check to see if SCAN is already in progress - if so reject the req
7309 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 -----------------------------------------------------------------------*/
7312 if ( pWDICtx->bScanInProgress )
7313 {
7314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7315 "Scan is already in progress - subsequent scan is not allowed"
7316 " until the first scan completes");
7317
7318 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 }
7321
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7323 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007324
7325 wpalMutexRelease(&pWDICtx->wptMutex);
7326#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007327 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 * It shold be removed once host and riva changes are in sync*/
7331 /*-----------------------------------------------------------------------
7332 Get message buffer
7333 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 sizeof(halInitScanConReqMsg.initScanParams),
7336 &pSendBuffer, &usDataOffset, &usSendSize))||
7337 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7338 {
7339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007340 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7342 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 }
7345
7346
7347 /*-----------------------------------------------------------------------
7348 Fill in the message
7349 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007350 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7352
7353 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7354 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7355
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7362
7363 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7364 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7365
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7367 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007368
Jeff Johnsone7245742012-09-05 17:12:55 -07007369 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7371
7372 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7373 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007374 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7376 }
7377
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 wpalMemoryCopy( pSendBuffer+usDataOffset,
7379 &halInitScanConReqMsg.initScanParams,
7380 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 }
7382 else
7383 {
7384 /*-----------------------------------------------------------------------
7385 Get message buffer
7386 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007387 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007388 sizeof(halInitScanReqMsg.initScanParams),
7389 &pSendBuffer, &usDataOffset, &usSendSize))||
7390 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7391 {
7392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007393 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 }
7398
7399
7400 /*-----------------------------------------------------------------------
7401 Fill in the message
7402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7405
7406 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7407 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7408
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7415
7416 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7417 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7418
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7421
7422 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7423 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007424 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7426 }
7427
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 wpalMemoryCopy( pSendBuffer+usDataOffset,
7429 &halInitScanReqMsg.initScanParams,
7430 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 }
7432
7433 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007435
7436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007437 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7441
7442}/*WDI_ProcessInitScanReq*/
7443
7444/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007447
7448 @param pWDICtx: pointer to the WLAN DAL context
7449 pEventData: pointer to the event information structure
7450
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 @see
7452 @return Result of the function call
7453*/
7454WDI_Status
7455WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007456(
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 WDI_ControlBlockType* pWDICtx,
7458 WDI_EventInfoType* pEventData
7459)
7460{
7461 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7462 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 wpt_uint16 usDataOffset = 0;
7465 wpt_uint16 usSendSize = 0;
7466
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7469
7470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 -------------------------------------------------------------------------*/
7473 if (( NULL == pEventData ) ||
7474 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7475 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7476 {
7477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 }
7482
7483#if 0
7484 wpalMutexAcquire(&pWDICtx->wptMutex);
7485 /*-----------------------------------------------------------------------
7486 Check to see if SCAN is already in progress - start scan is only
7487 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7492 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7493 {
7494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7495 "Scan start not allowed in this state %d %d",
7496 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007497
Jeff Johnson295189b2012-06-20 16:38:30 -07007498 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 }
7501
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007503
7504 wpalMutexRelease(&pWDICtx->wptMutex);
7505#endif
7506
7507 /*-----------------------------------------------------------------------
7508 Get message buffer
7509 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 sizeof(halStartScanReqMsg.startScanParams),
7512 &pSendBuffer, &usDataOffset, &usSendSize))||
7513 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7514 {
7515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007516 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 }
7521
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007524 wpalMemoryCopy( pSendBuffer+usDataOffset,
7525 &halStartScanReqMsg.startScanParams,
7526 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007527
7528 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007530
7531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7536}/*WDI_ProcessStartScanReq*/
7537
7538
7539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007542
7543 @param pWDICtx: pointer to the WLAN DAL context
7544 pEventData: pointer to the event information structure
7545
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 @see
7547 @return Result of the function call
7548*/
7549WDI_Status
7550WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007551(
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 WDI_ControlBlockType* pWDICtx,
7553 WDI_EventInfoType* pEventData
7554)
7555{
7556 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7557 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 wpt_uint16 usDataOffset = 0;
7560 wpt_uint16 usSendSize = 0;
7561
Jeff Johnsone7245742012-09-05 17:12:55 -07007562 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7564
7565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 -------------------------------------------------------------------------*/
7568 if (( NULL == pEventData ) ||
7569 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7570 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7571 {
7572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 }
7577
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7579 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 * forwarded to HAL and result in hang*/
7581#if 0
7582 wpalMutexAcquire(&pWDICtx->wptMutex);
7583 /*-----------------------------------------------------------------------
7584 Check to see if SCAN is already in progress - end scan is only
7585 allowed when a scan is ongoing and the state of the scan procedure
7586 is started
7587 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7590 {
7591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7592 "End start not allowed in this state %d %d",
7593 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007594
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 }
7598
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007600
7601 wpalMutexRelease(&pWDICtx->wptMutex);
7602#endif
7603
7604 /*-----------------------------------------------------------------------
7605 Get message buffer
7606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 sizeof(halEndScanReqMsg.endScanParams),
7609 &pSendBuffer, &usDataOffset, &usSendSize))||
7610 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7611 {
7612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007613 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 }
7618
7619 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7620
Jeff Johnsone7245742012-09-05 17:12:55 -07007621 wpalMemoryCopy( pSendBuffer+usDataOffset,
7622 &halEndScanReqMsg.endScanParams,
7623 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007624
7625 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007627
7628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7633}/*WDI_ProcessEndScanReq*/
7634
7635
7636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007639
7640 @param pWDICtx: pointer to the WLAN DAL context
7641 pEventData: pointer to the event information structure
7642
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 @see
7644 @return Result of the function call
7645*/
7646WDI_Status
7647WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007648(
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 WDI_ControlBlockType* pWDICtx,
7650 WDI_EventInfoType* pEventData
7651)
7652{
7653 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7654 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 wpt_uint16 usDataOffset = 0;
7657 wpt_uint16 usSendSize = 0;
7658 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007659 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7662
7663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 -------------------------------------------------------------------------*/
7666 if (( NULL == pEventData ) ||
7667 ( NULL == pEventData->pEventData) ||
7668 ( NULL == pEventData->pCBfnc))
7669 {
7670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 }
7675
7676 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7677 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7679 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 * forwarded to HAL and result in hang*/
7681#if 0
7682 wpalMutexAcquire(&pWDICtx->wptMutex);
7683 /*-----------------------------------------------------------------------
7684 Check to see if SCAN is already in progress
7685 Finish scan gets invoked any scan states. ie. abort scan
7686 It should be allowed in any states.
7687 -----------------------------------------------------------------------*/
7688 if ( !pWDICtx->bScanInProgress )
7689 {
7690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7691 "Finish start not allowed in this state %d",
7692 pWDICtx->bScanInProgress );
7693
7694 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 }
7697
7698 /*-----------------------------------------------------------------------
7699 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7703 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 wpalMutexRelease(&pWDICtx->wptMutex);
7705#endif
7706
7707 if ( pWDICtx->bInBmps )
7708 {
7709 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007710 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7711 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7712 {
7713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007714 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007715 WDI_ASSERT(0);
7716 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 }
7718
7719 /*-----------------------------------------------------------------------
7720 Get message buffer
7721 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 sizeof(halFinishScanReqMsg.finishScanParams),
7724 &pSendBuffer, &usDataOffset, &usSendSize))||
7725 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7726 {
7727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007728 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 }
7733
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7736
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7739
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7742
7743 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7744 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7745
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7752
Jeff Johnsone7245742012-09-05 17:12:55 -07007753 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7755
7756 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7757 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7760 }
7761
7762 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7763 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7764
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 wpalMemoryCopy( pSendBuffer+usDataOffset,
7766 &halFinishScanReqMsg.finishScanParams,
7767 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007768
7769 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007771
7772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7777}/*WDI_ProcessFinishScanReq*/
7778
7779
7780/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007782==========================================================================*/
7783/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 @brief Process BSS Join for a given Session
7785
7786 @param pWDICtx: pointer to the WLAN DAL context
7787 pEventData: pointer to the event information structure
7788
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 @see
7790 @return Result of the function call
7791*/
7792WDI_Status
7793WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007794(
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 WDI_ControlBlockType* pWDICtx,
7796 WDI_JoinReqParamsType* pwdiJoinParams,
7797 WDI_JoinRspCb wdiJoinRspCb,
7798 void* pUserData
7799)
7800{
7801 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 wpt_uint16 usDataOffset = 0;
7804 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007806
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7809
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007810 wpalMutexAcquire(&pWDICtx->wptMutex);
7811
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 /*------------------------------------------------------------------------
7813 Check to see if we have any session with this BSSID already stored, we
7814 should not
7815 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7817 pwdiJoinParams->wdiReqInfo.macBSSID,
7818 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007819
7820 if ( NULL != pBSSSes )
7821 {
7822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007823 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7824 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007825
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007826 /*reset the bAssociationInProgress otherwise the next
7827 *join request will be queued*/
7828 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7829 wpalMutexRelease(&pWDICtx->wptMutex);
7830 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 }
7832
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007836 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 if ( NULL == pBSSSes )
7838 {
7839
7840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7841 "DAL has no free sessions - cannot run another join");
7842
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007843 /*reset the bAssociationInProgress otherwise the next
7844 *join request will be queued*/
7845 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 }
7849
7850 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7852 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 WDI_MAC_ADDR_LEN);
7854
7855 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007858
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 wpalMutexRelease(&pWDICtx->wptMutex);
7860
7861 /*-----------------------------------------------------------------------
7862 Get message buffer
7863 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 sizeof(halJoinReqMsg.joinReqParams),
7866 &pSendBuffer, &usDataOffset, &usSendSize))||
7867 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7868 {
7869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007870 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 pUserData, pwdiJoinParams, wdiJoinRspCb);
7872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 }
7875
7876 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007877 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007878
7879 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 pwdiJoinParams->wdiReqInfo.macSTASelf,
7881 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007882
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7885
7886 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7887
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007888#ifdef WLAN_FEATURE_VOWIFI
7889 halJoinReqMsg.joinReqParams.maxTxPower =
7890 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7891#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7894#endif
7895
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7898 wdiSecondaryChannelOffset);
7899
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 wpalMemoryCopy( pSendBuffer+usDataOffset,
7901 &halJoinReqMsg.joinReqParams,
7902 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007903
7904 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007906
7907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7911 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007912
7913}/*WDI_ProcessBSSSessionJoinReq*/
7914
7915/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007918
7919 @param pWDICtx: pointer to the WLAN DAL context
7920 pEventData: pointer to the event information structure
7921
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 @see
7923 @return Result of the function call
7924*/
7925WDI_Status
7926WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007927(
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 WDI_ControlBlockType* pWDICtx,
7929 WDI_EventInfoType* pEventData
7930)
7931{
7932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7933 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7934 WDI_JoinRspCb wdiJoinRspCb = NULL;
7935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7936
7937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 -------------------------------------------------------------------------*/
7940 if (( NULL == pEventData ) ||
7941 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7942 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7943 {
7944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007949
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 /*-------------------------------------------------------------------------
7951 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 -------------------------------------------------------------------------*/
7954 wpalMutexAcquire(&pWDICtx->wptMutex);
7955
7956 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7957 {
7958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7959 "Association is currently in progress, queueing new join req");
7960
7961 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 pwdiJoinParams->wdiReqInfo.macBSSID);
7964
7965 wpalMutexRelease(&pWDICtx->wptMutex);
7966
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 }
7969
7970 /*Starting a new association */
7971 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7972 wpalMutexRelease(&pWDICtx->wptMutex);
7973
7974 /*Process the Join Request*/
7975 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7976 wdiJoinRspCb,pEventData->pUserData);
7977
7978}/*WDI_ProcessJoinReq*/
7979
7980
7981/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007984
7985 @param pWDICtx: pointer to the WLAN DAL context
7986 pEventData: pointer to the event information structure
7987
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 @see
7989 @return Result of the function call
7990*/
7991WDI_Status
7992WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007993(
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 WDI_ControlBlockType* pWDICtx,
7995 WDI_EventInfoType* pEventData
7996)
7997{
7998 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7999 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008002 wpt_uint16 uMsgSize = 0;
8003 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 wpt_uint16 usDataOffset = 0;
8005 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008007
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8010
8011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 -------------------------------------------------------------------------*/
8014 if (( NULL == pEventData ) ||
8015 ( NULL == pEventData->pEventData ) ||
8016 ( NULL == pEventData->pCBfnc ))
8017 {
8018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
8023
8024 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8025 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8026 /*-------------------------------------------------------------------------
8027 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 -------------------------------------------------------------------------*/
8030 wpalMutexAcquire(&pWDICtx->wptMutex);
8031
8032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8036 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8037 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008038
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 {
8041#ifdef WLAN_FEATURE_VOWIFI_11R
8042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 if ( NULL == pBSSSes )
8047 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008048
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8050 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008051
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008055
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8058 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008060
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8064#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 * Request in case of IBSS*/
8067 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8068 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8069 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8070 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8071 {
8072 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 if ( NULL == pBSSSes )
8077 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008078
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8080 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008081
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008085
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8088 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008090
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8094 }
8095 else
8096 {
8097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8099 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8100 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8101
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 /* for IBSS testing */
8103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 }
8106#endif
8107 }
8108
8109 /*------------------------------------------------------------------------
8110 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 ------------------------------------------------------------------------*/
8113 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8114 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8116 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8117 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8118 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008119
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008121
8122 wpalMutexRelease(&pWDICtx->wptMutex);
8123
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 }
8126
8127 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8129 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 sizeof(pWDICtx->wdiCachedConfigBssReq));
8131
8132 wpalMutexRelease(&pWDICtx->wptMutex);
8133
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8135#ifdef WLAN_FEATURE_11AC
8136 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008137 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 else
8139#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008140 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008141
8142 /*-----------------------------------------------------------------------
8143 Get message buffer
8144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8147 ( usSendSize < (usDataOffset + uMsgSize )))
8148 {
8149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008150 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 }
8155
8156 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008157#ifdef WLAN_FEATURE_11AC
8158 if (WDI_getFwWlanFeatCaps(DOT11AC))
8159 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8160 &pwdiConfigBSSParams->wdiReqInfo);
8161 else
8162#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 &pwdiConfigBSSParams->wdiReqInfo);
8165
8166 /* Need to fill in the STA Index to invalid, since at this point we have not
8167 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169
8170 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8172
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008173#ifdef WLAN_FEATURE_11AC
8174 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8175 wpalMemoryCopy( pSendBuffer+usDataOffset,
8176 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8177 uMsgSize);
8178 }else
8179#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008180 {
8181 if ( uMsgSize <= sizeof(tConfigBssParams) )
8182 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008183 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008184 &halConfigBssReqMsg.uBssParams.configBssParams,
8185 uMsgSize);
8186 }
8187 else
8188 {
8189 return WDI_STATUS_E_FAILURE;
8190 }
8191 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008192
8193 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008195
8196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8200 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 WDI_CONFIG_BSS_RESP);
8202
8203}/*WDI_ProcessConfigBSSReq*/
8204
8205
8206/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008209
8210 @param pWDICtx: pointer to the WLAN DAL context
8211 pEventData: pointer to the event information structure
8212
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 @see
8214 @return Result of the function call
8215*/
8216WDI_Status
8217WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008218(
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 WDI_ControlBlockType* pWDICtx,
8220 WDI_EventInfoType* pEventData
8221)
8222{
8223 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8224 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 wpt_uint16 usDataOffset = 0;
8229 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8234
8235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 -------------------------------------------------------------------------*/
8238 if (( NULL == pEventData ) ||
8239 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8240 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8241 {
8242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 }
8247
8248 /*-------------------------------------------------------------------------
8249 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 -------------------------------------------------------------------------*/
8252 wpalMutexAcquire(&pWDICtx->wptMutex);
8253
8254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8258 pwdiDelBSSParams->ucBssIdx,
8259 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008260
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 {
8263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 "%s: BSS does not yet exist. ucBssIdx %d",
8265 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008266
8267 wpalMutexRelease(&pWDICtx->wptMutex);
8268
8269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008271
8272 /*------------------------------------------------------------------------
8273 Check if this BSS is being currently processed or queued,
8274 if queued - queue the new request as well
8275 ------------------------------------------------------------------------*/
8276 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8279 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8280 __func__, pwdiDelBSSParams->ucBssIdx);
8281
8282 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8283
8284 wpalMutexRelease(&pWDICtx->wptMutex);
8285
8286 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008288
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 /*-----------------------------------------------------------------------
8290 If we receive a Del BSS request for an association that is already in
8291 progress, it indicates that the assoc has failed => we no longer have
8292 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 -----------------------------------------------------------------------*/
8295 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8296 {
8297 /*We can switch to false here because even if a subsequent Join comes in
8298 it will only be processed when DAL transitions out of BUSY state which
8299 happens when the Del BSS request comes */
8300 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8301
8302 /*Former association is complete - prepare next pending assoc for
8303 processing */
8304 WDI_DequeueAssocRequest(pWDICtx);
8305 }
8306
8307 wpalMutexRelease(&pWDICtx->wptMutex);
8308 /*-----------------------------------------------------------------------
8309 Get message buffer
8310 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 sizeof(halBssReqMsg.deleteBssParams),
8313 &pSendBuffer, &usDataOffset, &usSendSize))||
8314 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8315 {
8316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008317 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008321 }
8322
8323 /*Fill in the message request structure*/
8324
8325 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008326 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 wpalMemoryCopy( pSendBuffer+usDataOffset,
8329 &halBssReqMsg.deleteBssParams,
8330 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
8332 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008334
Jeff Johnsone7245742012-09-05 17:12:55 -07008335
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8341
Jeff Johnsone7245742012-09-05 17:12:55 -07008342
Jeff Johnson295189b2012-06-20 16:38:30 -07008343}/*WDI_ProcessDelBSSReq*/
8344
8345/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008348
8349 @param pWDICtx: pointer to the WLAN DAL context
8350 pEventData: pointer to the event information structure
8351
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 @see
8353 @return Result of the function call
8354*/
8355WDI_Status
8356WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008357(
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 WDI_ControlBlockType* pWDICtx,
8359 WDI_EventInfoType* pEventData
8360)
8361{
8362 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8363 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 wpt_uint16 usDataOffset = 0;
8368 wpt_uint16 usSendSize = 0;
8369 wpt_uint16 uMsgSize = 0;
8370 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008372
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8375
8376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 -------------------------------------------------------------------------*/
8379 if (( NULL == pEventData ) ||
8380 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8381 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8382 {
8383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 }
8388
8389 /*-------------------------------------------------------------------------
8390 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 -------------------------------------------------------------------------*/
8393 wpalMutexAcquire(&pWDICtx->wptMutex);
8394
8395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8399 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8400 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008401
8402 if ( NULL == pBSSSes )
8403 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8405 "%s: Association sequence for this BSS does not yet exist - "
8406 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8407 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008408
8409 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 }
8412
8413 /*------------------------------------------------------------------------
8414 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 ------------------------------------------------------------------------*/
8417 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8418 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8420 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8421 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008422
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008424
8425 wpalMutexRelease(&pWDICtx->wptMutex);
8426
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 }
8429
8430 /*-----------------------------------------------------------------------
8431 If Post Assoc was not yet received - the current association must
8432 be in progress
8433 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8436 {
8437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8438 "Association sequence for this BSS association no longer in "
8439 "progress - not allowed");
8440
8441 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 }
8444
8445 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 -----------------------------------------------------------------------*/
8448 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8449 {
8450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8451 "Post Assoc not allowed before JOIN - failing request");
8452
8453 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 }
8456
8457 wpalMutexRelease(&pWDICtx->wptMutex);
8458
8459 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8460 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8461 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8466 ( usSendSize < (usDataOffset + uMsgSize )))
8467 {
8468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008469 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 }
8474
8475 /*Copy the STA parameters */
8476 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8477 &pwdiPostAssocParams->wdiSTAParams );
8478
8479 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 WDI_STATableFindStaidByAddr(pWDICtx,
8482 pwdiPostAssocParams->wdiSTAParams.macSTA,
8483 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8484 {
8485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008486 MAC_ADDRESS_STR
8487 ": This station does not exist in the WDI Station Table",
8488 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008490 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 }
8493
8494 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 pBSSSes->ucBSSIdx;
8497
8498 /*Copy the BSS parameters */
8499 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8500 &pwdiPostAssocParams->wdiBSSParams);
8501
8502 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 WDI_STATableFindStaidByAddr(pWDICtx,
8505 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 {
8508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008509 MAC_ADDRESS_STR
8510 ": This station does not exist in the WDI Station Table",
8511 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008513 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008515 }
8516
8517 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 pBSSSes->ucBSSIdx;
8520
Jeff Johnsone7245742012-09-05 17:12:55 -07008521
8522 wpalMemoryCopy( pSendBuffer+usDataOffset,
8523 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8524 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
8526 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8527
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8529 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8530 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008531
Jeff Johnsone7245742012-09-05 17:12:55 -07008532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536
8537 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008540
8541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547
Jeff Johnson295189b2012-06-20 16:38:30 -07008548}/*WDI_ProcessPostAssocReq*/
8549
8550/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008553
8554 @param pWDICtx: pointer to the WLAN DAL context
8555 pEventData: pointer to the event information structure
8556
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 @see
8558 @return Result of the function call
8559*/
8560WDI_Status
8561WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008562(
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 WDI_ControlBlockType* pWDICtx,
8564 WDI_EventInfoType* pEventData
8565)
8566{
8567 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8568 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 wpt_uint16 usDataOffset = 0;
8573 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8576
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8579
8580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 -------------------------------------------------------------------------*/
8583 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8584 ( NULL == pEventData->pCBfnc ))
8585 {
8586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 }
8591
8592 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8593 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8594 /*-------------------------------------------------------------------------
8595 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 -------------------------------------------------------------------------*/
8598 wpalMutexAcquire(&pWDICtx->wptMutex);
8599
8600 /*------------------------------------------------------------------------
8601 Find the BSS for which the request is made and identify WDI session
8602 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8604 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 &macBSSID))
8606 {
8607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008608 "This station does not exist in the WDI Station Table %d",
8609 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 }
8613
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8615 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8618 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8619 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008620
8621 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 }
8624
8625 /*------------------------------------------------------------------------
8626 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 ------------------------------------------------------------------------*/
8629 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8630 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8632 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8633 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008634
Jeff Johnsone7245742012-09-05 17:12:55 -07008635 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 }
8639
8640 wpalMutexRelease(&pWDICtx->wptMutex);
8641 /*-----------------------------------------------------------------------
8642 Get message buffer
8643 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 sizeof(halDelStaReqMsg.delStaParams),
8646 &pSendBuffer, &usDataOffset, &usSendSize))||
8647 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8648 {
8649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008650 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 }
8655
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8657 wpalMemoryCopy( pSendBuffer+usDataOffset,
8658 &halDelStaReqMsg.delStaParams,
8659 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008660
8661 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008663
8664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8669
8670}/*WDI_ProcessDelSTAReq*/
8671
8672
8673/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008675==========================================================================*/
8676/**
8677 @brief Process Set BSS Key Request function (called when Main FSM
8678 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008679
8680 @param pWDICtx: pointer to the WLAN DAL context
8681 pEventData: pointer to the event information structure
8682
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 @see
8684 @return Result of the function call
8685*/
8686WDI_Status
8687WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008688(
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 WDI_ControlBlockType* pWDICtx,
8690 WDI_EventInfoType* pEventData
8691)
8692{
8693 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8694 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 wpt_uint16 usDataOffset = 0;
8699 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8702 wpt_uint8 keyIndex = 0;
8703
8704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8705
8706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 -------------------------------------------------------------------------*/
8709 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8710 ( NULL == pEventData->pCBfnc ))
8711 {
8712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 }
8717
8718 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8719 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8720 /*-------------------------------------------------------------------------
8721 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 -------------------------------------------------------------------------*/
8724 wpalMutexAcquire(&pWDICtx->wptMutex);
8725
8726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8730 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8731 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008732
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 {
8735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8737 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008738
8739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 }
8742
8743 /*------------------------------------------------------------------------
8744 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 ------------------------------------------------------------------------*/
8747 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8748 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8750 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8751 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008752
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
8757
8758
8759 wpalMutexRelease(&pWDICtx->wptMutex);
8760 /*-----------------------------------------------------------------------
8761 Get message buffer
8762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8765 &pSendBuffer, &usDataOffset, &usSendSize))||
8766 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8767 {
8768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008769 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 }
8774
8775 /*-----------------------------------------------------------------------
8776 Copy the Key parameters into the HAL message
8777 -----------------------------------------------------------------------*/
8778
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008780
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8783
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8786
8787 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8788 keyIndex++)
8789 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8792 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8793 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8794 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8795 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8796 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8803 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 WDI_MAX_KEY_LENGTH);
8806 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008807
8808 wpalMemoryCopy( pSendBuffer+usDataOffset,
8809 &halSetBssKeyReqMsg.setBssKeyParams,
8810 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
8812 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008814
8815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8819 wdiSetBSSKeyRspCb, pEventData->pUserData,
8820 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
8822}/*WDI_ProcessSetBssKeyReq*/
8823
8824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008825 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008827
8828 @param pWDICtx: pointer to the WLAN DAL context
8829 pEventData: pointer to the event information structure
8830
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 @see
8832 @return Result of the function call
8833*/
8834WDI_Status
8835WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008836(
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 WDI_ControlBlockType* pWDICtx,
8838 WDI_EventInfoType* pEventData
8839)
8840{
8841 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8842 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 wpt_uint16 usDataOffset = 0;
8847 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008848 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8851
8852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 -------------------------------------------------------------------------*/
8855 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8856 ( NULL == pEventData->pCBfnc ))
8857 {
8858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 }
8863
8864 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8865 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8866 /*-------------------------------------------------------------------------
8867 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 -------------------------------------------------------------------------*/
8870 wpalMutexAcquire(&pWDICtx->wptMutex);
8871
8872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8876 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8877 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008878
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 {
8881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8883 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008884
8885 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 }
8888
8889 /*------------------------------------------------------------------------
8890 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 ------------------------------------------------------------------------*/
8893 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8894 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8896 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8897 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008898
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 }
8903
8904
8905 wpalMutexRelease(&pWDICtx->wptMutex);
8906
8907 /*-----------------------------------------------------------------------
8908 Get message buffer
8909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8912 &pSendBuffer, &usDataOffset, &usSendSize))||
8913 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8914 {
8915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008916 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 }
8921 /*-----------------------------------------------------------------------
8922 Copy the Key parameters into the HAL message
8923 -----------------------------------------------------------------------*/
8924 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8925
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8928
8929 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8930
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8933
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 wpalMemoryCopy( pSendBuffer+usDataOffset,
8935 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8936 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008937
8938 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008940
8941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008947}/*WDI_ProcessRemoveBssKeyReq*/
8948
8949/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008952
8953 @param pWDICtx: pointer to the WLAN DAL context
8954 pEventData: pointer to the event information structure
8955
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 @see
8957 @return Result of the function call
8958*/
8959WDI_Status
8960WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008961(
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 WDI_ControlBlockType* pWDICtx,
8963 WDI_EventInfoType* pEventData
8964)
8965{
8966 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8967 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8968 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 wpt_uint16 usDataOffset = 0;
8971 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8976 wpt_uint8 keyIndex = 0;
8977
8978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8979
8980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 -------------------------------------------------------------------------*/
8983 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8984 ( NULL == pEventData->pCBfnc ))
8985 {
8986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 }
8991
8992 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8993 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8994 /*-------------------------------------------------------------------------
8995 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 -------------------------------------------------------------------------*/
8998 wpalMutexAcquire(&pWDICtx->wptMutex);
8999
9000 /*------------------------------------------------------------------------
9001 Find the BSS for which the request is made and identify WDI session
9002 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9004 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 &macBSSID))
9006 {
9007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009008 "This station does not exist in the WDI Station Table %d",
9009 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 }
9013
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9015 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9018 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9019 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009020
9021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009024
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 /*------------------------------------------------------------------------
9026 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 ------------------------------------------------------------------------*/
9029 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9030 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9032 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9033 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009034
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 }
9039
9040
9041 wpalMutexRelease(&pWDICtx->wptMutex);
9042 /*-----------------------------------------------------------------------
9043 Get message buffer
9044 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9047 &pSendBuffer, &usDataOffset, &usSendSize))||
9048 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9049 {
9050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009051 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 }
9056 /*-----------------------------------------------------------------------
9057 Copy the STA Key parameters into the HAL message
9058 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9061
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9064
9065 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9066
9067 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9068
9069 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9070
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9072 keyIndex++)
9073 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9076 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9077 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9078 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9079 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9080 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9087 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 WDI_MAX_KEY_LENGTH);
9090 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009091
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 wpalMemoryCopy( pSendBuffer+usDataOffset,
9093 &halSetStaKeyReqMsg.setStaKeyParams,
9094 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009095
9096 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009098
9099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9103 wdiSetSTAKeyRspCb, pEventData->pUserData,
9104 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
9106}/*WDI_ProcessSetSTAKeyReq*/
9107
9108/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009111
9112 @param pWDICtx: pointer to the WLAN DAL context
9113 pEventData: pointer to the event information structure
9114
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 @see
9116 @return Result of the function call
9117*/
9118WDI_Status
9119WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009120(
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 WDI_ControlBlockType* pWDICtx,
9122 WDI_EventInfoType* pEventData
9123)
9124{
9125 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9126 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9127 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 wpt_uint16 usDataOffset = 0;
9130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 wpt_macAddr macBSSID;
9133 wpt_uint8 ucCurrentBSSSesIdx;
9134 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9136
9137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 -------------------------------------------------------------------------*/
9140 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9141 ( NULL == pEventData->pCBfnc ))
9142 {
9143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 }
9148
9149 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9150 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9151 /*-------------------------------------------------------------------------
9152 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 -------------------------------------------------------------------------*/
9155 wpalMutexAcquire(&pWDICtx->wptMutex);
9156
9157 /*------------------------------------------------------------------------
9158 Find the BSS for which the request is made and identify WDI session
9159 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9161 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 &macBSSID))
9163 {
9164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009165 "This station does not exist in the WDI Station Table %d",
9166 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 }
9170
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9175 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9176 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
9178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009181
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 /*------------------------------------------------------------------------
9183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 ------------------------------------------------------------------------*/
9186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9187 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9189 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9190 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009191
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 }
9196
9197
9198
9199 wpalMutexRelease(&pWDICtx->wptMutex);
9200 /*-----------------------------------------------------------------------
9201 Get message buffer
9202 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9205 &pSendBuffer, &usDataOffset, &usSendSize))||
9206 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9207 {
9208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009209 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 }
9214
9215 /*-----------------------------------------------------------------------
9216 Copy the Key parameters into the HAL message
9217 -----------------------------------------------------------------------*/
9218
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9221
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9227
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9230
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 wpalMemoryCopy( pSendBuffer+usDataOffset,
9232 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9233 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009234
9235 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009237
9238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009244
9245}/*WDI_ProcessRemoveSTAKeyReq*/
9246
9247/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009250
9251 @param pWDICtx: pointer to the WLAN DAL context
9252 pEventData: pointer to the event information structure
9253
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 @see
9255 @return Result of the function call
9256*/
9257WDI_Status
9258WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009259(
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 WDI_ControlBlockType* pWDICtx,
9261 WDI_EventInfoType* pEventData
9262)
9263{
9264 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9265 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9266 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 wpt_uint16 usDataOffset = 0;
9269 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9274 wpt_uint8 keyIndex = 0;
9275
9276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9277
9278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 -------------------------------------------------------------------------*/
9281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9282 ( NULL == pEventData->pCBfnc ))
9283 {
9284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 }
9289
9290 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9291 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9292 /*-------------------------------------------------------------------------
9293 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 -------------------------------------------------------------------------*/
9296 wpalMutexAcquire(&pWDICtx->wptMutex);
9297
9298 /*------------------------------------------------------------------------
9299 Find the BSS for which the request is made and identify WDI session
9300 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9302 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 &macBSSID))
9304 {
9305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009306 "This station does not exist in the WDI Station Table %d",
9307 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 }
9311
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9313 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 {
9315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009316 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009318
9319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009322
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 /*------------------------------------------------------------------------
9324 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 ------------------------------------------------------------------------*/
9327 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9328 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9330 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9331 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009332
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 }
9337
9338
9339 wpalMutexRelease(&pWDICtx->wptMutex);
9340 /*-----------------------------------------------------------------------
9341 Get message buffer
9342 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9345 &pSendBuffer, &usDataOffset, &usSendSize))||
9346 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9347 {
9348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009349 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 }
9354 /*-----------------------------------------------------------------------
9355 Copy the STA Key parameters into the HAL message
9356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9359
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9362
9363 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9364
9365 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9366
9367 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9368
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9370 keyIndex++)
9371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9374 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9375 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9376 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9377 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9378 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9385 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 WDI_MAX_KEY_LENGTH);
9388 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 wpalMemoryCopy( pSendBuffer+usDataOffset,
9391 &halSetStaKeyReqMsg.setStaKeyParams,
9392 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009393
9394 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009396
9397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9401 wdiSetSTAKeyRspCb, pEventData->pUserData,
9402 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009403
9404}/*WDI_ProcessSetSTABcastKeyReq*/
9405
9406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009409
9410 @param pWDICtx: pointer to the WLAN DAL context
9411 pEventData: pointer to the event information structure
9412
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 @see
9414 @return Result of the function call
9415*/
9416WDI_Status
9417WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009418(
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 WDI_ControlBlockType* pWDICtx,
9420 WDI_EventInfoType* pEventData
9421)
9422{
9423 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9424 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9425 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 wpt_uint16 usDataOffset = 0;
9428 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 wpt_macAddr macBSSID;
9431 wpt_uint8 ucCurrentBSSSesIdx;
9432 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9434
9435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -------------------------------------------------------------------------*/
9438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9439 ( NULL == pEventData->pCBfnc ))
9440 {
9441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 }
9446
9447 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9448 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9449 /*-------------------------------------------------------------------------
9450 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 -------------------------------------------------------------------------*/
9453 wpalMutexAcquire(&pWDICtx->wptMutex);
9454
9455 /*------------------------------------------------------------------------
9456 Find the BSS for which the request is made and identify WDI session
9457 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9459 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 &macBSSID))
9461 {
9462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009463 "This station does not exist in the WDI Station Table %d",
9464 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 }
9468
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9470 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9473 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9474 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475
9476 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009479
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 /*------------------------------------------------------------------------
9481 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 ------------------------------------------------------------------------*/
9484 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9485 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9487 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9488 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009489
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 }
9494
9495
9496
9497 wpalMutexRelease(&pWDICtx->wptMutex);
9498 /*-----------------------------------------------------------------------
9499 Get message buffer
9500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9503 &pSendBuffer, &usDataOffset, &usSendSize))||
9504 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9505 {
9506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009507 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 }
9512
9513 /*-----------------------------------------------------------------------
9514 Copy the Key parameters into the HAL message
9515 -----------------------------------------------------------------------*/
9516
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9519
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9522
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9525
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9528
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 wpalMemoryCopy( pSendBuffer+usDataOffset,
9530 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9531 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009532
9533 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009535
9536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009542
9543}/*WDI_ProcessRemoveSTABcastKeyReq*/
9544
9545/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009547==========================================================================*/
9548/**
9549 @brief Process Add TSpec Request function (called when Main FSM
9550 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009551
9552 @param pWDICtx: pointer to the WLAN DAL context
9553 pEventData: pointer to the event information structure
9554
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 @see
9556 @return Result of the function call
9557*/
9558WDI_Status
9559WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009560(
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 WDI_ControlBlockType* pWDICtx,
9562 WDI_EventInfoType* pEventData
9563)
9564{
9565 WDI_AddTSReqParamsType* pwdiAddTSParams;
9566 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 wpt_uint16 usDataOffset = 0;
9571 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 wpt_macAddr macBSSID;
9574 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009575
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9577
9578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 -------------------------------------------------------------------------*/
9581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9582 ( NULL == pEventData->pCBfnc ))
9583 {
9584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 }
9589
9590 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9591 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9592 /*-------------------------------------------------------------------------
9593 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
9596 wpalMutexAcquire(&pWDICtx->wptMutex);
9597
9598 /*------------------------------------------------------------------------
9599 Find the BSS for which the request is made and identify WDI session
9600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9602 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 &macBSSID))
9604 {
9605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009606 "This station does not exist in the WDI Station Table %d",
9607 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 }
9611
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9613 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9616 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9617 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009618
9619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009622
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 /*------------------------------------------------------------------------
9624 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 ------------------------------------------------------------------------*/
9627 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9628 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9630 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9631 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009632
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009635 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009636 }
9637
9638 wpalMutexRelease(&pWDICtx->wptMutex);
9639 /*-----------------------------------------------------------------------
9640 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9644 sizeof(halAddTsParams),
9645 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 &usSendSize))||
9647 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9648 {
9649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009650 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 }
9655
9656 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9657 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9658
9659 //TSPEC IE
9660 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9661 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9692
9693 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9708
9709 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9714
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 wpalMemoryCopy( pSendBuffer+usDataOffset,
9716 &halAddTsParams,
9717 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009718
9719 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009721
9722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009728}/*WDI_ProcessAddTSpecReq*/
9729
9730
9731/**
9732 @brief Process Del TSpec Request function (called when Main FSM
9733 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009734
9735 @param pWDICtx: pointer to the WLAN DAL context
9736 pEventData: pointer to the event information structure
9737
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 @see
9739 @return Result of the function call
9740*/
9741WDI_Status
9742WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009743(
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 WDI_ControlBlockType* pWDICtx,
9745 WDI_EventInfoType* pEventData
9746)
9747{
9748 WDI_DelTSReqParamsType* pwdiDelTSParams;
9749 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 wpt_uint16 usDataOffset = 0;
9754 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9757
9758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009760 -------------------------------------------------------------------------*/
9761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9762 ( NULL == pEventData->pCBfnc ))
9763 {
9764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 }
9769
9770 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9771 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9772
9773 /*-------------------------------------------------------------------------
9774 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 -------------------------------------------------------------------------*/
9777 wpalMutexAcquire(&pWDICtx->wptMutex);
9778
9779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9783 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9784 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009785
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9789 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9790 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9791
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 }
9795
9796 /*------------------------------------------------------------------------
9797 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 ------------------------------------------------------------------------*/
9800 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9801 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9803 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9804 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009805
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 }
9810
9811
9812 wpalMutexRelease(&pWDICtx->wptMutex);
9813 /*-----------------------------------------------------------------------
9814 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9819 &pSendBuffer, &usDataOffset, &usSendSize))||
9820 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9821 {
9822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009823 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 }
9828
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 wpalMemoryCopy( pSendBuffer+usDataOffset,
9830 &pwdiDelTSParams->wdiDelTSInfo,
9831 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
9833 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009835
9836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9840 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009841}/*WDI_ProcessDelTSpecReq*/
9842
9843/**
9844 @brief Process Update EDCA Params Request function (called when
9845 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009846
9847 @param pWDICtx: pointer to the WLAN DAL context
9848 pEventData: pointer to the event information structure
9849
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 @see
9851 @return Result of the function call
9852*/
9853WDI_Status
9854WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009855(
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 WDI_ControlBlockType* pWDICtx,
9857 WDI_EventInfoType* pEventData
9858)
9859{
9860 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9861 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 wpt_uint16 usDataOffset = 0;
9866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9869
9870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 -------------------------------------------------------------------------*/
9873 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9874 ( NULL == pEventData->pCBfnc ))
9875 {
9876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 }
9881
9882 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9883 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9884 /*-------------------------------------------------------------------------
9885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 -------------------------------------------------------------------------*/
9888 wpalMutexAcquire(&pWDICtx->wptMutex);
9889
9890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9894 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9895 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009896
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 {
9899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9901 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009902
9903 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 }
9906
9907 /*------------------------------------------------------------------------
9908 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 ------------------------------------------------------------------------*/
9911 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9912 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9914 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9915 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009916
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 }
9921
9922
9923 wpalMutexRelease(&pWDICtx->wptMutex);
9924 /*-----------------------------------------------------------------------
9925 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9930 &pSendBuffer, &usDataOffset, &usSendSize))||
9931 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9932 {
9933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009934 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 }
9939
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 wpalMemoryCopy( pSendBuffer+usDataOffset,
9941 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9942 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009943
9944 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009946
9947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9951 wdiUpdateEDCARspCb, pEventData->pUserData,
9952 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009953}/*WDI_ProcessUpdateEDCAParamsReq*/
9954
9955/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009958
9959 @param pWDICtx: pointer to the WLAN DAL context
9960 pEventData: pointer to the event information structure
9961
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 @see
9963 @return Result of the function call
9964*/
9965WDI_Status
9966WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009967(
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 WDI_ControlBlockType* pWDICtx,
9969 WDI_EventInfoType* pEventData
9970)
9971{
9972 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9973 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 wpt_uint16 usDataOffset = 0;
9978 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 wpt_macAddr macBSSID;
9981
9982 tAddBASessionReqMsg halAddBASessionReq;
9983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9984
9985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 -------------------------------------------------------------------------*/
9988 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9989 ( NULL == pEventData->pCBfnc ))
9990 {
9991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 }
9996
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10001 /*-------------------------------------------------------------------------
10002 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 -------------------------------------------------------------------------*/
10005 wpalMutexAcquire(&pWDICtx->wptMutex);
10006
10007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10011 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 &macBSSID))
10013 {
10014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010015 "This station does not exist in the WDI Station Table %d",
10016 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 }
10020
10021
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010023
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10027 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10028 __func__, MAC_ADDR_ARRAY(macBSSID));
10029
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 }
10033
10034 /*------------------------------------------------------------------------
10035 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 ------------------------------------------------------------------------*/
10038 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10039 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10042 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 }
10048
10049
10050 wpalMutexRelease(&pWDICtx->wptMutex);
10051 /*-----------------------------------------------------------------------
10052 Get message buffer
10053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10055 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 sizeof(halAddBASessionReq.addBASessionParams),
10057 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10060 {
10061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010062 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10064 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 halAddBASessionReq.addBASessionParams.staIdx =
10069 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10070 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10071 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10072 WDI_MAC_ADDR_LEN);
10073 halAddBASessionReq.addBASessionParams.baTID =
10074 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10075 halAddBASessionReq.addBASessionParams.baPolicy =
10076 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10077 halAddBASessionReq.addBASessionParams.baBufferSize =
10078 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10079 halAddBASessionReq.addBASessionParams.baTimeout =
10080 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10081 halAddBASessionReq.addBASessionParams.baSSN =
10082 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10083 halAddBASessionReq.addBASessionParams.baDirection =
10084 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10085
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 wpalMemoryCopy( pSendBuffer+usDataOffset,
10087 &halAddBASessionReq.addBASessionParams,
10088 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010089
10090 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010092
10093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10097 wdiAddBASessionRspCb, pEventData->pUserData,
10098 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010099}/*WDI_ProcessAddBASessionReq*/
10100
10101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010104
10105 @param pWDICtx: pointer to the WLAN DAL context
10106 pEventData: pointer to the event information structure
10107
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 @see
10109 @return Result of the function call
10110*/
10111WDI_Status
10112WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010113(
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 WDI_ControlBlockType* pWDICtx,
10115 WDI_EventInfoType* pEventData
10116)
10117{
10118 WDI_DelBAReqParamsType* pwdiDelBAParams;
10119 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 wpt_uint16 usDataOffset = 0;
10124 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 wpt_macAddr macBSSID;
10127 tDelBAParams halDelBAparam;
10128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10129
10130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 -------------------------------------------------------------------------*/
10133 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10134 ( NULL == pEventData->pCBfnc ))
10135 {
10136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 }
10141
10142 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10143 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10144 /*-------------------------------------------------------------------------
10145 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 -------------------------------------------------------------------------*/
10148 wpalMutexAcquire(&pWDICtx->wptMutex);
10149
10150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10154 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 &macBSSID))
10156 {
10157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010158 "This station does not exist in the WDI Station Table %d",
10159 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 }
10163
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010165
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10169 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10170 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010171
10172 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 }
10175
10176 /*------------------------------------------------------------------------
10177 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 ------------------------------------------------------------------------*/
10180 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10181 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10183 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10184 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010185
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 }
10190
10191 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 sizeof(halDelBAparam),
10194 &pSendBuffer, &usDataOffset, &usSendSize))||
10195 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10196 {
10197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010198 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 }
10203
10204 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10205 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10206 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10207
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 wpalMemoryCopy( pSendBuffer+usDataOffset,
10209 &halDelBAparam,
10210 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
10212 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010214
10215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10219 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010220}/*WDI_ProcessDelBAReq*/
10221
10222#ifdef FEATURE_WLAN_CCX
10223
10224WDI_Status
10225WDI_ProcessTSMStatsReq
10226(
10227 WDI_ControlBlockType* pWDICtx,
10228 WDI_EventInfoType* pEventData
10229)
10230{
10231 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10232 WDI_TsmRspCb wdiTSMRspCb;
10233 wpt_uint8 ucCurrentBSSSesIdx = 0;
10234 WDI_BSSSessionType* pBSSSes = NULL;
10235 wpt_uint8* pSendBuffer = NULL;
10236 wpt_uint16 usDataOffset = 0;
10237 wpt_uint16 usSendSize = 0;
10238 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10239 tTsmStatsParams halTsmStatsReqParams = {0};
10240
10241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10242
10243 /*-------------------------------------------------------------------------
10244 Sanity check
10245 -------------------------------------------------------------------------*/
10246 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10247 ( NULL == pEventData->pCBfnc ))
10248 {
10249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 WDI_ASSERT(0);
10252 return WDI_STATUS_E_FAILURE;
10253 }
10254
10255 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10256 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10257 /*-------------------------------------------------------------------------
10258 Check to see if we are in the middle of an association, if so queue, if
10259 not it means it is free to process request
10260 -------------------------------------------------------------------------*/
10261 wpalMutexAcquire(&pWDICtx->wptMutex);
10262
10263 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10264 if ( NULL == pBSSSes )
10265 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10267 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10268 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010269
10270 wpalMutexRelease(&pWDICtx->wptMutex);
10271 return WDI_STATUS_E_NOT_ALLOWED;
10272 }
10273
10274 /*------------------------------------------------------------------------
10275 Check if this BSS is being currently processed or queued,
10276 if queued - queue the new request as well
10277 ------------------------------------------------------------------------*/
10278 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10279 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10281 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10282 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010283
10284 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10285 wpalMutexRelease(&pWDICtx->wptMutex);
10286 return wdiStatus;
10287 }
10288
10289 wpalMutexRelease(&pWDICtx->wptMutex);
10290 /*-----------------------------------------------------------------------
10291 Get message buffer
10292 ! TO DO : proper conversion into the HAL Message Request Format
10293 -----------------------------------------------------------------------*/
10294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10295 sizeof(halTsmStatsReqParams),
10296 &pSendBuffer, &usDataOffset, &usSendSize))||
10297 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10298 {
10299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010300 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 pEventData, pwdiTSMParams, wdiTSMRspCb);
10302 WDI_ASSERT(0);
10303 return WDI_STATUS_E_FAILURE;
10304 }
10305
10306 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10307 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10308 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10309 WDI_MAC_ADDR_LEN);
10310 wpalMemoryCopy( pSendBuffer+usDataOffset,
10311 &halTsmStatsReqParams,
10312 sizeof(halTsmStatsReqParams));
10313
10314 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10315 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10316
10317 /*-------------------------------------------------------------------------
10318 Send TSM Stats Request to HAL
10319 -------------------------------------------------------------------------*/
10320 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10321 wdiTSMRspCb, pEventData->pUserData,
10322 WDI_TSM_STATS_RESP);
10323}/*WDI_ProcessTSMStatsReq*/
10324
10325#endif
10326
10327
10328/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010331
10332 @param pWDICtx: pointer to the WLAN DAL context
10333 pEventData: pointer to the event information structure
10334
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 @see
10336 @return Result of the function call
10337*/
10338WDI_Status
10339WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010340(
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 WDI_ControlBlockType* pWDICtx,
10342 WDI_EventInfoType* pEventData
10343)
10344{
10345 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10346 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010347 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 wpt_uint16 usDataOffset = 0;
10349 wpt_uint16 usSendSize = 0;
10350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10351
10352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 -------------------------------------------------------------------------*/
10355 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10356 ( NULL == pEventData->pCBfnc ))
10357 {
10358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 }
10363
10364 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10365 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10366 /*-----------------------------------------------------------------------
10367 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10372 &pSendBuffer, &usDataOffset, &usSendSize))||
10373 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10374 {
10375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010376 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 }
10381
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 wpalMemoryCopy( pSendBuffer+usDataOffset,
10383 &pwdiFlushAcParams->wdiFlushAcInfo,
10384 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010385
10386 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010388
10389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10393 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010394}/*WDI_ProcessFlushAcReq*/
10395
10396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010399
10400 @param pWDICtx: pointer to the WLAN DAL context
10401 pEventData: pointer to the event information structure
10402
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 @see
10404 @return Result of the function call
10405*/
10406WDI_Status
10407WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010408(
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 WDI_ControlBlockType* pWDICtx,
10410 WDI_EventInfoType* pEventData
10411)
10412{
10413 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10414 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 wpt_uint16 usDataOffset = 0;
10417 wpt_uint16 usSendSize = 0;
10418
10419 tBtAmpEventMsg haltBtAmpEventMsg;
10420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10421
10422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 -------------------------------------------------------------------------*/
10425 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10426 ( NULL == pEventData->pCBfnc ))
10427 {
10428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 }
10433
10434 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10435 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10436 /*-----------------------------------------------------------------------
10437 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10442 &pSendBuffer, &usDataOffset, &usSendSize))||
10443 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10444 {
10445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010446 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 }
10451
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 wpalMemoryCopy( pSendBuffer+usDataOffset,
10455 &haltBtAmpEventMsg.btAmpEventParams,
10456 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010457
10458 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460
10461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10465 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010466}/*WDI_ProcessBtAmpEventReq*/
10467
10468/**
10469 @brief Process Add STA self Request function (called when Main FSM
10470 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010471
10472 @param pWDICtx: pointer to the WLAN DAL context
10473 pEventData: pointer to the event information structure
10474
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 @see
10476 @return Result of the function call
10477*/
10478WDI_Status
10479WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010480(
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 WDI_ControlBlockType* pWDICtx,
10482 WDI_EventInfoType* pEventData
10483)
10484{
10485 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10486 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 wpt_uint16 usDataOffset = 0;
10489 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010490 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10492
10493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 -------------------------------------------------------------------------*/
10496 if (( NULL == pEventData ) ||
10497 ( NULL == pEventData->pEventData) ||
10498 ( NULL == pEventData->pCBfnc))
10499 {
10500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 }
10505
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10510 /*-----------------------------------------------------------------------
10511 Get message buffer
10512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10514 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010515 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010517 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 {
10519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010520 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 }
10525
10526 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10529
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010531 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10532 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10533 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10534 {
10535 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10536 }
10537 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10538 VOS_P2P_CLIENT_MODE) ||
10539 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10540 VOS_P2P_DEVICE))
10541 {
10542 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10543 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010545 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010546
10547 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
10550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10554 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10555 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010556}/*WDI_ProcessAddSTASelfReq*/
10557
10558
10559
10560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010563
10564 @param pWDICtx: pointer to the WLAN DAL context
10565 pEventData: pointer to the event information structure
10566
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 @see
10568 @return Result of the function call
10569*/
10570WDI_Status
10571WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010572(
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 WDI_ControlBlockType* pWDICtx,
10574 WDI_EventInfoType* pEventData
10575)
10576{
10577 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10578 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 wpt_uint16 usDataOffset = 0;
10581 wpt_uint16 usSendSize = 0;
10582 tDelStaSelfParams halSetDelSelfSTAParams;
10583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10584
10585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 -------------------------------------------------------------------------*/
10588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10589 ( NULL == pEventData->pCBfnc ))
10590 {
10591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 }
10596
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10599 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10600
10601 /*-----------------------------------------------------------------------
10602 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10607 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010609 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10610 {
10611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010612 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 }
10617
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10620
Jeff Johnsone7245742012-09-05 17:12:55 -070010621 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10622 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010623
10624 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010626
10627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10631 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 WDI_DEL_STA_SELF_RESP);
10633
10634}
10635
Jeff Johnsone7245742012-09-05 17:12:55 -070010636#ifdef FEATURE_OEM_DATA_SUPPORT
10637/**
10638 @brief Process Start Oem Data Request function (called when Main
10639 FSM allows it)
10640
10641 @param pWDICtx: pointer to the WLAN DAL context
10642 pEventData: pointer to the event information structure
10643
10644 @see
10645 @return Result of the function call
10646*/
10647WDI_Status
10648WDI_ProcessStartOemDataReq
10649(
10650 WDI_ControlBlockType* pWDICtx,
10651 WDI_EventInfoType* pEventData
10652)
10653{
10654 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10655 WDI_oemDataRspCb wdiOemDataRspCb;
10656 wpt_uint8* pSendBuffer = NULL;
10657 wpt_uint16 usDataOffset = 0;
10658 wpt_uint16 usSendSize = 0;
10659 wpt_uint16 reqLen;
10660 tStartOemDataReqParams* halStartOemDataReqParams;
10661
10662 /*-------------------------------------------------------------------------
10663 Sanity check
10664 -------------------------------------------------------------------------*/
10665 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10666 ( NULL == pEventData->pCBfnc ))
10667 {
10668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010669 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 WDI_ASSERT(0);
10671 return WDI_STATUS_E_FAILURE;
10672 }
10673
10674 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10675 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10676
10677 /*-----------------------------------------------------------------------
10678 Get message buffer
10679 -----------------------------------------------------------------------*/
10680
10681 reqLen = sizeof(tStartOemDataReqParams);
10682
10683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10684 WDI_START_OEM_DATA_REQ, reqLen,
10685 &pSendBuffer, &usDataOffset, &usSendSize))||
10686 (usSendSize < (usDataOffset + reqLen)))
10687 {
10688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010689 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10691 WDI_ASSERT(0);
10692 return WDI_STATUS_E_FAILURE;
10693 }
10694
10695 //copying WDI OEM DATA REQ PARAMS to shared memory
10696 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10697
10698 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10699 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10700
10701 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10702 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10703
10704 /*-------------------------------------------------------------------------
10705 Send Start Request to HAL
10706 -------------------------------------------------------------------------*/
10707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10708 wdiOemDataRspCb, pEventData->pUserData,
10709 WDI_START_OEM_DATA_RESP);
10710}/*WDI_ProcessStartOemDataReq*/
10711#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010712
10713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010716
10717 @param pWDICtx: pointer to the WLAN DAL context
10718 pEventData: pointer to the event information structure
10719
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 @see
10721 @return Result of the function call
10722*/
10723WDI_Status
10724WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010725(
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 WDI_ControlBlockType* pWDICtx,
10727 WDI_EventInfoType* pEventData
10728)
10729{
10730 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10731 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 wpt_uint16 usDataOffset = 0;
10734 wpt_uint16 usSendSize = 0;
10735 tHalWlanHostResumeReqParam halResumeReqParams;
10736
10737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10738
10739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 -------------------------------------------------------------------------*/
10742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10743 ( NULL == pEventData->pCBfnc ))
10744 {
10745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010746 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 }
10750
10751 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10752 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10753
10754 /*-----------------------------------------------------------------------
10755 Get message buffer
10756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10759 &pSendBuffer, &usDataOffset, &usSendSize))||
10760 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10761 {
10762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010763 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 }
10768
Jeff Johnsone7245742012-09-05 17:12:55 -070010769 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010771
10772 wpalMemoryCopy( pSendBuffer+usDataOffset,
10773 &halResumeReqParams,
10774 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010775
10776 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010778
10779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10783 wdiHostResumeRspCb, pEventData->pUserData,
10784 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010785}/*WDI_ProcessHostResumeReq*/
10786
10787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010790
10791 @param pWDICtx: pointer to the WLAN DAL context
10792 pEventData: pointer to the event information structure
10793
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 @see
10795 @return Result of the function call
10796*/
10797WDI_Status
10798WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010799(
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 WDI_ControlBlockType* pWDICtx,
10801 WDI_EventInfoType* pEventData
10802)
10803{
10804 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10805 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 wpt_uint16 usDataOffset = 0;
10808 wpt_uint16 usSendSize = 0;
10809 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10811
10812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 -------------------------------------------------------------------------*/
10815 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10816 ( NULL == pEventData->pCBfnc ))
10817 {
10818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010819 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 }
10823
10824 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10825 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010826
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 /*-----------------------------------------------------------------------
10828 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 sizeof(halTxPerTrackingReqParam),
10833 &pSendBuffer, &usDataOffset, &usSendSize))||
10834 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10835 {
10836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010837 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
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 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010842
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10844 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10845 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10846 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010847
10848 wpalMemoryCopy( pSendBuffer+usDataOffset,
10849 &halTxPerTrackingReqParam,
10850 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
10852 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854
10855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010857 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10859 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010860}/*WDI_ProcessSetTxPerTrackingReq*/
10861
10862/*=========================================================================
10863 Indications
10864=========================================================================*/
10865
10866/**
10867 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010868
10869 @param pWDICtx: pointer to the WLAN DAL context
10870 pEventData: pointer to the event information structure
10871
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 @see
10873 @return Result of the function call
10874*/
10875WDI_Status
10876WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010877(
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 WDI_ControlBlockType* pWDICtx,
10879 WDI_EventInfoType* pEventData
10880)
10881{
10882 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 wpt_uint16 usDataOffset = 0;
10885 wpt_uint16 usSendSize = 0;
10886 WDI_Status wdiStatus;
10887 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10889
10890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 -------------------------------------------------------------------------*/
10893 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10894 {
10895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010896 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 }
10900
10901 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10902
10903 /*-----------------------------------------------------------------------
10904 Get message buffer
10905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10907 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 sizeof(halWlanSuspendIndparams),
10909 &pSendBuffer, &usDataOffset, &usSendSize))||
10910 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10911 {
10912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10913 "Unable to get send buffer in Suspend Ind ");
10914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 }
10917
10918 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10919 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10920
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010922 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10925 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010926
10927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 -------------------------------------------------------------------------*/
10930 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10935}/*WDI_ProcessHostSuspendInd*/
10936
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010937
10938
10939/**
10940 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10941
10942 @param pWDICtx: pointer to the WLAN DAL context
10943 pEventData: pointer to the event information structure
10944
10945 @see
10946 @return Result of the function call
10947*/
10948WDI_Status
10949WDI_ProcessTrafficStatsInd
10950(
10951 WDI_ControlBlockType* pWDICtx,
10952 WDI_EventInfoType* pEventData
10953)
10954{
10955 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10956 wpt_uint8* pSendBuffer = NULL;
10957 wpt_uint16 usDataOffset = 0;
10958 wpt_uint16 usSendSize = 0;
10959 WDI_Status wdiStatus;
10960 tStatsClassBIndParams* pStatsClassBIndParams;
10961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10962
10963 /*-------------------------------------------------------------------------
10964 Sanity check
10965 -------------------------------------------------------------------------*/
10966 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10967 {
10968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10969 "%s: Invalid parameters in Traffic Stats ind",__func__);
10970 WDI_ASSERT(0);
10971 return WDI_STATUS_E_FAILURE;
10972 }
10973
10974 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10975
10976 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10977 {
10978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10979 "%s: Invalid parameters in Traffic Stats ind",__func__);
10980 WDI_ASSERT(0);
10981 return WDI_STATUS_E_FAILURE;
10982 }
10983
10984 /*-----------------------------------------------------------------------
10985 Get message buffer
10986 -----------------------------------------------------------------------*/
10987 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10988 WDI_TRAFFIC_STATS_IND,
10989 sizeof(tStatsClassBIndParams),
10990 &pSendBuffer, &usDataOffset, &usSendSize))||
10991 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10992 {
10993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10994 "Unable to get send buffer in Traffic Stats Ind ");
10995 WDI_ASSERT(0);
10996 return WDI_STATUS_E_FAILURE;
10997 }
10998
10999 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11000
11001 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11002
11003 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11004 pTrafficStatsIndParams->pTrafficStats,
11005 pTrafficStatsIndParams->length);
11006
11007 /*-------------------------------------------------------------------------
11008 Send Suspend Request to HAL
11009 -------------------------------------------------------------------------*/
11010 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11011 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11012
11013 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11014 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11015}/*WDI_ProcessTrafficStatsInd*/
11016
Chet Lanctota96bb432013-03-18 10:26:30 -070011017#ifdef WLAN_FEATURE_11W
11018/**
11019 @brief Process Exclude Unencrypted Indications function (called
11020 when Main FSM allows it)
11021
11022 @param pWDICtx: pointer to the WLAN DAL context
11023 pEventData: pointer to the event information structure
11024
11025 @see
11026 @return Result of the function call
11027*/
11028WDI_Status
11029WDI_ProcessExcludeUnencryptInd
11030(
11031 WDI_ControlBlockType* pWDICtx,
11032 WDI_EventInfoType* pEventData
11033)
11034{
11035 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11036 wpt_uint8* pSendBuffer = NULL;
11037 wpt_uint16 usDataOffset = 0;
11038 wpt_uint16 usSendSize = 0;
11039 WDI_Status wdiStatus;
11040 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11042
11043 /*-------------------------------------------------------------------------
11044 Sanity check
11045 -------------------------------------------------------------------------*/
11046 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11047 {
11048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11049 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11050 WDI_ASSERT(0);
11051 return WDI_STATUS_E_FAILURE;
11052 }
11053
11054 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11055
11056 /*-----------------------------------------------------------------------
11057 Get message buffer
11058 -----------------------------------------------------------------------*/
11059 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11060 WDI_EXCLUDE_UNENCRYPTED_IND,
11061 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11062 &pSendBuffer, &usDataOffset, &usSendSize))||
11063 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11064 {
11065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11066 "Unable to get send buffer in Exclude Unencrypted Ind ");
11067 WDI_ASSERT(0);
11068 return WDI_STATUS_E_FAILURE;
11069 }
11070
11071 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11072
11073 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11074
11075 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11076 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11077
11078 /*-------------------------------------------------------------------------
11079 Send Suspend Request to HAL
11080 -------------------------------------------------------------------------*/
11081 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11082 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11083
11084 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11085 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11086}/*WDI_ProcessExcludeUnencryptInd*/
11087#endif
11088
Yue Ma365933a2013-08-14 15:59:08 -070011089/**
11090 @brief Process Add Periodic Tx Pattern Indication function (called when
11091 Main FSM allows it)
11092
11093 @param pWDICtx: pointer to the WLAN DAL context
11094 pEventData: pointer to the event information structure
11095
11096 @see
11097 @return Result of the function call
11098*/
11099WDI_Status
11100WDI_ProcessAddPeriodicTxPtrnInd
11101(
11102 WDI_ControlBlockType* pWDICtx,
11103 WDI_EventInfoType* pEventData
11104)
11105{
11106 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11107 wpt_uint8* pSendBuffer = NULL;
11108 wpt_uint16 usDataOffset = 0;
11109 wpt_uint16 usSendSize = 0;
11110 WDI_Status wdiStatus;
11111 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11112 wpt_uint8 selfStaIdx = 0;
11113
11114 /*-------------------------------------------------------------------------
11115 Sanity check
11116 -------------------------------------------------------------------------*/
11117 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11118 {
11119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11120 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11121 WDI_ASSERT(0);
11122 return WDI_STATUS_E_FAILURE;
11123 }
11124
11125 pAddPeriodicTxPtrnParams =
11126 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11127
11128 /*------------------------------------------------------------------------
11129 Get message buffer
11130 ------------------------------------------------------------------------*/
11131 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11132 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11133 &pSendBuffer, &usDataOffset, &usSendSize))||
11134 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11135 {
11136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11137 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11138 __func__);
11139 WDI_ASSERT(0);
11140 return WDI_STATUS_E_FAILURE;
11141 }
11142
11143 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11144
11145 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11146 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11147 &selfStaIdx))
11148 {
11149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11150 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011151 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011152
11153 return WDI_STATUS_E_FAILURE;
11154 }
11155
11156 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11157 halAddPeriodicTxPtrn->ucPtrnId =
11158 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11159 halAddPeriodicTxPtrn->usPtrnSize =
11160 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11161 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11162 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11163
11164 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11165 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11166 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11167
11168 /*-------------------------------------------------------------------------
11169 Send Indication to HAL
11170 -------------------------------------------------------------------------*/
11171 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11172 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11173
11174 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11175
11176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11177 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11178
11179 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11180} /* WDI_ProcessAddPeriodicTxPtrnInd */
11181
11182/**
11183 @brief Process Delete Periodic Tx Pattern Indication function (called when
11184 Main FSM allows it)
11185
11186 @param pWDICtx: pointer to the WLAN DAL context
11187 pEventData: pointer to the event information structure
11188
11189 @see
11190 @return Result of the function call
11191*/
11192WDI_Status
11193WDI_ProcessDelPeriodicTxPtrnInd
11194(
11195 WDI_ControlBlockType* pWDICtx,
11196 WDI_EventInfoType* pEventData
11197)
11198{
11199 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11200 wpt_uint8* pSendBuffer = NULL;
11201 wpt_uint16 usDataOffset = 0;
11202 wpt_uint16 usSendSize = 0;
11203 WDI_Status wdiStatus;
11204 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11205 wpt_uint8 selfStaIdx = 0;
11206
11207 /*-------------------------------------------------------------------------
11208 Sanity check
11209 -------------------------------------------------------------------------*/
11210 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11211 {
11212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11213 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11214 WDI_ASSERT(0);
11215 return WDI_STATUS_E_FAILURE;
11216 }
11217
11218 pDelPeriodicTxPtrnParams =
11219 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11220
11221 /*------------------------------------------------------------------------
11222 Get message buffer
11223 ------------------------------------------------------------------------*/
11224 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11225 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11226 &pSendBuffer, &usDataOffset, &usSendSize))||
11227 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11228 {
11229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11230 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11231 __func__);
11232 WDI_ASSERT(0);
11233 return WDI_STATUS_E_FAILURE;
11234 }
11235
11236 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11237
11238 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11239 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11240 &selfStaIdx))
11241 {
11242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11243 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011244 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011245
11246 return WDI_STATUS_E_FAILURE;
11247 }
11248
11249 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11250 halDelPeriodicTxPtrn->uPatternIdBitmap =
11251 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11252
11253 /*-------------------------------------------------------------------------
11254 Send Indication to HAL
11255 -------------------------------------------------------------------------*/
11256 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11257 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11258
11259 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11260
11261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11262 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11263
11264 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11265} /* WDI_ProcessDelPeriodicTxPtrnInd */
11266
Jeff Johnson295189b2012-06-20 16:38:30 -070011267/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011269==========================================================================*/
11270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011273
11274 @param pWDICtx: pointer to the WLAN DAL context
11275 pEventData: pointer to the event information structure
11276
Jeff Johnson295189b2012-06-20 16:38:30 -070011277 @see
11278 @return Result of the function call
11279*/
11280WDI_Status
11281WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011282(
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 WDI_ControlBlockType* pWDICtx,
11284 WDI_EventInfoType* pEventData
11285)
11286{
11287 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11288 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 wpt_uint16 usDataOffset = 0;
11291 wpt_uint16 usSendSize = 0;
11292 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11294
11295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 -------------------------------------------------------------------------*/
11298 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11299 ( NULL == pEventData->pCBfnc ))
11300 {
11301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 }
11306
11307 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11308 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11309 /*-----------------------------------------------------------------------
11310 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011313 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011314 sizeof(halSwitchChannelReq.switchChannelParams),
11315 &pSendBuffer, &usDataOffset, &usSendSize))||
11316 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11317 {
11318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011319 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11321 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
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011327#ifndef WLAN_FEATURE_VOWIFI
11328 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11330#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11333
11334#ifdef WLAN_FEATURE_VOWIFI
11335 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11338 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11339 WDI_MAC_ADDR_LEN);
11340 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11341 pwdiSwitchChParams->wdiChInfo.macBSSId,
11342 WDI_MAC_ADDR_LEN);
11343#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 wpalMemoryCopy( pSendBuffer+usDataOffset,
11345 &halSwitchChannelReq.switchChannelParams,
11346 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011347
11348 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011350
11351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11355 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011356}/*WDI_ProcessChannelSwitchReq*/
11357
11358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011359 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011360 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011361
11362 @param pWDICtx: pointer to the WLAN DAL context
11363 pEventData: pointer to the event information structure
11364
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 @see
11366 @return Result of the function call
11367*/
11368WDI_Status
11369WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011370(
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 WDI_ControlBlockType* pWDICtx,
11372 WDI_EventInfoType* pEventData
11373)
11374{
11375 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11376 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 wpt_uint16 usDataOffset = 0;
11381 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011383
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 tConfigStaReqMsg halConfigStaReqMsg;
11385 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11387
11388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 -------------------------------------------------------------------------*/
11391 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11392 ( NULL == pEventData->pCBfnc ))
11393 {
11394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 }
11399
11400 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11401 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11402 /*-------------------------------------------------------------------------
11403 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 -------------------------------------------------------------------------*/
11406 wpalMutexAcquire(&pWDICtx->wptMutex);
11407
11408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011409 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11412 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11413 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011414
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11418 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11419 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011420
11421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 }
11424
11425 /*------------------------------------------------------------------------
11426 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011427 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011428 ------------------------------------------------------------------------*/
11429 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11430 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11432 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11433 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011434
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 }
11439
11440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011441
11442 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11443#ifdef WLAN_FEATURE_11AC
11444 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011445 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 else
11447#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011448 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011449
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 /*-----------------------------------------------------------------------
11451 Get message buffer
11452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11454 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011456 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 {
11458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011459 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 }
11464
11465 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 &pwdiConfigSTAParams->wdiReqInfo);
11468
11469 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11470 {
11471 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 WDI_STATableFindStaidByAddr(pWDICtx,
11474 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 {
11477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011478 MAC_ADDRESS_STR
11479 ": This station does not exist in the WDI Station Table",
11480 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011482 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 }
11485 }
11486 else
11487 {
11488 /* Need to fill in the STA Index to invalid, since at this point we have not
11489 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011490 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 }
11492
11493 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011495
Jeff Johnsone7245742012-09-05 17:12:55 -070011496 wpalMemoryCopy( pSendBuffer+usDataOffset,
11497 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011498 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011499
11500 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011501 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011502
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11504 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 sizeof(pWDICtx->wdiCachedConfigStaReq));
11506
11507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11511 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011512}/*WDI_ProcessConfigStaReq*/
11513
11514
11515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011518
11519 @param pWDICtx: pointer to the WLAN DAL context
11520 pEventData: pointer to the event information structure
11521
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 @see
11523 @return Result of the function call
11524*/
11525WDI_Status
11526WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011527(
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 WDI_ControlBlockType* pWDICtx,
11529 WDI_EventInfoType* pEventData
11530)
11531{
11532 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11533 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011536 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 wpt_uint16 usDataOffset = 0;
11538 wpt_uint16 usSendSize = 0;
11539 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11542
11543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 -------------------------------------------------------------------------*/
11546 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11547 ( NULL == pEventData->pCBfnc ))
11548 {
11549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 }
11554
11555 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11556 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11557 /*-------------------------------------------------------------------------
11558 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 -------------------------------------------------------------------------*/
11561 wpalMutexAcquire(&pWDICtx->wptMutex);
11562
11563 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11567 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11568 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011569
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11574 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 }
11576 else
11577 {
11578 /*------------------------------------------------------------------------
11579 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011580 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 ------------------------------------------------------------------------*/
11582 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11583 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11585 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11586 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11587
11588 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011589 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 }
11592 }
11593 /* If the link is set to enter IDLE - the Session allocated for this BSS
11594 will be deleted on the Set Link State response coming from HAL
11595 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11598
11599 wpalMutexRelease(&pWDICtx->wptMutex);
11600 /*-----------------------------------------------------------------------
11601 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011604
11605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 sizeof(halLinkStateReqMsg),
11607 &pSendBuffer, &usDataOffset, &usSendSize))||
11608 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11609 {
11610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011611 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 }
11616
11617 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11618 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11619
11620 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11621 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11622
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11625
Jeff Johnsone7245742012-09-05 17:12:55 -070011626 wpalMemoryCopy( pSendBuffer+usDataOffset,
11627 &halLinkStateReqMsg,
11628 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011629
11630 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011632
11633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11637 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011638}/*WDI_ProcessSetLinkStateReq*/
11639
11640
11641/**
11642 @brief Process Get Stats Request function (called when Main FSM
11643 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011644
11645 @param pWDICtx: pointer to the WLAN DAL context
11646 pEventData: pointer to the event information structure
11647
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 @see
11649 @return Result of the function call
11650*/
11651WDI_Status
11652WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011653(
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 WDI_ControlBlockType* pWDICtx,
11655 WDI_EventInfoType* pEventData
11656)
11657{
11658 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11659 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 wpt_uint16 usDataOffset = 0;
11662 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011664 WDI_BSSSessionType* pBSSSes = NULL;
11665 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 tHalStatsReqMsg halStatsReqMsg;
11668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11669
11670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 -------------------------------------------------------------------------*/
11673 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11674 ( NULL == pEventData->pCBfnc ) )
11675 {
11676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011680 }
11681
11682 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11683 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11684
11685 /*-------------------------------------------------------------------------
11686 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 -------------------------------------------------------------------------*/
11689 wpalMutexAcquire(&pWDICtx->wptMutex);
11690
11691 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11695 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011696 &macBSSID))
11697 {
11698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011699 "This station does not exist in the WDI Station Table %d",
11700 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011703 }
11704
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11706 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11709 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11710 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011711
11712 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 }
11715
11716 /*------------------------------------------------------------------------
11717 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011718 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011719 ------------------------------------------------------------------------*/
11720 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11721 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11723 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11724 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011725
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011728 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011729 }
11730
11731
11732 wpalMutexRelease(&pWDICtx->wptMutex);
11733
11734 /*-----------------------------------------------------------------------
11735 Get message buffer
11736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 sizeof(halStatsReqMsg.statsReqParams),
11739 &pSendBuffer, &usDataOffset, &usSendSize))||
11740 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11741 {
11742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011743 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 }
11748
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011750 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 wpalMemoryCopy( pSendBuffer+usDataOffset,
11754 &halStatsReqMsg.statsReqParams,
11755 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011756
11757 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011759
11760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11764 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011765}/*WDI_ProcessGetStatsReq*/
11766
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011767#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11768/**
11769 @brief Process Get Roam Rssi Request function (called when Main FSM
11770 allows it)
11771
11772 @param pWDICtx: pointer to the WLAN DAL context
11773 pEventData: pointer to the event information structure
11774
11775 @see
11776 @return Result of the function call
11777*/
11778WDI_Status
11779WDI_ProcessGetRoamRssiReq
11780(
11781 WDI_ControlBlockType* pWDICtx,
11782 WDI_EventInfoType* pEventData
11783)
11784{
11785 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11786 WDI_GetStatsRspCb wdiGetStatsRspCb;
11787 wpt_uint8* pSendBuffer = NULL;
11788 wpt_uint16 usDataOffset = 0;
11789 wpt_uint16 usSendSize = 0;
11790 wpt_uint8 ucCurrentBSSSesIdx = 0;
11791 WDI_BSSSessionType* pBSSSes = NULL;
11792 wpt_macAddr macBSSID;
11793 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11794 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11796 /*-------------------------------------------------------------------------
11797 Sanity check
11798 -------------------------------------------------------------------------*/
11799 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11800 ( NULL == pEventData->pCBfnc ) )
11801 {
11802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11803 "%s: Invalid parameters", __func__);
11804 WDI_ASSERT(0);
11805 return WDI_STATUS_E_FAILURE;
11806 }
11807
11808 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11809 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11810
11811 /*-------------------------------------------------------------------------
11812 Check to see if we are in the middle of an association, if so queue, if
11813 not it means it is free to process request
11814 -------------------------------------------------------------------------*/
11815 wpalMutexAcquire(&pWDICtx->wptMutex);
11816
11817 /*------------------------------------------------------------------------
11818 Find the BSS for which the request is made
11819 ------------------------------------------------------------------------*/
11820 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11821 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11822 &macBSSID))
11823 {
11824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011825 "This station does not exist in the WDI Station Table %d",
11826 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011827 wpalMutexRelease(&pWDICtx->wptMutex);
11828 return WDI_STATUS_E_FAILURE;
11829 }
11830
11831 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11832 if ( NULL == pBSSSes )
11833 {
11834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11835 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11836 __func__, MAC_ADDR_ARRAY(macBSSID));
11837
11838 wpalMutexRelease(&pWDICtx->wptMutex);
11839 return WDI_STATUS_E_NOT_ALLOWED;
11840 }
11841
11842 /*------------------------------------------------------------------------
11843 Check if this BSS is being currently processed or queued,
11844 if queued - queue the new request as well
11845 ------------------------------------------------------------------------*/
11846 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11847 {
11848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11849 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11850 __func__, MAC_ADDR_ARRAY(macBSSID));
11851
11852 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11853 wpalMutexRelease(&pWDICtx->wptMutex);
11854 return wdiStatus;
11855 }
11856
11857 wpalMutexRelease(&pWDICtx->wptMutex);
11858
11859 /*-----------------------------------------------------------------------
11860 Get message buffer
11861 -----------------------------------------------------------------------*/
11862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11863 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11864 &pSendBuffer, &usDataOffset, &usSendSize))||
11865 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11866 {
11867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011868 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011869 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11870 WDI_ASSERT(0);
11871 return WDI_STATUS_E_FAILURE;
11872 }
11873
11874 halRssiRoamReqMsg.roamRssiReqParams.staId =
11875 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11876 wpalMemoryCopy( pSendBuffer+usDataOffset,
11877 &halRssiRoamReqMsg.roamRssiReqParams,
11878 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11879
11880 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11881 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11882
11883 /*-------------------------------------------------------------------------
11884 Send Get STA Request to HAL
11885 -------------------------------------------------------------------------*/
11886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11887 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11888}/*WDI_ProcessGetRoamRssiReq*/
11889#endif
11890
Jeff Johnson295189b2012-06-20 16:38:30 -070011891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011894
11895 @param pWDICtx: pointer to the WLAN DAL context
11896 pEventData: pointer to the event information structure
11897
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 @see
11899 @return Result of the function call
11900*/
11901WDI_Status
11902WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011903(
Jeff Johnson295189b2012-06-20 16:38:30 -070011904 WDI_ControlBlockType* pWDICtx,
11905 WDI_EventInfoType* pEventData
11906)
11907{
11908 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11909 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11910
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 wpt_uint16 usDataOffset = 0;
11913 wpt_uint16 usSendSize = 0;
11914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11915
11916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011918 -------------------------------------------------------------------------*/
11919 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11920 ( NULL == pEventData->pCBfnc))
11921 {
11922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 }
11927
11928 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11929 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11930
11931 /*-----------------------------------------------------------------------
11932 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 -----------------------------------------------------------------------*/
11935
Jeff Johnsone7245742012-09-05 17:12:55 -070011936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011937 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11938 &pSendBuffer, &usDataOffset, &usSendSize))||
11939 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11940 {
11941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011942 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 }
11947
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 wpalMemoryCopy( pSendBuffer+usDataOffset,
11949 &pwdiUpdateCfgParams->uConfigBufferLen,
11950 sizeof(wpt_uint32));
11951 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11952 pwdiUpdateCfgParams->pConfigBuffer,
11953 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011954
11955 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011957
11958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 -------------------------------------------------------------------------*/
11961
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11963 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011964
11965}/*WDI_ProcessUpdateCfgReq*/
11966
11967
11968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011971
11972 @param pWDICtx: pointer to the WLAN DAL context
11973 pEventData: pointer to the event information structure
11974
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 @see
11976 @return Result of the function call
11977*/
11978WDI_Status
11979WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011980(
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 WDI_ControlBlockType* pWDICtx,
11982 WDI_EventInfoType* pEventData
11983)
11984{
11985 WDI_AddBAReqParamsType* pwdiAddBAParams;
11986 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 wpt_uint16 usDataOffset = 0;
11991 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011992 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 wpt_macAddr macBSSID;
11994
11995 tAddBAReqMsg halAddBAReq;
11996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11997
11998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 -------------------------------------------------------------------------*/
12001 if (( NULL == pEventData ) ||
12002 ( NULL == pEventData->pEventData) ||
12003 ( NULL == pEventData->pCBfnc ))
12004 {
12005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012009 }
12010
12011 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12012 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12013
12014 /*-------------------------------------------------------------------------
12015 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 -------------------------------------------------------------------------*/
12018 wpalMutexAcquire(&pWDICtx->wptMutex);
12019
12020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12024 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 &macBSSID))
12026 {
12027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012028 "This station does not exist in the WDI Station Table %d",
12029 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12035 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12038 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12039 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012040
12041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 }
12044
12045 /*------------------------------------------------------------------------
12046 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 ------------------------------------------------------------------------*/
12049 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12050 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12052 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12053 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012054
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 }
12059
12060
12061 wpalMutexRelease(&pWDICtx->wptMutex);
12062 /*-----------------------------------------------------------------------
12063 Get message buffer
12064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 sizeof(halAddBAReq.addBAParams),
12067 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12070 {
12071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012072 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 }
12077
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12080 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12081#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12084#endif
12085
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 wpalMemoryCopy( pSendBuffer+usDataOffset,
12087 &halAddBAReq.addBAParams,
12088 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012089
12090 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012092
12093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12097 wdiAddBARspCb, pEventData->pUserData,
12098 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012099}/*WDI_ProcessAddBAReq*/
12100
12101
12102
12103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012106
12107 @param pWDICtx: pointer to the WLAN DAL context
12108 pEventData: pointer to the event information structure
12109
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 @see
12111 @return Result of the function call
12112*/
12113WDI_Status
12114WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012115(
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 WDI_ControlBlockType* pWDICtx,
12117 WDI_EventInfoType* pEventData
12118)
12119{
12120 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12121 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 wpt_uint16 usDataOffset = 0;
12126 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012127 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012128 wpt_uint16 index;
12129 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012130
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 tTriggerBAReqMsg halTriggerBAReq;
12132 tTriggerBaReqCandidate* halTriggerBACandidate;
12133 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12135
12136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 -------------------------------------------------------------------------*/
12139 if (( NULL == pEventData ) ||
12140 ( NULL == pEventData->pEventData ) ||
12141 ( NULL == pEventData->pCBfnc ))
12142 {
12143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 }
12148
12149 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12150 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12151 /*-------------------------------------------------------------------------
12152 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 -------------------------------------------------------------------------*/
12155 wpalMutexAcquire(&pWDICtx->wptMutex);
12156
12157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12161 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 &macBSSID))
12163 {
12164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012165 "This station does not exist in the WDI Station Table %d",
12166 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012169 }
12170
Jeff Johnsone7245742012-09-05 17:12:55 -070012171 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12175 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12176 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012177
12178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 }
12181
12182 /*------------------------------------------------------------------------
12183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 ------------------------------------------------------------------------*/
12186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12187 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12189 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12190 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012191
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 }
12196
12197
12198 wpalMutexRelease(&pWDICtx->wptMutex);
12199 /*-----------------------------------------------------------------------
12200 Get message buffer
12201 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12203 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12207 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12212 {
12213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012214 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012218 }
12219
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12224
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 wpalMemoryCopy( pSendBuffer+usDataOffset,
12226 &halTriggerBAReq.triggerBAParams,
12227 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012228
Jeff Johnsone7245742012-09-05 17:12:55 -070012229 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12231 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12232 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012233
12234 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012235 index++)
12236 {
12237 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12238 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12239 halTriggerBACandidate++;
12240 wdiTriggerBACandidate++;
12241 }
12242
12243 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012245
12246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12250 wdiTriggerBARspCb, pEventData->pUserData,
12251 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012252}/*WDI_ProcessTriggerBAReq*/
12253
12254
12255
12256/**
12257 @brief Process Update Beacon Params Request function (called when Main FSM
12258 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012259
12260 @param pWDICtx: pointer to the WLAN DAL context
12261 pEventData: pointer to the event information structure
12262
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 @see
12264 @return Result of the function call
12265*/
12266WDI_Status
12267WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012268(
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 WDI_ControlBlockType* pWDICtx,
12270 WDI_EventInfoType* pEventData
12271)
12272{
12273 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12274 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 wpt_uint16 usDataOffset = 0;
12277 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12280
12281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 -------------------------------------------------------------------------*/
12284 if (( NULL == pEventData ) ||
12285 ( NULL == pEventData->pEventData) ||
12286 ( NULL == pEventData->pCBfnc))
12287 {
12288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 }
12293
12294 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12295 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12296 /*-----------------------------------------------------------------------
12297 Get message buffer
12298 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 sizeof(halUpdateBeaconParams),
12301 &pSendBuffer, &usDataOffset, &usSendSize))||
12302 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12303 {
12304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012305 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 }
12310
12311 /*BSS Index of the BSS*/
12312 halUpdateBeaconParams.bssIdx =
12313 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12314 /*shortPreamble mode. HAL should update all the STA rates when it
12315 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12318 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12321 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12324
12325 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12338 halUpdateBeaconParams.fRIFSMode =
12339 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12342
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12344 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012345
12346 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348
12349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12353 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012354}/*WDI_ProcessUpdateBeaconParamsReq*/
12355
12356
12357
12358/**
12359 @brief Process Send Beacon template Request function (called when Main FSM
12360 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012361
12362 @param pWDICtx: pointer to the WLAN DAL context
12363 pEventData: pointer to the event information structure
12364
Jeff Johnson295189b2012-06-20 16:38:30 -070012365 @see
12366 @return Result of the function call
12367*/
12368WDI_Status
12369WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012370(
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 WDI_ControlBlockType* pWDICtx,
12372 WDI_EventInfoType* pEventData
12373)
12374{
12375 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12376 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 wpt_uint16 usDataOffset = 0;
12379 wpt_uint16 usSendSize = 0;
12380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12381
12382 tSendBeaconReqMsg halSendBeaconReq;
12383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 -------------------------------------------------------------------------*/
12386 if (( NULL == pEventData ) ||
12387 ( NULL == pEventData->pEventData ) ||
12388 ( NULL == pEventData->pCBfnc ))
12389 {
12390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 }
12395
12396 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12397 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12398 /*-----------------------------------------------------------------------
12399 Get message buffer
12400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 sizeof(halSendBeaconReq.sendBeaconParam),
12403 &pSendBuffer, &usDataOffset, &usSendSize))||
12404 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12405 {
12406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012407 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 }
12412
12413 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12414 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12415 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12418 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12419 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12420 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012423 /* usP2PIeOffset should be atleast greater than timIeOffset */
12424 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12425 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12426 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12427 {
12428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12429 "Invalid usP2PIeOffset %hu",
12430 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12431 WDI_ASSERT(0);
12432 return WDI_STATUS_E_FAILURE;
12433 }
12434
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012437
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 wpalMemoryCopy( pSendBuffer+usDataOffset,
12439 &halSendBeaconReq.sendBeaconParam,
12440 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012441
12442 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012444
12445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12449 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012450}/*WDI_ProcessSendBeaconParamsReq*/
12451
12452/**
12453 @brief Process Update Beacon Params Request function (called when Main FSM
12454 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012455
12456 @param pWDICtx: pointer to the WLAN DAL context
12457 pEventData: pointer to the event information structure
12458
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 @see
12460 @return Result of the function call
12461*/
12462WDI_Status
12463WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012464(
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 WDI_ControlBlockType* pWDICtx,
12466 WDI_EventInfoType* pEventData
12467)
12468{
12469 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12470 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 wpt_uint16 usDataOffset = 0;
12473 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12476
12477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 -------------------------------------------------------------------------*/
12480 if (( NULL == pEventData ) ||
12481 ( NULL == pEventData->pEventData) ||
12482 ( NULL == pEventData->pCBfnc))
12483 {
12484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 }
12489
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12494 /*-----------------------------------------------------------------------
12495 Get message buffer
12496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 sizeof(halUpdateProbeRspTmplParams),
12499 &pSendBuffer, &usDataOffset, &usSendSize))||
12500 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12501 {
12502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012503 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 }
12508
12509 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 WDI_MAC_ADDR_LEN);
12512
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12515
12516 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12517 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012519
12520
12521 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12522 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12523 WDI_PROBE_REQ_BITMAP_IE_LEN);
12524
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 wpalMemoryCopy( pSendBuffer+usDataOffset,
12526 &halUpdateProbeRspTmplParams,
12527 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
12529 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531
12532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012535 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12536 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12537 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012538}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12539
12540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012543
12544 @param pWDICtx: pointer to the WLAN DAL context
12545 pEventData: pointer to the event information structure
12546
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 @see
12548 @return Result of the function call
12549*/
12550WDI_Status
12551WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012552(
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 WDI_ControlBlockType* pWDICtx,
12554 WDI_EventInfoType* pEventData
12555)
12556{
12557
12558 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12559 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12560
12561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 -------------------------------------------------------------------------*/
12564 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012565 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12569 {
12570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 }
12575
12576 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12579
12580 /*cache the wdi nv request message here if the the first fragment
12581 * To issue the request to HAL for the next fragment */
12582 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12583 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12585 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12587
12588 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12589 pWDICtx->pRspCBUserData = pEventData->pUserData;
12590 }
12591
12592 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12593}
12594
12595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012598
12599 @param pWDICtx: pointer to the WLAN DAL context
12600 pEventData: pointer to the event information structure
12601
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 @see
12603 @return Result of the function call
12604*/
12605WDI_Status WDI_ProcessSetMaxTxPowerReq
12606(
12607 WDI_ControlBlockType* pWDICtx,
12608 WDI_EventInfoType* pEventData
12609)
12610{
12611 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12612 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012613 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 wpt_uint16 usDataOffset = 0;
12615 wpt_uint16 usSendSize = 0;
12616 tSetMaxTxPwrReq halSetMaxTxPower;
12617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12618
12619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 -------------------------------------------------------------------------*/
12622 if (( NULL == pEventData ) ||
12623 ( NULL == pEventData->pEventData ) ||
12624 ( NULL == pEventData->pCBfnc ))
12625 {
12626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12635
12636 /*-----------------------------------------------------------------------
12637 Get message buffer
12638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012639if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12641 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012642 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012643)))
12644 {
12645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012646 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 }
12651
12652 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12653 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12654 WDI_MAC_ADDR_LEN);
12655
12656 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12657 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12658 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012661
12662 wpalMemoryCopy( pSendBuffer+usDataOffset,
12663 &halSetMaxTxPower.setMaxTxPwrParams,
12664 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012665
12666 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012668
12669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012672 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12673 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12674 WDI_SET_MAX_TX_POWER_RESP);
12675
Jeff Johnson295189b2012-06-20 16:38:30 -070012676}
12677
Arif Hussainfc753992013-08-09 15:09:58 -070012678/*
12679 @brief Process Set Max Tx Power Per Band Request function (called when Main
12680 FSM allows it)
12681
12682 @param pWDICtx: pointer to the WLAN DAL context
12683 pEventData: pointer to the event information structure
12684
12685 @see
12686 @return Result of the function call
12687*/
12688WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12689(
12690 WDI_ControlBlockType* pWDICtx,
12691 WDI_EventInfoType* pEventData
12692)
12693{
12694 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12695 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12696 wpt_uint8* pSendBuffer = NULL;
12697 wpt_uint16 usDataOffset = 0;
12698 wpt_uint16 usSendSize = 0;
12699 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12700 WDI_Status rValue = WDI_STATUS_SUCCESS;
12701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12702
12703 /*-------------------------------------------------------------------------
12704 Sanity check
12705 -------------------------------------------------------------------------*/
12706 if (( NULL == pEventData ) ||
12707 ( NULL == pEventData->pEventData ) ||
12708 ( NULL == pEventData->pCBfnc ))
12709 {
12710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12711 "%s: Invalid parameters", __func__);
12712 WDI_ASSERT(0);
12713 return WDI_STATUS_E_FAILURE;
12714 }
12715 pwdiSetMaxTxPowerPerBandParams = \
12716 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12717
12718 wdiSetMaxTxPowerPerBandRspCb = \
12719 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12720
12721 /*-----------------------------------------------------------------------
12722 Get message buffer
12723 -----------------------------------------------------------------------*/
12724
12725 rValue = WDI_GetMessageBuffer(pWDICtx,
12726 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12727 sizeof(tSetMaxTxPwrPerBandParams),
12728 &pSendBuffer, &usDataOffset, &usSendSize);
12729
12730 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12731 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12732 {
12733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12734 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12735 pEventData, pwdiSetMaxTxPowerPerBandParams,
12736 wdiSetMaxTxPowerPerBandRspCb);
12737 WDI_ASSERT(0);
12738 return WDI_STATUS_E_FAILURE;
12739 }
12740
12741
12742 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12743 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12744 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12745
12746 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12747 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12748
12749 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12750 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12751
12752 /*-------------------------------------------------------------------------
12753 Send Set Max Tx Power Per Band Request to HAL
12754 -------------------------------------------------------------------------*/
12755 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12756 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12757 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12758}
12759
schangd82195a2013-03-13 18:41:24 -070012760/**
12761 @brief Process Set Tx Power Request function (called when Main
12762 FSM allows it)
12763
12764 @param pWDICtx: pointer to the WLAN DAL context
12765 pEventData: pointer to the event information structure
12766
12767 @see
12768 @return Result of the function call
12769*/
12770WDI_Status WDI_ProcessSetTxPowerReq
12771(
12772 WDI_ControlBlockType* pWDICtx,
12773 WDI_EventInfoType* pEventData
12774)
12775{
12776 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12777 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12778 wpt_uint8* pSendBuffer = NULL;
12779 wpt_uint16 usDataOffset = 0;
12780 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012781 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12783
12784 /*-------------------------------------------------------------------------
12785 Sanity check
12786 -------------------------------------------------------------------------*/
12787 if (( NULL == pEventData ) ||
12788 ( NULL == pEventData->pEventData ) ||
12789 ( NULL == pEventData->pCBfnc ))
12790 {
12791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12792 "%s: Invalid parameters", __func__);
12793 WDI_ASSERT(0);
12794 return WDI_STATUS_E_FAILURE;
12795 }
12796
12797 pwdiSetTxPowerParams =
12798 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12799 wdiSetTxPowerRspCb =
12800 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12801
12802 /*-----------------------------------------------------------------------
12803 Get message buffer
12804 -----------------------------------------------------------------------*/
12805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12806 sizeof(tSetTxPwrReqParams),
12807 &pSendBuffer, &usDataOffset, &usSendSize))||
12808 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12809 )))
12810 {
12811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012812 "Unable to get Set Max Tx Power req %p %p %p",
schangd82195a2013-03-13 18:41:24 -070012813 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12814 WDI_ASSERT(0);
12815 return WDI_STATUS_E_FAILURE;
12816 }
12817
Leo Changa37e2a92013-03-25 17:39:58 -070012818 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12819 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12820 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012821
12822 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12823 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12824
12825 /*-------------------------------------------------------------------------
12826 Send Set Tx Power Request to HAL
12827 -------------------------------------------------------------------------*/
12828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12829 wdiSetTxPowerRspCb, pEventData->pUserData,
12830 WDI_SET_TX_POWER_RESP);
12831}
Jeff Johnson295189b2012-06-20 16:38:30 -070012832
12833/**
12834 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12835 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012836
12837 @param pWDICtx: pointer to the WLAN DAL context
12838 pEventData: pointer to the event information structure
12839
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 @see
12841 @return Result of the function call
12842*/
12843WDI_Status
12844WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012845(
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 WDI_ControlBlockType* pWDICtx,
12847 WDI_EventInfoType* pEventData
12848)
12849{
12850 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12851 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 wpt_uint16 usDataOffset = 0;
12854 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12857
12858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 -------------------------------------------------------------------------*/
12861 if (( NULL == pEventData ) ||
12862 ( NULL == pEventData->pEventData) ||
12863 ( NULL == pEventData->pCBfnc))
12864 {
12865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 }
12870
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12875 /*-----------------------------------------------------------------------
12876 Get message buffer
12877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12879 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 sizeof(halSetP2PGONOAParams),
12881 &pSendBuffer, &usDataOffset, &usSendSize))||
12882 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12883 {
12884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012885 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 }
12890
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12895 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012897 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12904
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 wpalMemoryCopy( pSendBuffer+usDataOffset,
12906 &halSetP2PGONOAParams,
12907 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012908
12909 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012911
12912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12916 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12917 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012918}/*WDI_ProcessP2PGONOAReq*/
12919
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012920#ifdef FEATURE_WLAN_TDLS
12921
12922/**
12923 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12924 allows it)
12925
12926 @param pWDICtx: pointer to the WLAN DAL context
12927 pEventData: pointer to the event information structure
12928
12929 @see
12930 @return Result of the function call
12931*/
12932WDI_Status
12933WDI_ProcessTdlsLinkEstablishReq
12934(
12935 WDI_ControlBlockType* pWDICtx,
12936 WDI_EventInfoType* pEventData
12937)
12938{
12939 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12940 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12941 wpt_uint8* pSendBuffer = NULL;
12942 wpt_uint16 usDataOffset = 0;
12943 wpt_uint16 usSendSize = 0;
12944
12945 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12947
12948 /*-------------------------------------------------------------------------
12949 Sanity check
12950 -------------------------------------------------------------------------*/
12951 if (( NULL == pEventData ) ||
12952 ( NULL == pEventData->pEventData) ||
12953 ( NULL == pEventData->pCBfnc))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12956 "%s: Invalid parameters", __func__);
12957 WDI_ASSERT(0);
12958 return WDI_STATUS_E_FAILURE;
12959 }
12960 pwdiTDLSLinkEstablishReqParams =
12961 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12962 wdiTDLSLinkEstablishReqRspCb =
12963 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12964
12965
12966 /*-----------------------------------------------------------------------
12967 Get message buffer
12968 -----------------------------------------------------------------------*/
12969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12970 WDI_TDLS_LINK_ESTABLISH_REQ,
12971 sizeof(halSetTDLSLinkEstablishParams),
12972 &pSendBuffer, &usDataOffset, &usSendSize))||
12973 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12974 {
12975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012976 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012977 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12978 WDI_ASSERT(0);
12979 return WDI_STATUS_E_FAILURE;
12980 }
12981
12982 halSetTDLSLinkEstablishParams.staIdx =
12983 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12984 halSetTDLSLinkEstablishParams.bIsResponder =
12985 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12986 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12987 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12988 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12989 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12990 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12991 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12992 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12993 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12994 halSetTDLSLinkEstablishParams.aAck = 0;
12995 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12996 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12997 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12998
12999 wpalMemoryCopy( pSendBuffer+usDataOffset,
13000 &halSetTDLSLinkEstablishParams,
13001 sizeof(halSetTDLSLinkEstablishParams));
13002
13003 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13004 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13005
13006 /*-------------------------------------------------------------------------
13007 Send Update Probe Resp Template Request to HAL
13008 -------------------------------------------------------------------------*/
13009 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13010 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13011 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13012 return 0;
13013}/*WDI_ProcessTdlsLinkEstablishReq*/
13014
13015
13016#endif
13017
Jeff Johnson295189b2012-06-20 16:38:30 -070013018
13019
13020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 @param None
13024
13025 @see
13026 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013027*/
13028void
13029WDI_SetPowerStateCb
13030(
13031 wpt_status status,
13032 unsigned int dxePhyAddr,
13033 void *pContext
13034)
13035{
13036 wpt_status wptStatus;
13037 WDI_ControlBlockType *pCB = NULL;
13038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13039 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13040 {
13041 //it shouldn't happen, put an error msg
13042 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 /*
13044 * Trigger the event to bring the Enter BMPS req function to come
13045 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013046*/
13047 if( NULL != pContext )
13048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 }
13051 else
13052 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013053 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 pCB = &gWDICb;
13055 }
13056 pCB->dxePhyAddr = dxePhyAddr;
13057 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13058 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13059 {
13060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13061 "Failed to set an event");
13062
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 }
13065 return;
13066}
13067
13068
13069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013072
13073 @param pWDICtx: pointer to the WLAN DAL context
13074 pEventData: pointer to the event information structure
13075
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 @see
13077 @return Result of the function call
13078*/
13079WDI_Status
13080WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013081(
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 WDI_ControlBlockType* pWDICtx,
13083 WDI_EventInfoType* pEventData
13084)
13085{
Jeff Johnson43971f52012-07-17 12:26:56 -070013086 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 wpt_uint16 usDataOffset = 0;
13090 wpt_uint16 usSendSize = 0;
13091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13092
13093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 -------------------------------------------------------------------------*/
13096 if (( NULL == pEventData ) ||
13097 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)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_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 0,
13111 &pSendBuffer, &usDataOffset, &usSendSize))||
13112 ( usSendSize < (usDataOffset )))
13113 {
13114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013115 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 pEventData, wdiEnterImpsRspCb);
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 IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013133 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13134 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013136 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013137 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013138 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013139 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013140
13141 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013142 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013143 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013144 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13145 WDI_SET_POWER_STATE_TIMEOUT);
13146 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 {
13148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13149 "WDI Init failed to wait on an event");
13150
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013152 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 }
13154
13155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13159 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013160
13161fail:
13162 // Release the message buffer so we don't leak
13163 wpalMemoryFree(pSendBuffer);
13164
13165failRequest:
13166 //WDA should have failure check to avoid the memory leak
13167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013168}/*WDI_ProcessEnterImpsReq*/
13169
13170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013173
13174 @param pWDICtx: pointer to the WLAN DAL context
13175 pEventData: pointer to the event information structure
13176
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 @see
13178 @return Result of the function call
13179*/
13180WDI_Status
13181WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013182(
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 WDI_ControlBlockType* pWDICtx,
13184 WDI_EventInfoType* pEventData
13185)
13186{
13187 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 wpt_uint16 usDataOffset = 0;
13190 wpt_uint16 usSendSize = 0;
13191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13192
13193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 -------------------------------------------------------------------------*/
13196 if (( NULL == pEventData ) ||
13197 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13198 {
13199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 }
13204
13205 /*-----------------------------------------------------------------------
13206 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 0,
13211 &pSendBuffer, &usDataOffset, &usSendSize))||
13212 ( usSendSize < (usDataOffset )))
13213 {
13214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013215 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 pEventData, wdiExitImpsRspCb);
13217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 }
13220
13221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13225 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013226}/*WDI_ProcessExitImpsReq*/
13227
13228/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013231
13232 @param pWDICtx: pointer to the WLAN DAL context
13233 pEventData: pointer to the event information structure
13234
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 @see
13236 @return Result of the function call
13237*/
13238WDI_Status
13239WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013240(
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 WDI_ControlBlockType* pWDICtx,
13242 WDI_EventInfoType* pEventData
13243)
13244{
13245 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13246 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 wpt_uint16 usDataOffset = 0;
13249 wpt_uint16 usSendSize = 0;
13250 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013251 wpt_status wptStatus;
13252
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13254
13255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 -------------------------------------------------------------------------*/
13258 if (( NULL == pEventData ) ||
13259 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13260 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13261 {
13262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013265 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 }
13267
13268 /*-----------------------------------------------------------------------
13269 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 sizeof(enterBmpsReq),
13274 &pSendBuffer, &usDataOffset, &usSendSize))||
13275 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13276 {
13277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013278 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13280 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013281 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 }
13283
13284 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013285 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13286 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 {
13288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13289 "WDI Init failed to reset an event");
13290
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013292 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 }
13294
13295 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013296 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13297 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13298 {
13299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013300 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013301 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013302 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013303 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013304
13305/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013308 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13309 WDI_SET_POWER_STATE_TIMEOUT);
13310 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 {
13312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13313 "WDI Init failed to wait on an event");
13314
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013316 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 }
13318
13319 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13320
13321 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13322 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13323 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13324 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13325
13326 // For CCX and 11R Roaming
13327 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13328 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13329 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13330
13331 wpalMemoryCopy( pSendBuffer+usDataOffset,
13332 &enterBmpsReq,
13333 sizeof(enterBmpsReq));
13334
13335 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013337
13338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13342 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013343
13344fail:
13345 // Release the message buffer so we don't leak
13346 wpalMemoryFree(pSendBuffer);
13347
13348failRequest:
13349 //WDA should have failure check to avoid the memory leak
13350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351}/*WDI_ProcessEnterBmpsReq*/
13352
13353/**
13354 @brief Process Exit BMPS Request function (called when Main FSM
13355 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013356
13357 @param pWDICtx: pointer to the WLAN DAL context
13358 pEventData: pointer to the event information structure
13359
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 @see
13361 @return Result of the function call
13362*/
13363WDI_Status
13364WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013365(
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 WDI_ControlBlockType* pWDICtx,
13367 WDI_EventInfoType* pEventData
13368)
13369{
13370 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13371 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 wpt_uint16 usDataOffset = 0;
13374 wpt_uint16 usSendSize = 0;
13375 tHalExitBmpsReqParams exitBmpsReq;
13376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13377
13378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 -------------------------------------------------------------------------*/
13381 if (( NULL == pEventData ) ||
13382 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13383 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13384 {
13385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 }
13390
13391 /*-----------------------------------------------------------------------
13392 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 sizeof(exitBmpsReq),
13397 &pSendBuffer, &usDataOffset, &usSendSize))||
13398 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13399 {
13400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013401 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 }
13406 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13407
Jeff Johnsone7245742012-09-05 17:12:55 -070013408 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13409
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 wpalMemoryCopy( pSendBuffer+usDataOffset,
13411 &exitBmpsReq,
13412 sizeof(exitBmpsReq));
13413
13414 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013416
13417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13421 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013422}/*WDI_ProcessExitBmpsReq*/
13423
13424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013427
13428 @param pWDICtx: pointer to the WLAN DAL context
13429 pEventData: pointer to the event information structure
13430
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 @see
13432 @return Result of the function call
13433*/
13434WDI_Status
13435WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013436(
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 WDI_ControlBlockType* pWDICtx,
13438 WDI_EventInfoType* pEventData
13439)
13440{
13441 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13442 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 wpt_uint16 usDataOffset = 0;
13445 wpt_uint16 usSendSize = 0;
13446 tUapsdReqParams enterUapsdReq;
13447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13448
13449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 -------------------------------------------------------------------------*/
13452 if (( NULL == pEventData ) ||
13453 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13454 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13455 {
13456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013457 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 }
13461
13462 /*-----------------------------------------------------------------------
13463 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 sizeof(enterUapsdReq),
13468 &pSendBuffer, &usDataOffset, &usSendSize))||
13469 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13470 {
13471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013472 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 }
13477
13478 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13479 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13480 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13481 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13482 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13483 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13484 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13485 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013487
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 wpalMemoryCopy( pSendBuffer+usDataOffset,
13489 &enterUapsdReq,
13490 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013491
13492 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013494
13495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13499 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013500}/*WDI_ProcessEnterUapsdReq*/
13501
13502/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013503 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013505
13506 @param pWDICtx: pointer to the WLAN DAL context
13507 pEventData: pointer to the event information structure
13508
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 @see
13510 @return Result of the function call
13511*/
13512WDI_Status
13513WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013514(
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 WDI_ControlBlockType* pWDICtx,
13516 WDI_EventInfoType* pEventData
13517)
13518{
13519 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013520 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 wpt_uint16 usDataOffset = 0;
13522 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013523 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13524 wpt_uint8 bssIdx = 0;
13525
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13527
13528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 -------------------------------------------------------------------------*/
13531 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013532 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13534 {
13535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
13541 /*-----------------------------------------------------------------------
13542 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013546 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013548 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 {
13550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013551 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 pEventData, wdiExitUapsdRspCb);
13553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013555 }
13556
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013557 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13558
13559 wpalMemoryCopy( pSendBuffer+usDataOffset,
13560 &bssIdx,
13561 sizeof(wpt_uint8));
13562
13563 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13564 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13565
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013569 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13570 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013571}/*WDI_ProcessExitUapsdReq*/
13572
13573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013574 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013575 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013576
13577 @param pWDICtx: pointer to the WLAN DAL context
13578 pEventData: pointer to the event information structure
13579
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 @see
13581 @return Result of the function call
13582*/
13583WDI_Status
13584WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013585(
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 WDI_ControlBlockType* pWDICtx,
13587 WDI_EventInfoType* pEventData
13588)
13589{
13590 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13591 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 wpt_uint16 usDataOffset = 0;
13594 wpt_uint16 usSendSize = 0;
13595 tUapsdInfo uapsdAcParamsReq;
13596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13597
13598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 -------------------------------------------------------------------------*/
13601 if (( NULL == pEventData ) ||
13602 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13603 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13604 {
13605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013606 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 }
13610
13611 /*-----------------------------------------------------------------------
13612 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 sizeof(uapsdAcParamsReq),
13617 &pSendBuffer, &usDataOffset, &usSendSize))||
13618 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13619 {
13620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013621 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 }
13626
13627 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13628 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13629 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13630 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13631 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13632 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13633
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 wpalMemoryCopy( pSendBuffer+usDataOffset,
13635 &uapsdAcParamsReq,
13636 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013637
13638 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013640
13641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13645 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013646}/*WDI_ProcessSetUapsdAcParamsReq*/
13647
13648/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013649 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013650 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013651
13652 @param pWDICtx: pointer to the WLAN DAL context
13653 pEventData: pointer to the event information structure
13654
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 @see
13656 @return Result of the function call
13657*/
13658WDI_Status
13659WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013660(
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 WDI_ControlBlockType* pWDICtx,
13662 WDI_EventInfoType* pEventData
13663)
13664{
13665 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13666 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 wpt_uint16 usDataOffset = 0;
13669 wpt_uint16 usSendSize = 0;
13670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13671
13672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 -------------------------------------------------------------------------*/
13675 if (( NULL == pEventData ) ||
13676 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13677 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13678 {
13679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 }
13684
13685 /*-----------------------------------------------------------------------
13686 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13691 &pSendBuffer, &usDataOffset, &usSendSize))||
13692 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13693 {
13694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013695 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 }
13700
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 wpalMemoryCopy( pSendBuffer+usDataOffset,
13702 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13703 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013704
13705 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013707
13708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013711 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13712 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013713}/*WDI_ProcessUpdateUapsdParamsReq*/
13714
13715/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013718
13719 @param pWDICtx: pointer to the WLAN DAL context
13720 pEventData: pointer to the event information structure
13721
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 @see
13723 @return Result of the function call
13724*/
13725WDI_Status
13726WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013727(
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 WDI_ControlBlockType* pWDICtx,
13729 WDI_EventInfoType* pEventData
13730)
13731{
13732 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13733 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 wpt_uint16 usDataOffset = 0;
13736 wpt_uint16 usSendSize = 0;
13737 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13738
13739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13740
13741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 -------------------------------------------------------------------------*/
13744 if (( NULL == pEventData ) ||
13745 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13746 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13747 {
13748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 }
13753
13754 /*-----------------------------------------------------------------------
13755 Get message buffer
13756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 sizeof(halRxpFilterParams),
13759 &pSendBuffer, &usDataOffset, &usSendSize))||
13760 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13761 {
13762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013763 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 }
13768
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13773
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 wpalMemoryCopy( pSendBuffer+usDataOffset,
13775 &halRxpFilterParams,
13776 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013777
13778 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013780
13781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013784 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13785 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013786}/*WDI_ProcessConfigureRxpFilterReq*/
13787
13788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013791
13792 @param pWDICtx: pointer to the WLAN DAL context
13793 pEventData: pointer to the event information structure
13794
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 @see
13796 @return Result of the function call
13797*/
13798WDI_Status
13799WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013800(
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 WDI_ControlBlockType* pWDICtx,
13802 WDI_EventInfoType* pEventData
13803)
13804{
13805 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13806 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013807 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013808 wpt_uint16 usDataOffset = 0;
13809 wpt_uint16 usSendSize = 0;
13810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13811
13812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 -------------------------------------------------------------------------*/
13815 if (( NULL == pEventData ) ||
13816 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13817 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13818 {
13819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 }
13824
13825 /*-----------------------------------------------------------------------
13826 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13831 &pSendBuffer, &usDataOffset, &usSendSize))||
13832 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13833 {
13834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013835 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 }
13840
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 wpalMemoryCopy( pSendBuffer+usDataOffset,
13842 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13843 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13844 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13845 &pwdiBeaconFilterParams->aFilters[0],
13846 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013847
13848 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013850
13851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13855 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013856}/*WDI_ProcessSetBeaconFilterReq*/
13857
13858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013861
13862 @param pWDICtx: pointer to the WLAN DAL context
13863 pEventData: pointer to the event information structure
13864
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 @see
13866 @return Result of the function call
13867*/
13868WDI_Status
13869WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013870(
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 WDI_ControlBlockType* pWDICtx,
13872 WDI_EventInfoType* pEventData
13873)
13874{
13875 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13876 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013878 wpt_uint16 usDataOffset = 0;
13879 wpt_uint16 usSendSize = 0;
13880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13881
13882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 -------------------------------------------------------------------------*/
13885 if (( NULL == pEventData ) ||
13886 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13887 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13888 {
13889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013893 }
13894
13895 /*-----------------------------------------------------------------------
13896 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013897 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013899 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013900 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13901 &pSendBuffer, &usDataOffset, &usSendSize))||
13902 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13903 {
13904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013905 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 }
13910
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 wpalMemoryCopy( pSendBuffer+usDataOffset,
13912 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13913 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013914
13915 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013917
13918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13922 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013923}
13924
13925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013928
13929 @param pWDICtx: pointer to the WLAN DAL context
13930 pEventData: pointer to the event information structure
13931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 @see
13933 @return Result of the function call
13934*/
13935WDI_Status
13936WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013937(
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 WDI_ControlBlockType* pWDICtx,
13939 WDI_EventInfoType* pEventData
13940)
13941{
13942 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13943 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 wpt_uint16 usDataOffset = 0;
13946 wpt_uint16 usSendSize = 0;
13947 tHalRSSIThresholds rssiThresholdsReq;
13948 WDI_Status ret_status = 0;
13949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13950
13951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 -------------------------------------------------------------------------*/
13954 if (( NULL == pEventData ) ||
13955 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13956 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13957 {
13958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 }
13963
13964 /*-----------------------------------------------------------------------
13965 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 sizeof(rssiThresholdsReq),
13970 &pSendBuffer, &usDataOffset, &usSendSize))||
13971 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13972 {
13973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013974 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 }
13979
Jeff Johnsone7245742012-09-05 17:12:55 -070013980 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013986 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013999 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14000
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 wpalMemoryCopy( pSendBuffer+usDataOffset,
14002 &rssiThresholdsReq,
14003 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014004
14005 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007
14008 /*-------------------------------------------------------------------------
14009 Send Set threshold req to HAL
14010 -------------------------------------------------------------------------*/
14011 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14012 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14013 {
14014 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14015 // req. Then as a result of processing the threshold cross ind, we trigger
14016 // a Set threshold req, then we need to indicate to WDI that it needs to
14017 // go to busy state as a result of the indication as we sent a req in the
14018 // same WDI context.
14019 // Hence expected state transition is to busy.
14020 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14021 }
14022
14023 return ret_status;
14024}
14025
14026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 @brief Process set RSSI thresholds 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_ProcessHostOffloadReq
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_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14044 WDI_HostOffloadCb wdiHostOffloadCb = 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 tHalHostOffloadReq hostOffloadParams;
14049 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014050 wpt_uint8 ucCurrentBSSSesIdx = 0;
14051 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014052
14053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14054
14055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 -------------------------------------------------------------------------*/
14058 if (( NULL == pEventData ) ||
14059 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14060 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14061 {
14062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014065 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 }
14067
14068 /*-----------------------------------------------------------------------
14069 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014070 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14074 &pSendBuffer, &usDataOffset, &usSendSize))||
14075 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14076 {
14077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014078 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14080 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014081 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 }
14083
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014084 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14085 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14086 &pBSSSes);
14087 if ( NULL == pBSSSes )
14088 {
14089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053014090 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14091 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014092 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014093 }
14094
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14096 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014097
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14099 {
14100 // ARP Offload
14101 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14102 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14103 4);
14104 }
14105 else
14106 {
14107 // NS Offload
14108 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14109 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14110 16);
14111
14112#ifdef WLAN_NS_OFFLOAD
14113 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14114 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14115 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14116 16);
14117 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14118 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14119 16);
14120 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14121 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14122 16);
14123 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14124 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14125 16);
14126 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14127 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14128 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053014129 nsOffloadParams.srcIPv6AddrValid =
14130 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14131
14132 nsOffloadParams.targetIPv6Addr1Valid =
14133 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14134
14135 nsOffloadParams.targetIPv6Addr2Valid =
14136 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14137
14138 nsOffloadParams.slotIndex =
14139 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014140
Jeff Johnson295189b2012-06-20 16:38:30 -070014141#endif // WLAN_NS_OFFLOAD
14142 }
14143
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014144 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14145
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 // copy hostOffloadParams into pSendBuffer
14147 wpalMemoryCopy( pSendBuffer+usDataOffset,
14148 &hostOffloadParams,
14149 sizeof(hostOffloadParams));
14150
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014151 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014153 // copy nsOffloadParams into pSendBuffer
14154 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 &nsOffloadParams,
14156 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014157 }
14158 else
14159 {
14160#ifdef WLAN_NS_OFFLOAD
14161 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14162 {
14163 // copy nsOffloadParams into pSendBuffer
14164 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14165 &nsOffloadParams,
14166 sizeof(nsOffloadParams));
14167 }
14168#endif
14169 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014170
14171 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014173
14174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14178 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014179
14180fail:
14181 // Release the message buffer so we don't leak
14182 wpalMemoryFree(pSendBuffer);
14183
14184failRequest:
14185 //WDA should have failure check to avoid the memory leak
14186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014187}/*WDI_ProcessHostOffloadReq*/
14188
14189/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014192
14193 @param pWDICtx: pointer to the WLAN DAL context
14194 pEventData: pointer to the event information structure
14195
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 @see
14197 @return Result of the function call
14198*/
14199WDI_Status
14200WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014201(
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 WDI_ControlBlockType* pWDICtx,
14203 WDI_EventInfoType* pEventData
14204)
14205{
14206 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14207 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 wpt_uint16 usDataOffset = 0;
14210 wpt_uint16 usSendSize = 0;
14211 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014212 wpt_uint8 ucCurrentBSSSesIdx = 0;
14213 WDI_BSSSessionType* pBSSSes = NULL;
14214
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14216
14217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 -------------------------------------------------------------------------*/
14220 if (( NULL == pEventData ) ||
14221 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14222 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14223 {
14224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14225 "Invalid parameters in Keep Alive req");
14226 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014227 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 }
14229
14230 /*-----------------------------------------------------------------------
14231 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 sizeof(keepAliveReq),
14236 &pSendBuffer, &usDataOffset, &usSendSize))||
14237 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14238 {
14239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014240 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14242 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014243 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 }
14245
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014246 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14247 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14248 &pBSSSes);
14249 if ( NULL == pBSSSes )
14250 {
14251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014252 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014253 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014254 }
14255
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14257 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14258
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014259 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014260
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14262 {
14263 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14264 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14265 HAL_IPV4_ADDR_LEN);
14266 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14267 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014268 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 wpalMemoryCopy(keepAliveReq.destMacAddr,
14270 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14271 HAL_MAC_ADDR_LEN);
14272 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014273
14274 wpalMemoryCopy( pSendBuffer+usDataOffset,
14275 &keepAliveReq,
14276 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014277
14278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14279 "Process keep alive req %d",sizeof(keepAliveReq));
14280
14281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14282 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14283
14284 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286
14287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14288 "Sending keep alive req to HAL");
14289
14290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14294 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014295
14296fail:
14297 // Release the message buffer so we don't leak
14298 wpalMemoryFree(pSendBuffer);
14299
14300failRequest:
14301 //WDA should have failure check to avoid the memory leak
14302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303}/*WDI_ProcessKeepAliveReq*/
14304
14305
14306/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014309
14310 @param pWDICtx: pointer to the WLAN DAL context
14311 pEventData: pointer to the event information structure
14312
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 @see
14314 @return Result of the function call
14315*/
14316WDI_Status
14317WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014318(
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 WDI_ControlBlockType* pWDICtx,
14320 WDI_EventInfoType* pEventData
14321)
14322{
14323 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14324 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 wpt_uint16 usDataOffset = 0;
14327 wpt_uint16 usSendSize = 0;
14328 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014329 wpt_uint8 ucCurrentBSSSesIdx = 0;
14330 WDI_BSSSessionType* pBSSSes = NULL;
14331
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14333
14334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014336 -------------------------------------------------------------------------*/
14337 if (( NULL == pEventData ) ||
14338 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14339 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14340 {
14341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014344 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 }
14346
14347 /*-----------------------------------------------------------------------
14348 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 sizeof(wowlAddBcPtrnReq),
14353 &pSendBuffer, &usDataOffset, &usSendSize))||
14354 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14355 {
14356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014357 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14359 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014360 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 }
14362
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014363 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14364 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14365 &pBSSSes);
14366 if ( NULL == pBSSSes )
14367 {
14368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014369 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014370 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014371 }
14372
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14381
14382 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14383 {
14384 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14385 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14387 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14388 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14389 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14390 }
14391 else
14392 {
14393 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14394 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14395 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14396 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14397 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14398 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14399
14400 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14401 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14402 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14403 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14404 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14405 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14406 }
14407
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014408 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14409
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 wpalMemoryCopy( pSendBuffer+usDataOffset,
14411 &wowlAddBcPtrnReq,
14412 sizeof(wowlAddBcPtrnReq));
14413
14414 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014416
14417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14421 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014422fail:
14423 // Release the message buffer so we don't leak
14424 wpalMemoryFree(pSendBuffer);
14425
14426failRequest:
14427 //WDA should have failure check to avoid the memory leak
14428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014429}/*WDI_ProcessWowlAddBcPtrnReq*/
14430
14431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014432 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014434
14435 @param pWDICtx: pointer to the WLAN DAL context
14436 pEventData: pointer to the event information structure
14437
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 @see
14439 @return Result of the function call
14440*/
14441WDI_Status
14442WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014443(
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 WDI_ControlBlockType* pWDICtx,
14445 WDI_EventInfoType* pEventData
14446)
14447{
14448 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14449 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 wpt_uint16 usDataOffset = 0;
14452 wpt_uint16 usSendSize = 0;
14453 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014454 wpt_uint8 ucCurrentBSSSesIdx = 0;
14455 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14457
14458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 -------------------------------------------------------------------------*/
14461 if (( NULL == pEventData ) ||
14462 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14463 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14464 {
14465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014468 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 }
14470
14471 /*-----------------------------------------------------------------------
14472 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 sizeof(wowlDelBcPtrnReq),
14477 &pSendBuffer, &usDataOffset, &usSendSize))||
14478 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14479 {
14480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014481 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14483 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014484 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 }
14486
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014487 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14488 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14489 &pBSSSes);
14490 if ( NULL == pBSSSes )
14491 {
14492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014493 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014494 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014495 }
14496
Jeff Johnsone7245742012-09-05 17:12:55 -070014497 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014499
14500 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14501
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 wpalMemoryCopy( pSendBuffer+usDataOffset,
14503 &wowlDelBcPtrnReq,
14504 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014505
14506 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014507 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014508
14509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14513 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014514
14515fail:
14516 // Release the message buffer so we don't leak
14517 wpalMemoryFree(pSendBuffer);
14518
14519failRequest:
14520 //WDA should have failure check to avoid the memory leak
14521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014522}/*WDI_ProcessWowlDelBcPtrnReq*/
14523
14524/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014527
14528 @param pWDICtx: pointer to the WLAN DAL context
14529 pEventData: pointer to the event information structure
14530
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 @see
14532 @return Result of the function call
14533*/
14534WDI_Status
14535WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014536(
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 WDI_ControlBlockType* pWDICtx,
14538 WDI_EventInfoType* pEventData
14539)
14540{
14541 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14542 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 wpt_uint16 usDataOffset = 0;
14545 wpt_uint16 usSendSize = 0;
14546 tHalWowlEnterParams wowlEnterReq;
14547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14548
14549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -------------------------------------------------------------------------*/
14552 if (( NULL == pEventData ) ||
14553 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14554 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14555 {
14556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 }
14561
14562 /*-----------------------------------------------------------------------
14563 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 sizeof(wowlEnterReq),
14568 &pSendBuffer, &usDataOffset, &usSendSize))||
14569 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14570 {
14571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014572 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 }
14577
Kumar Anand21a26022013-07-22 14:35:34 -070014578 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14579
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14596
14597#ifdef WLAN_WAKEUP_EVENTS
14598 wowlEnterReq.ucWoWEAPIDRequestEnable =
14599 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14600
14601 wowlEnterReq.ucWoWEAPOL4WayEnable =
14602 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14603
14604 wowlEnterReq.ucWowNetScanOffloadMatch =
14605 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14606
14607 wowlEnterReq.ucWowGTKRekeyError =
14608 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14609
14610 wowlEnterReq.ucWoWBSSConnLoss =
14611 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14612#endif // WLAN_WAKEUP_EVENTS
14613
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014614 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14615
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14617 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14618 sizeof(tSirMacAddr));
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 wpalMemoryCopy( pSendBuffer+usDataOffset,
14621 &wowlEnterReq,
14622 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014626
14627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14631 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014632}/*WDI_ProcessWowlEnterReq*/
14633
14634/**
14635 @brief Process Wowl exit Request function (called when Main FSM
14636 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014637
14638 @param pWDICtx: pointer to the WLAN DAL context
14639 pEventData: pointer to the event information structure
14640
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 @see
14642 @return Result of the function call
14643*/
14644WDI_Status
14645WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014646(
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 WDI_ControlBlockType* pWDICtx,
14648 WDI_EventInfoType* pEventData
14649)
14650{
14651 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014652 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 wpt_uint16 usDataOffset = 0;
14655 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014656 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14658
14659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 -------------------------------------------------------------------------*/
14662 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014663 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14665 {
14666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 }
14671
14672 /*-----------------------------------------------------------------------
14673 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014677 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014679 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 {
14681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014682 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 pEventData, wdiWowlExitCb);
14684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 }
14687
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014688 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14689
14690 wpalMemoryCopy( pSendBuffer+usDataOffset,
14691 &wowlExitparams,
14692 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14697 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014698}/*WDI_ProcessWowlExitReq*/
14699
14700/**
14701 @brief Process Configure Apps Cpu Wakeup State Request function
14702 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014703
14704 @param pWDICtx: pointer to the WLAN DAL context
14705 pEventData: pointer to the event information structure
14706
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 @see
14708 @return Result of the function call
14709*/
14710WDI_Status
14711WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014712(
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 WDI_ControlBlockType* pWDICtx,
14714 WDI_EventInfoType* pEventData
14715)
14716{
14717 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14718 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 wpt_uint16 usDataOffset = 0;
14721 wpt_uint16 usSendSize = 0;
14722 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14724
14725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 -------------------------------------------------------------------------*/
14728 if (( NULL == pEventData ) ||
14729 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14730 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14731 {
14732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 }
14737
14738 /*-----------------------------------------------------------------------
14739 Get message buffer
14740 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 sizeof(halCfgAppsCpuWakeupStateReqParams),
14743 &pSendBuffer, &usDataOffset, &usSendSize))||
14744 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14745 {
14746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014747 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 }
14752
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14755
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 wpalMemoryCopy( pSendBuffer+usDataOffset,
14757 &halCfgAppsCpuWakeupStateReqParams,
14758 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014759
14760 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014762
14763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14767 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14768 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014769}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14770
14771#ifdef WLAN_FEATURE_VOWIFI_11R
14772/**
14773 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14774 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014775
14776 @param pWDICtx: pointer to the WLAN DAL context
14777 pEventData: pointer to the event information structure
14778
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 @see
14780 @return Result of the function call
14781*/
14782WDI_Status
14783WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014784(
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 WDI_ControlBlockType* pWDICtx,
14786 WDI_EventInfoType* pEventData
14787)
14788{
14789 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14790 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 wpt_uint16 usDataOffset = 0;
14795 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 wpt_macAddr macBSSID;
14798 tAggrAddTsReq halAggrAddTsReq;
14799 int i;
14800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14801
14802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 -------------------------------------------------------------------------*/
14805 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14806 ( NULL == pEventData->pCBfnc ))
14807 {
14808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 }
14813 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14814 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14815 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14816 /*-------------------------------------------------------------------------
14817 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 -------------------------------------------------------------------------*/
14820 wpalMutexAcquire(&pWDICtx->wptMutex);
14821
14822 /*------------------------------------------------------------------------
14823 Find the BSS for which the request is made and identify WDI session
14824 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14826 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 &macBSSID))
14828 {
14829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014830 "This station does not exist in the WDI Station Table %d",
14831 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 }
14835
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14837 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14840 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14841 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014842
14843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014846
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 /*------------------------------------------------------------------------
14848 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014849 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 ------------------------------------------------------------------------*/
14851 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14852 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14854 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14855 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014856
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014859 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014860 }
14861
14862 wpalMutexRelease(&pWDICtx->wptMutex);
14863 /*-----------------------------------------------------------------------
14864 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014868 sizeof(tAggrAddTsParams),
14869 &pSendBuffer, &usDataOffset, &usSendSize))||
14870 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14871 {
14872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014873 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 }
14878
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14883
14884 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14885 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014890 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14892 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014893 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14895 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14898 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14901 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14904 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14907 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14910 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14913 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918
14919
14920 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014948 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14950 }
14951
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 wpalMemoryCopy( pSendBuffer+usDataOffset,
14953 &halAggrAddTsReq,
14954 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014955
14956 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014957 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014958
14959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014965}/*WDI_ProcessAggrAddTSpecReq*/
14966#endif /* WLAN_FEATURE_VOWIFI_11R */
14967
14968/**
14969 @brief Process Shutdown Request function (called when Main FSM
14970 allows it)
14971
14972 @param pWDICtx: pointer to the WLAN DAL context
14973 pEventData: pointer to the event information structure
14974
14975 @see
14976 @return Result of the function call
14977*/
14978WDI_Status
14979WDI_ProcessShutdownReq
14980(
14981 WDI_ControlBlockType* pWDICtx,
14982 WDI_EventInfoType* pEventData
14983 )
14984{
14985 wpt_status wptStatus;
14986
14987
14988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14989
14990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 -------------------------------------------------------------------------*/
14993 if ( NULL == pEventData )
14994 {
14995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 WDI_ASSERT(0);
14998 return WDI_STATUS_E_FAILURE;
14999 }
15000
15001 wpalMutexAcquire(&pWDICtx->wptMutex);
15002
15003
15004 gWDIInitialized = eWLAN_PAL_FALSE;
15005 /*! TO DO: stop the data services */
15006 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15007 {
15008 /*Stop the STA Table !UT- check this logic again
15009 It is safer to do it here than on the response - because a stop is imminent*/
15010 WDI_STATableStop(pWDICtx);
15011
15012 /* Stop Transport Driver, DXE */
15013 WDTS_Stop(pWDICtx);
15014 }
15015
15016 /*Clear all pending request*/
15017 WDI_ClearPendingRequests(pWDICtx);
15018 /* Close Data transport*/
15019 /* FTM mode does not open Data Path */
15020 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15021 {
15022 WDTS_Close(pWDICtx);
15023 }
15024 /*Close the STA Table !UT- check this logic again*/
15025 WDI_STATableClose(pWDICtx);
15026 /*close the PAL */
15027 wptStatus = wpalClose(pWDICtx->pPALContext);
15028 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15029 {
15030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15031 "Failed to wpal Close %d", wptStatus);
15032 WDI_ASSERT(0);
15033 }
15034
15035 /*Transition back to init state*/
15036 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15037
15038 wpalMutexRelease(&pWDICtx->wptMutex);
15039
15040 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015042
15043
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015045}/*WDI_ProcessShutdownReq*/
15046
15047/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015049========================================================================*/
15050
15051/**
15052 @brief Process Start Response function (called when a response
15053 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015054
15055 @param pWDICtx: pointer to the WLAN DAL context
15056 pEventData: pointer to the event information structure
15057
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 @see
15059 @return Result of the function call
15060*/
15061WDI_Status
15062WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015063(
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 WDI_ControlBlockType* pWDICtx,
15065 WDI_EventInfoType* pEventData
15066)
15067{
15068 WDI_StartRspParamsType wdiRspParams;
15069 WDI_StartRspCb wdiStartRspCb = NULL;
15070
15071 tHalMacStartRspParams* startRspParams;
15072
15073#ifndef HAL_SELF_STA_PER_BSS
15074 WDI_AddStaParams wdiAddSTAParam = {0};
15075#endif
15076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15077
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -------------------------------------------------------------------------*/
15082 if (( NULL == pEventData ) ||
15083 ( NULL == pEventData->pEventData) ||
15084 ( NULL == wdiStartRspCb ))
15085 {
15086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 }
15091
15092 /*-------------------------------------------------------------------------
15093 Extract response and send it to UMAC
15094 -------------------------------------------------------------------------*/
15095 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15096 {
15097 // not enough data was received
15098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15099 "Invalid response length in Start Resp Expect %x Rcvd %x",
15100 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 }
15104
15105 /*-------------------------------------------------------------------------
15106 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 -------------------------------------------------------------------------*/
15109 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15110
15111 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15112 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15113 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15114 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15115 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15116 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15117 wdiRspParams.wlanReportedVersion.major =
15118 startRspParams->wcnssWlanVersion.major;
15119 wdiRspParams.wlanReportedVersion.minor =
15120 startRspParams->wcnssWlanVersion.minor;
15121 wdiRspParams.wlanReportedVersion.version =
15122 startRspParams->wcnssWlanVersion.version;
15123 wdiRspParams.wlanReportedVersion.revision =
15124 startRspParams->wcnssWlanVersion.revision;
15125 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15126 startRspParams->wcnssCrmVersionString,
15127 sizeof(wdiRspParams.wcnssSoftwareVersion));
15128 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15129 startRspParams->wcnssWlanVersionString,
15130 sizeof(wdiRspParams.wcnssHardwareVersion));
15131 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15132
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015133 /*Save the HAL Version*/
15134 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15135
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 wpalMutexAcquire(&pWDICtx->wptMutex);
15137 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15138 {
15139 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15140
15141 /*Cache the start response for further use*/
15142 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015143 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 sizeof(pWDICtx->wdiCachedStartRspParams));
15145
15146 }
15147 else
15148 {
15149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15150 "Failed to start device with status %s(%d)",
15151 WDI_getHALStatusMsgString(startRspParams->status),
15152 startRspParams->status);
15153
15154 /*Set the expected state transition to stopped - because the start has
15155 failed*/
15156 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15157
15158 wpalMutexRelease(&pWDICtx->wptMutex);
15159
15160 /*Notify UMAC*/
15161 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015162
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15164
15165 /*Although the response is an error - it was processed by our function
15166 so as far as the caller is concerned this is a succesful reponse processing*/
15167 return WDI_STATUS_SUCCESS;
15168 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015169
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 wpalMutexRelease(&pWDICtx->wptMutex);
15171
15172 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15173 {
15174 /* FTM mode does not need to execute below */
15175 /* Notify UMAC */
15176 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15177 return WDI_STATUS_SUCCESS;
15178 }
15179
15180 /* START the Data transport */
15181 WDTS_startTransport(pWDICtx);
15182
15183 /*Start the STA Table !- check this logic again*/
15184 WDI_STATableStart(pWDICtx);
15185
15186#ifndef HAL_SELF_STA_PER_BSS
15187 /* Store the Self STA Index */
15188 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15189
15190 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15191 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15192 WDI_MAC_ADDR_LEN);
15193
15194 /* At this point add the self-STA */
15195
15196 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15197 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15198 /*! TO DO: wdiAddSTAParam.dpuSig */
15199 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15200 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15201 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15202
15203 //all DPU indices are the same for self STA
15204 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15205 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015206 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15208 WDI_MAC_ADDR_LEN);
15209 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15210 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15211
15212 /* Note: Since we don't get an explicit config STA request for self STA, we
15213 add the self STA upon receiving the Start response message. But the
15214 self STA entry in the table is deleted when WDI gets an explicit delete STA
15215 request */
15216 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15217#endif
15218
15219 /*Notify UMAC*/
15220 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15221
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015223}/*WDI_ProcessStartRsp*/
15224
15225
15226/**
15227 @brief Process Stop Response function (called when a response
15228 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015229
15230 @param pWDICtx: pointer to the WLAN DAL context
15231 pEventData: pointer to the event information structure
15232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 @see
15234 @return Result of the function call
15235*/
15236WDI_Status
15237WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015238(
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 WDI_ControlBlockType* pWDICtx,
15240 WDI_EventInfoType* pEventData
15241)
15242{
15243 WDI_Status wdiStatus;
15244 WDI_StopRspCb wdiStopRspCb = NULL;
15245
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15248
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 -------------------------------------------------------------------------*/
15253 if (( NULL == pEventData ) ||
15254 ( NULL == pEventData->pEventData) ||
15255 ( NULL == wdiStopRspCb ))
15256 {
15257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 }
15262
15263 /*-------------------------------------------------------------------------
15264 Extract response and send it to UMAC
15265 -------------------------------------------------------------------------*/
15266 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15267 {
15268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015269 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 pEventData->uEventDataSize);
15271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 }
15274
15275 /*-------------------------------------------------------------------------
15276 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15280 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 sizeof(halMacStopRspMsg.stopRspParams));
15282
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015284
15285 wpalMutexAcquire(&pWDICtx->wptMutex);
15286
15287 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 --------------------------------------------------------------------------*/
15290 if ( WDI_STATUS_SUCCESS != wdiStatus )
15291 {
15292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15293 "Failed to stop the device with status %s (%d)",
15294 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15295 halMacStopRspMsg.stopRspParams.status);
15296
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15298
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015302
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15304
15305 /*Transition now as WDI may get preempted imediately after it sends
15306 up the Stop Response and it will not get to process the state transition
15307 from Main Rsp function*/
15308 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15309 wpalMutexRelease(&pWDICtx->wptMutex);
15310
15311 /*! TO DO: - STOP the Data transport */
15312
15313 /*Notify UMAC*/
15314 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15315
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015317}/*WDI_ProcessStopRsp*/
15318
15319/**
15320 @brief Process Close Rsp function (called when a response
15321 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015322
15323 @param pWDICtx: pointer to the WLAN DAL context
15324 pEventData: pointer to the event information structure
15325
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 @see
15327 @return Result of the function call
15328*/
15329WDI_Status
15330WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015331(
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 WDI_ControlBlockType* pWDICtx,
15333 WDI_EventInfoType* pEventData
15334)
15335{
15336 /*There is no close response comming from HAL - function just kept for
15337 simmetry */
15338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015340}/*WDI_ProcessCloseRsp*/
15341
15342
15343/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015345============================================================================*/
15346
15347/**
15348 @brief Process Init Scan Rsp function (called when a response
15349 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015350
15351 @param pWDICtx: pointer to the WLAN DAL context
15352 pEventData: pointer to the event information structure
15353
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 @see
15355 @return Result of the function call
15356*/
15357WDI_Status
15358WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015359(
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 WDI_ControlBlockType* pWDICtx,
15361 WDI_EventInfoType* pEventData
15362)
15363{
15364 WDI_Status wdiStatus;
15365 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015367 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15369
15370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 -------------------------------------------------------------------------*/
15373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15374 ( NULL == pEventData->pEventData))
15375 {
15376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 }
15381
15382 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15383 if( NULL == wdiInitScanRspCb)
15384 {
15385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015386 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 }
15390
15391 /*-------------------------------------------------------------------------
15392 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15396 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 sizeof(halInitScanRspMsg.initScanRspParams));
15398
Jeff Johnsone7245742012-09-05 17:12:55 -070015399 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015400
15401 if ( pWDICtx->bInBmps )
15402 {
15403 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015404 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15405 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080015407 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015408 WDI_ASSERT(0);
15409 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 }
15411
15412 /*Notify UMAC*/
15413 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15414
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416}/*WDI_ProcessInitScanRsp*/
15417
15418
15419/**
15420 @brief Process Start Scan Rsp function (called when a response
15421 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015422
15423 @param pWDICtx: pointer to the WLAN DAL context
15424 pEventData: pointer to the event information structure
15425
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 @see
15427 @return Result of the function call
15428*/
15429WDI_Status
15430WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015431(
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 WDI_ControlBlockType* pWDICtx,
15433 WDI_EventInfoType* pEventData
15434)
15435{
15436 WDI_StartScanRspParamsType wdiStartScanParams;
15437 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015438
15439 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15441
15442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 -------------------------------------------------------------------------*/
15445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15446 ( NULL == pEventData->pEventData))
15447 {
15448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 }
15453
15454 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15455 if( NULL == wdiStartScanRspCb)
15456 {
15457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015458 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 }
15462
15463 /*-------------------------------------------------------------------------
15464 Extract response and send it to UMAC
15465 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015466 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15467 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 sizeof(halStartScanRspMsg.startScanRspParams));
15469
15470 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15471 halStartScanRspMsg.startScanRspParams.status);
15472#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015476 halStartScanRspMsg.startScanRspParams.startTSF,
15477 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015478#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015479
15480 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15481 {
15482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15483 "Start scan failed with status %s (%d)",
15484 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15485 halStartScanRspMsg.startScanRspParams.status);
15486 /* send the status to UMAC, don't return from here*/
15487 }
15488
15489 /*Notify UMAC*/
15490 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15491
Jeff Johnsone7245742012-09-05 17:12:55 -070015492 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015493
15494}/*WDI_ProcessStartScanRsp*/
15495
15496
15497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015500
15501 @param pWDICtx: pointer to the WLAN DAL context
15502 pEventData: pointer to the event information structure
15503
Jeff Johnson295189b2012-06-20 16:38:30 -070015504 @see
15505 @return Result of the function call
15506*/
15507WDI_Status
15508WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015509(
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 WDI_ControlBlockType* pWDICtx,
15511 WDI_EventInfoType* pEventData
15512)
15513{
15514 WDI_Status wdiStatus;
15515 tHalEndScanRspMsg halEndScanRspMsg;
15516 WDI_EndScanRspCb wdiEndScanRspCb;
15517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15518
15519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 -------------------------------------------------------------------------*/
15522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15523 ( NULL == pEventData->pEventData))
15524 {
15525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015529 }
15530
15531 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15532
15533 /*-------------------------------------------------------------------------
15534 Extract response and send it to UMAC
15535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15537 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 sizeof(halEndScanRspMsg.endScanRspParams));
15539
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015541
15542 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15543 {
15544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15545 "End Scan failed with status %s (%d )",
15546 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15547 halEndScanRspMsg.endScanRspParams.status);
15548 /* send the status to UMAC, don't return from here*/
15549 }
15550
15551 /*Notify UMAC*/
15552 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15553
Jeff Johnsone7245742012-09-05 17:12:55 -070015554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015555}/*WDI_ProcessEndScanRsp*/
15556
15557
15558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015561
15562 @param pWDICtx: pointer to the WLAN DAL context
15563 pEventData: pointer to the event information structure
15564
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 @see
15566 @return Result of the function call
15567*/
15568WDI_Status
15569WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015570(
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 WDI_ControlBlockType* pWDICtx,
15572 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015573)
Jeff Johnson295189b2012-06-20 16:38:30 -070015574{
15575 WDI_Status wdiStatus;
15576 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015577
15578 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15580
15581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 -------------------------------------------------------------------------*/
15584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15585 ( NULL == pEventData->pEventData))
15586 {
15587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 }
15592
15593 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15594
15595 /*-------------------------------------------------------------------------
15596 Extract response and send it to UMAC
15597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15599 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15601
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015603
15604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 halFinishScanRspMsg.finishScanRspParams.status);
15607
15608 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15609 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15610 {
15611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15612 "Finish Scan failed with status %s (%d)",
15613 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15614 halFinishScanRspMsg.finishScanRspParams.status);
15615 /* send the status to UMAC, don't return from here*/
15616 }
15617
15618 /*Notify UMAC*/
15619 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15620
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015622}/*WDI_ProcessFinishScanRsp*/
15623
15624/**
15625 @brief Process Join Response function (called when a response
15626 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015627
15628 @param pWDICtx: pointer to the WLAN DAL context
15629 pEventData: pointer to the event information structure
15630
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 @see
15632 @return Result of the function call
15633*/
15634WDI_Status
15635WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015636(
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 WDI_ControlBlockType* pWDICtx,
15638 WDI_EventInfoType* pEventData
15639)
15640{
15641 WDI_Status wdiStatus;
15642 WDI_JoinRspCb wdiJoinRspCb;
15643 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015644
15645 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15647
15648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 -------------------------------------------------------------------------*/
15651 if (( NULL == pWDICtx ) ||
15652 ( NULL == pWDICtx->pfncRspCB ) ||
15653 ( NULL == pEventData ) ||
15654 ( NULL == pEventData->pEventData))
15655 {
15656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 }
15661
15662 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15663
15664 /*-------------------------------------------------------------------------
15665 Extract response and send it to UMAC
15666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15668 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 sizeof(halJoinRspMsg.joinRspParams));
15670
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015672
15673 wpalMutexAcquire(&pWDICtx->wptMutex);
15674
15675 /*-----------------------------------------------------------------------
15676 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15681 {
15682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15684 "association no longer in progress %d - mysterious HAL response",
15685 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015686
Jeff Johnsone7245742012-09-05 17:12:55 -070015687 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 }
15691
15692 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15693
15694 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 -----------------------------------------------------------------------*/
15697 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15698 {
15699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15700 "Join only allowed in Joining state - failure state is %d "
15701 "strange HAL response", pBSSSes->wdiAssocState);
15702
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15704
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 }
15708
15709
15710 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 -----------------------------------------------------------------------*/
15713 if ( WDI_STATUS_SUCCESS != wdiStatus )
15714 {
15715 /*Association was failed by HAL - remove session*/
15716 WDI_DeleteSession(pWDICtx, pBSSSes);
15717
15718 /*Association no longer in progress */
15719 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15720
15721 /*Association no longer in progress - prepare pending assoc for processing*/
15722 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015723
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 }
15725 else
15726 {
15727 /*Transition to state Joining - this may be redundant as we are supposed
15728 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 }
15731
15732 wpalMutexRelease(&pWDICtx->wptMutex);
15733
15734 /*Notify UMAC*/
15735 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15736
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015738}/*WDI_ProcessJoinRsp*/
15739
15740
15741/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015744
15745 @param pWDICtx: pointer to the WLAN DAL context
15746 pEventData: pointer to the event information structure
15747
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 @see
15749 @return Result of the function call
15750*/
15751WDI_Status
15752WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015753(
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 WDI_ControlBlockType* pWDICtx,
15755 WDI_EventInfoType* pEventData
15756)
15757{
15758 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15759 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 WDI_BSSSessionType* pBSSSes = NULL;
15762
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15765 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015766
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15768
15769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 -------------------------------------------------------------------------*/
15772 if (( NULL == pEventData ) ||
15773 ( NULL == pEventData->pEventData))
15774 {
15775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 }
15780
15781 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15782
15783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15787 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 sizeof(halConfigBssRspMsg.configBssRspParams));
15789
15790 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15791 halConfigBssRspMsg.configBssRspParams.status);
15792 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15793 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015794 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15796 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015797
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015799
15800 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015802
15803 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015805
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015807
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015809 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15811 #endif
15812 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15813 halConfigBssRspMsg.configBssRspParams.staMac,
15814 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015815
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 wpalMutexAcquire(&pWDICtx->wptMutex);
15817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15821 wdiConfigBSSParams.macBSSID,
15822 &pBSSSes);
15823
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 /*-----------------------------------------------------------------------
15825 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 -----------------------------------------------------------------------*/
15828 if ( NULL == pBSSSes )
15829 {
15830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15831 "Association sequence for this BSS does not yet exist "
15832 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015833
15834 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15835
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015839
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 /*Save data for this BSS*/
15841 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15842 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15853 pBSSSes->bcastStaIdx =
15854 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015855
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015857
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 /*-------------------------------------------------------------------------
15859 Add Peer STA
15860 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15863 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015864
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 wdiAddSTAParam.ucHTCapable =
15869 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15870 wdiAddSTAParam.ucStaType =
15871 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15872
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15875 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015877
15878 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15879 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15880 WDI_MAC_ADDR_LEN);
15881
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015895
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15897 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015898
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15900 /*-------------------------------------------------------------------------
15901 Add Broadcast STA only in AP mode
15902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015904 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 {
15906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15907 "Add BCAST STA to table for index: %d",
15908 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015909
15910 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015912
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15914 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15915 }
15916 wpalMutexRelease(&pWDICtx->wptMutex);
15917 }
15918 else
15919 {
15920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15921 "Config BSS RSP failed with status : %s(%d)",
15922 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 halConfigBssRspMsg.configBssRspParams.status);
15925
Jeff Johnsone7245742012-09-05 17:12:55 -070015926
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 /*Association was failed by HAL - remove session*/
15928 WDI_DeleteSession(pWDICtx, pBSSSes);
15929
15930 /*Association no longer in progress */
15931 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15932
15933 /*Association no longer in progress - prepare pending assoc for processing*/
15934 WDI_DequeueAssocRequest(pWDICtx);
15935
15936 }
15937
15938 /*Notify UMAC*/
15939 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942}/*WDI_ProcessConfigBSSRsp*/
15943
15944
15945/**
15946 @brief Process Del BSS Response function (called when a response
15947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015948
15949 @param pWDICtx: pointer to the WLAN DAL context
15950 pEventData: pointer to the event information structure
15951
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 @see
15953 @return Result of the function call
15954*/
15955WDI_Status
15956WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015957(
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 WDI_ControlBlockType* pWDICtx,
15959 WDI_EventInfoType* pEventData
15960)
15961{
15962 WDI_DelBSSRspParamsType wdiDelBSSParams;
15963 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 WDI_BSSSessionType* pBSSSes = NULL;
15966
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15969
15970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 -------------------------------------------------------------------------*/
15973 if (( NULL == pEventData ) ||
15974 ( NULL == pEventData->pEventData))
15975 {
15976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 }
15981
15982 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15983
15984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15988 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 sizeof(halDelBssRspMsg.deleteBssRspParams));
15990
15991
15992 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015993 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015994
15995 wpalMutexAcquire(&pWDICtx->wptMutex);
15996
15997 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16001 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16002 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016003
16004 /*-----------------------------------------------------------------------
16005 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 -----------------------------------------------------------------------*/
16008 if ( NULL == pBSSSes )
16009 {
16010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16011 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016012 "association no longer in progress - mysterious HAL response");
16013
16014 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16015
16016 wpalMutexRelease(&pWDICtx->wptMutex);
16017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016019
16020 /*Extract BSSID for the response to UMAC*/
16021 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16022 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16023
16024 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16025
16026 /*-----------------------------------------------------------------------
16027 The current session will be deleted
16028 -----------------------------------------------------------------------*/
16029 WDI_DeleteSession(pWDICtx, pBSSSes);
16030
16031
16032 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070016033 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16034 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016036 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016037 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016038
16039 /* Delete the STA's in this BSS */
16040 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16041
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 wpalMutexRelease(&pWDICtx->wptMutex);
16043
16044 /*Notify UMAC*/
16045 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16046
Jeff Johnsone7245742012-09-05 17:12:55 -070016047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016048}/*WDI_ProcessDelBSSRsp*/
16049
16050/**
16051 @brief Process Post Assoc Rsp function (called when a response
16052 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016053
16054 @param pWDICtx: pointer to the WLAN DAL context
16055 pEventData: pointer to the event information structure
16056
Jeff Johnson295189b2012-06-20 16:38:30 -070016057 @see
16058 @return Result of the function call
16059*/
16060WDI_Status
16061WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016062(
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 WDI_ControlBlockType* pWDICtx,
16064 WDI_EventInfoType* pEventData
16065)
16066{
16067 WDI_PostAssocRspParamsType wdiPostAssocParams;
16068 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16073
16074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 -------------------------------------------------------------------------*/
16077 if (( NULL == pEventData ) ||
16078 ( NULL == pEventData->pEventData))
16079 {
16080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 }
16085
16086 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16087
16088 /*-------------------------------------------------------------------------
16089 Extract response and send it to UMAC
16090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16092 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 sizeof(halPostAssocRspMsg.postAssocRspParams));
16094
16095 /*Extract the Post Assoc STA Params */
16096
Jeff Johnsone7245742012-09-05 17:12:55 -070016097 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16103
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 wdiPostAssocParams.wdiStatus =
16105 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016106
16107 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16108 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16110 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 WDI_MAC_ADDR_LEN);
16112
16113 /* Extract Post Assoc BSS Params */
16114
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16116 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16117 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016118
16119 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16120 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16123 .macSTA, WDI_MAC_ADDR_LEN);
16124
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16127
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16130
16131 wdiPostAssocParams.bssParams.ucBSSIdx =
16132 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16133
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16136
16137 wpalMutexAcquire(&pWDICtx->wptMutex);
16138
16139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016145
16146 /*-----------------------------------------------------------------------
16147 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 -----------------------------------------------------------------------*/
16150 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16153 {
16154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16155 "Association sequence for this BSS does not yet exist or "
16156 "association no longer in progress - mysterious HAL response");
16157
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16159
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 }
16163
16164 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 -----------------------------------------------------------------------*/
16167 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16168 {
16169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16170 "Post Assoc not allowed before JOIN - failing request "
16171 "strange HAL response");
16172
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16174
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 }
16178
16179 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 -----------------------------------------------------------------------*/
16182 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16183 {
16184 /*Association was failed by HAL - remove session*/
16185 WDI_DeleteSession(pWDICtx, pBSSSes);
16186 }
16187 else
16188 {
16189 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016191
16192 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16201
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16204 }
16205
16206 /*Association no longer in progress */
16207 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16208
16209 /*Association no longer in progress - prepare pending assoc for processing*/
16210 WDI_DequeueAssocRequest(pWDICtx);
16211
16212 wpalMutexRelease(&pWDICtx->wptMutex);
16213
16214 /*Notify UMAC*/
16215 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16216
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016218}/*WDI_ProcessPostAssocRsp*/
16219
16220/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016223
16224 @param pWDICtx: pointer to the WLAN DAL context
16225 pEventData: pointer to the event information structure
16226
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 @see
16228 @return Result of the function call
16229*/
16230WDI_Status
16231WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016232(
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 WDI_ControlBlockType* pWDICtx,
16234 WDI_EventInfoType* pEventData
16235)
16236{
16237 WDI_DelSTARspParamsType wdiDelSTARsp;
16238 WDI_DelSTARspCb wdiDelSTARspCb;
16239 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16242
16243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016245 -------------------------------------------------------------------------*/
16246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16247 ( NULL == pEventData->pEventData))
16248 {
16249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 }
16254
16255 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16256
16257 /*-------------------------------------------------------------------------
16258 Extract response and send it to UMAC
16259 -------------------------------------------------------------------------*/
16260 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016262 sizeof(halDelStaRspMsg.delStaRspParams));
16263
16264 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 wdiDelSTARsp.wdiStatus =
16266 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016267
16268 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16269
16270 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16271 if(staType == WDI_STA_ENTRY_SELF)
16272 {
16273 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16274
16275 /* At this point add the self-STA */
16276
16277 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16278 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16279 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16280
16281#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16282#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16283
16284 //all DPU indices are the same for self STA
16285 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16286 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16287 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16288 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16289 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16290 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016291
16292 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 }
16294 else
16295 {
16296 //Delete the station in the table
16297 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16298 }
16299
16300 /*Notify UMAC*/
16301 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16302
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304}/*WDI_ProcessDelSTARsp*/
16305
16306
16307/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016309==========================================================================*/
16310
16311/**
16312 @brief Process Set BSS Key Rsp function (called when a response
16313 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016314
16315 @param pWDICtx: pointer to the WLAN DAL context
16316 pEventData: pointer to the event information structure
16317
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 @see
16319 @return Result of the function call
16320*/
16321WDI_Status
16322WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016323(
Jeff Johnson295189b2012-06-20 16:38:30 -070016324 WDI_ControlBlockType* pWDICtx,
16325 WDI_EventInfoType* pEventData
16326)
16327{
16328 WDI_Status wdiStatus;
16329 eHalStatus halStatus;
16330 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16332
16333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016335 -------------------------------------------------------------------------*/
16336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16337 ( NULL == pEventData->pEventData))
16338 {
16339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 }
16344
16345 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16346
16347 /*-------------------------------------------------------------------------
16348 Extract response and send it to UMAC
16349 -------------------------------------------------------------------------*/
16350 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016352
16353 if ( eHAL_STATUS_SUCCESS != halStatus )
16354 {
16355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16356 "Set BSS Key failed with status %s (%d)",
16357 WDI_getHALStatusMsgString(halStatus),
16358 halStatus);
16359 /* send the status to UMAC, don't return from here*/
16360 }
16361
16362 /*Notify UMAC*/
16363 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16364
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016366}/*WDI_ProcessSetBssKeyRsp*/
16367
16368/**
16369 @brief Process Remove BSS Key Rsp function (called when a response
16370 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016371
16372 @param pWDICtx: pointer to the WLAN DAL context
16373 pEventData: pointer to the event information structure
16374
Jeff Johnson295189b2012-06-20 16:38:30 -070016375 @see
16376 @return Result of the function call
16377*/
16378WDI_Status
16379WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016380(
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 WDI_ControlBlockType* pWDICtx,
16382 WDI_EventInfoType* pEventData
16383)
16384{
16385 WDI_Status wdiStatus;
16386 eHalStatus halStatus;
16387 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16389
16390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 -------------------------------------------------------------------------*/
16393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16394 ( NULL == pEventData->pEventData))
16395 {
16396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 }
16401
16402 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16403
16404 /*-------------------------------------------------------------------------
16405 Extract response and send it to UMAC
16406 -------------------------------------------------------------------------*/
16407 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016409
16410 if ( eHAL_STATUS_SUCCESS != halStatus )
16411 {
16412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16413 "Remove BSS Key failed with status %s (%d )",
16414 WDI_getHALStatusMsgString(halStatus),
16415 halStatus);
16416 /* send the status to UMAC, don't return from here*/
16417 }
16418
16419 /*Notify UMAC*/
16420 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16421
Jeff Johnsone7245742012-09-05 17:12:55 -070016422 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016423}/*WDI_ProcessSetBssKeyRsp*/
16424
16425
16426/**
16427 @brief Process Set STA Key Rsp function (called when a response
16428 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016429
16430 @param pWDICtx: pointer to the WLAN DAL context
16431 pEventData: pointer to the event information structure
16432
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 @see
16434 @return Result of the function call
16435*/
16436WDI_Status
16437WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016438(
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 WDI_ControlBlockType* pWDICtx,
16440 WDI_EventInfoType* pEventData
16441)
16442{
16443 WDI_Status wdiStatus;
16444 eHalStatus halStatus;
16445 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16447
16448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 -------------------------------------------------------------------------*/
16451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16452 ( NULL == pEventData->pEventData))
16453 {
16454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016458 }
16459
16460 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16461
16462 /*-------------------------------------------------------------------------
16463 Extract response and send it to UMAC
16464 -------------------------------------------------------------------------*/
16465 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016466 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016467
16468 if ( eHAL_STATUS_SUCCESS != halStatus )
16469 {
16470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16471 "Set STA Key failed with status %s (%d)",
16472 WDI_getHALStatusMsgString(halStatus),
16473 halStatus);
16474 /* send the status to UMAC, don't return from here*/
16475 }
16476
16477 /*Notify UMAC*/
16478 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16479
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016481}/*WDI_ProcessSetSTAKeyRsp*/
16482
16483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016486
16487 @param pWDICtx: pointer to the WLAN DAL context
16488 pEventData: pointer to the event information structure
16489
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 @see
16491 @return Result of the function call
16492*/
16493WDI_Status
16494WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016495(
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 WDI_ControlBlockType* pWDICtx,
16497 WDI_EventInfoType* pEventData
16498)
16499{
16500 WDI_Status wdiStatus;
16501 eHalStatus halStatus;
16502 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16504
16505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 -------------------------------------------------------------------------*/
16508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16509 ( NULL == pEventData->pEventData))
16510 {
16511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 }
16516
16517 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16518
16519 /*-------------------------------------------------------------------------
16520 Extract response and send it to UMAC
16521 -------------------------------------------------------------------------*/
16522 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016524
16525 if ( eHAL_STATUS_SUCCESS != halStatus )
16526 {
16527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16528 "Remove STA Key failed with status %s (%d)",
16529 WDI_getHALStatusMsgString(halStatus),
16530 halStatus);
16531 /* send the status to UMAC, don't return from here*/
16532 }
16533
16534 /*Notify UMAC*/
16535 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16536
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016538}/*WDI_ProcessRemoveStaKeyRsp*/
16539
16540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016543
16544 @param pWDICtx: pointer to the WLAN DAL context
16545 pEventData: pointer to the event information structure
16546
Jeff Johnson295189b2012-06-20 16:38:30 -070016547 @see
16548 @return Result of the function call
16549*/
16550WDI_Status
16551WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016552(
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 WDI_ControlBlockType* pWDICtx,
16554 WDI_EventInfoType* pEventData
16555)
16556{
16557 WDI_Status wdiStatus;
16558 eHalStatus halStatus;
16559 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16561
16562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 -------------------------------------------------------------------------*/
16565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16566 ( NULL == pEventData->pEventData))
16567 {
16568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 }
16573
16574 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16575
16576 /*-------------------------------------------------------------------------
16577 Extract response and send it to UMAC
16578 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 wpalMemoryCopy( &halStatus,
16580 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 sizeof(halStatus));
16582
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016584
16585 if ( eHAL_STATUS_SUCCESS != halStatus )
16586 {
16587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16588 "Set STA Key failed with status %s (%d)",
16589 WDI_getHALStatusMsgString(halStatus),
16590 halStatus);
16591 /* send the status to UMAC, don't return from here*/
16592 }
16593
16594 /*Notify UMAC*/
16595 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16596
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016598}/*WDI_ProcessSetSTABcastKeyRsp*/
16599
16600/**
16601 @brief Process Remove STA Bcast Key Rsp function (called when a
16602 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016603
16604 @param pWDICtx: pointer to the WLAN DAL context
16605 pEventData: pointer to the event information structure
16606
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 @see
16608 @return Result of the function call
16609*/
16610WDI_Status
16611WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016612(
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 WDI_ControlBlockType* pWDICtx,
16614 WDI_EventInfoType* pEventData
16615)
16616{
16617 WDI_Status wdiStatus;
16618 eHalStatus halStatus;
16619 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16621
16622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 -------------------------------------------------------------------------*/
16625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16626 ( NULL == pEventData->pEventData))
16627 {
16628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 }
16633
16634 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16635
16636 /*-------------------------------------------------------------------------
16637 Extract response and send it to UMAC
16638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 wpalMemoryCopy( &halStatus,
16640 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 sizeof(halStatus));
16642
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016644
16645 if ( eHAL_STATUS_SUCCESS != halStatus )
16646 {
16647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16648 "Remove STA Key failed with status %s (%d)",
16649 WDI_getHALStatusMsgString(halStatus),
16650 halStatus);
16651 /* send the status to UMAC, don't return from here*/
16652 }
16653
16654 /*Notify UMAC*/
16655 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16656
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016658}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16659
16660
16661/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016663==========================================================================*/
16664
16665/**
16666 @brief Process Add TSpec Rsp function (called when a response
16667 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016668
16669 @param pWDICtx: pointer to the WLAN DAL context
16670 pEventData: pointer to the event information structure
16671
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 @see
16673 @return Result of the function call
16674*/
16675WDI_Status
16676WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016677(
Jeff Johnson295189b2012-06-20 16:38:30 -070016678 WDI_ControlBlockType* pWDICtx,
16679 WDI_EventInfoType* pEventData
16680)
16681{
16682 WDI_Status wdiStatus;
16683 eHalStatus halStatus;
16684 WDI_AddTsRspCb wdiAddTsRspCb;
16685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16686
16687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 -------------------------------------------------------------------------*/
16690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16691 ( NULL == pEventData->pEventData))
16692 {
16693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 }
16698
16699 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16700
16701 /*-------------------------------------------------------------------------
16702 Extract response and send it to UMAC
16703 -------------------------------------------------------------------------*/
16704 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016705 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016706
16707 /*Notify UMAC*/
16708 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16709
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016711}/*WDI_ProcessAddTSpecRsp*/
16712
16713
16714/**
16715 @brief Process Del TSpec Rsp function (called when a response
16716 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016717
16718 @param pWDICtx: pointer to the WLAN DAL context
16719 pEventData: pointer to the event information structure
16720
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 @see
16722 @return Result of the function call
16723*/
16724WDI_Status
16725WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016726(
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 WDI_ControlBlockType* pWDICtx,
16728 WDI_EventInfoType* pEventData
16729)
16730{
16731 WDI_Status wdiStatus;
16732 eHalStatus halStatus;
16733 WDI_DelTsRspCb wdiDelTsRspCb;
16734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16735
16736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 -------------------------------------------------------------------------*/
16739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16740 ( NULL == pEventData->pEventData))
16741 {
16742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 }
16747
16748 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16749
16750 /*-------------------------------------------------------------------------
16751 Extract response and send it to UMAC
16752 -------------------------------------------------------------------------*/
16753 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016755
16756 /*Notify UMAC*/
16757 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16758
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016760}/*WDI_ProcessDelTSpecRsp*/
16761
16762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016765
16766 @param pWDICtx: pointer to the WLAN DAL context
16767 pEventData: pointer to the event information structure
16768
Jeff Johnson295189b2012-06-20 16:38:30 -070016769 @see
16770 @return Result of the function call
16771*/
16772WDI_Status
16773WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016774(
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 WDI_ControlBlockType* pWDICtx,
16776 WDI_EventInfoType* pEventData
16777)
16778{
16779 WDI_Status wdiStatus;
16780 eHalStatus halStatus;
16781 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16783
16784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 -------------------------------------------------------------------------*/
16787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16788 ( NULL == pEventData->pEventData))
16789 {
16790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 }
16795
16796 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16797
16798 /*-------------------------------------------------------------------------
16799 Extract response and send it to UMAC
16800 -------------------------------------------------------------------------*/
16801 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016802 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016803
16804 /*Notify UMAC*/
16805 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16806
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016808}/*WDI_ProcessUpdateEDCAParamsRsp*/
16809
16810
16811/**
16812 @brief Process Add BA Rsp function (called when a response
16813 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016814
16815 @param pWDICtx: pointer to the WLAN DAL context
16816 pEventData: pointer to the event information structure
16817
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 @see
16819 @return Result of the function call
16820*/
16821WDI_Status
16822WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016823(
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 WDI_ControlBlockType* pWDICtx,
16825 WDI_EventInfoType* pEventData
16826)
16827{
16828 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16829
16830 tAddBASessionRspParams halBASessionRsp;
16831 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16835
16836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 -------------------------------------------------------------------------*/
16839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16840 ( NULL == pEventData->pEventData))
16841 {
16842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016843 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 }
16847
16848 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16849
16850 /*-------------------------------------------------------------------------
16851 Extract response and send it to UMAC
16852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016853 wpalMemoryCopy( &halBASessionRsp,
16854 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 sizeof(halBASessionRsp));
16856
16857 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16858
Jeff Johnson43971f52012-07-17 12:26:56 -070016859 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 {
16861 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16862 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16863 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16864 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16865 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16866 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16867 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16868 }
16869
16870 /*Notify UMAC*/
16871 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16872
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016874}/*WDI_ProcessAddSessionBARsp*/
16875
16876
16877/**
16878 @brief Process Del BA Rsp function (called when a response
16879 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016880
16881 @param pWDICtx: pointer to the WLAN DAL context
16882 pEventData: pointer to the event information structure
16883
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 @see
16885 @return Result of the function call
16886*/
16887WDI_Status
16888WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016889(
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 WDI_ControlBlockType* pWDICtx,
16891 WDI_EventInfoType* pEventData
16892)
16893{
16894 WDI_Status wdiStatus;
16895 eHalStatus halStatus;
16896 WDI_DelBARspCb wdiDelBARspCb;
16897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16898
16899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 -------------------------------------------------------------------------*/
16902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16903 ( NULL == pEventData->pEventData))
16904 {
16905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 }
16910
16911 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16912
16913 /*-------------------------------------------------------------------------
16914 Extract response and send it to UMAC
16915 -------------------------------------------------------------------------*/
16916 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016918
16919 if ( eHAL_STATUS_SUCCESS == halStatus )
16920 {
16921 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16922 }
16923
16924 /*Notify UMAC*/
16925 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16926
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016928}/*WDI_ProcessDelBARsp*/
16929
16930#ifdef FEATURE_WLAN_CCX
16931/**
16932 @brief Process TSM Stats Rsp function (called when a response
16933 is being received over the bus from HAL)
16934
16935 @param pWDICtx: pointer to the WLAN DAL context
16936 pEventData: pointer to the event information structure
16937
16938 @see
16939 @return Result of the function call
16940*/
16941WDI_Status
16942WDI_ProcessTsmStatsRsp
16943(
16944 WDI_ControlBlockType* pWDICtx,
16945 WDI_EventInfoType* pEventData
16946)
16947{
16948 WDI_TsmRspCb wdiTsmStatsRspCb;
16949 tTsmStatsRspMsg halTsmStatsRspMsg;
16950 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16952
16953 /*-------------------------------------------------------------------------
16954 Sanity check
16955 -------------------------------------------------------------------------*/
16956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16957 ( NULL == pEventData->pEventData))
16958 {
16959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 WDI_ASSERT(0);
16962 return WDI_STATUS_E_FAILURE;
16963 }
16964
16965 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16966
16967 /*-------------------------------------------------------------------------
16968 Unpack HAL Response Message - the header was already extracted by the
16969 main Response Handling procedure
16970 -------------------------------------------------------------------------*/
16971 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16972 pEventData->pEventData,
16973 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16974
16975 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16976 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16977 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16978 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16979 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16980 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16981 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16982 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16983 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16984 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16985 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16986 halTsmStatsRspMsg.tsmStatsRspParams.status);
16987
16988 /*Notify UMAC*/
16989 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16990
16991 return WDI_STATUS_SUCCESS;
16992}/*WDI_ProcessTsmStatsRsp*/
16993
16994#endif
16995
16996
16997
16998/**
16999 @brief Process Flush AC Rsp function (called when a response
17000 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017001
17002 @param pWDICtx: pointer to the WLAN DAL context
17003 pEventData: pointer to the event information structure
17004
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 @see
17006 @return Result of the function call
17007*/
17008WDI_Status
17009WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017010(
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 WDI_ControlBlockType* pWDICtx,
17012 WDI_EventInfoType* pEventData
17013)
17014{
17015 WDI_Status wdiStatus;
17016 eHalStatus halStatus;
17017 WDI_FlushAcRspCb wdiFlushAcRspCb;
17018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17019
17020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 -------------------------------------------------------------------------*/
17023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17024 ( NULL == pEventData->pEventData))
17025 {
17026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 }
17031
17032 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17033
17034 /*-------------------------------------------------------------------------
17035 Extract response and send it to UMAC
17036 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wpalMemoryCopy( &halStatus,
17038 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 sizeof(halStatus));
17040
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017042
17043 /*Notify UMAC*/
17044 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17045
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017047}/*WDI_ProcessFlushAcRsp*/
17048
17049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017052
17053 @param pWDICtx: pointer to the WLAN DAL context
17054 pEventData: pointer to the event information structure
17055
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 @see
17057 @return Result of the function call
17058*/
17059WDI_Status
17060WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017061(
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 WDI_ControlBlockType* pWDICtx,
17063 WDI_EventInfoType* pEventData
17064)
17065{
17066 WDI_Status wdiStatus;
17067 eHalStatus halStatus;
17068 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17070
17071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 -------------------------------------------------------------------------*/
17074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17075 ( NULL == pEventData->pEventData))
17076 {
17077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 }
17082
17083 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17084
17085 /*-------------------------------------------------------------------------
17086 Extract response and send it to UMAC
17087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wpalMemoryCopy( &halStatus,
17089 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 sizeof(halStatus));
17091
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017093
17094 /*Notify UMAC*/
17095 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17096
Jeff Johnsone7245742012-09-05 17:12:55 -070017097 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017098}/*WDI_ProcessBtAmpEventRsp*/
17099
17100
17101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017104
17105 @param pWDICtx: pointer to the WLAN DAL context
17106 pEventData: pointer to the event information structure
17107
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 @see
17109 @return Result of the function call
17110*/
17111WDI_Status
17112WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017113(
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 WDI_ControlBlockType* pWDICtx,
17115 WDI_EventInfoType* pEventData
17116)
17117{
17118 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17119 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17120 tAddStaSelfRspMsg halAddStaSelfRsp;
17121 WDI_AddStaParams wdiAddSTAParam = {0};
17122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17123
17124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 -------------------------------------------------------------------------*/
17127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17128 ( NULL == pEventData->pEventData))
17129 {
17130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 }
17135
Jeff Johnsone7245742012-09-05 17:12:55 -070017136 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17138
17139 /*-------------------------------------------------------------------------
17140 Extract response and send it to UMAC
17141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17143 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17145
17146
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 wdiAddSTASelfParams.wdiStatus =
17148 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017149
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17156
17157 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17158 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17159 WDI_MAC_ADDR_LEN);
17160
17161
17162#ifdef HAL_SELF_STA_PER_BSS
17163
17164 /* At this point add the self-STA */
17165
17166 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17167 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17168 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17169
17170 //all DPU indices are the same for self STA
17171
17172 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017173 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17175 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17176 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17177 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17178 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17179
17180 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17181 WDI_MAC_ADDR_LEN);
17182
17183 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17184 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17185
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17188 {
17189 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17190 }
17191#endif
17192
17193 /*Notify UMAC*/
17194 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17195
Jeff Johnsone7245742012-09-05 17:12:55 -070017196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017197}/*WDI_ProcessAddSTASelfRsp*/
17198
17199
17200
17201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017202 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017204
17205 @param pWDICtx: pointer to the WLAN DAL context
17206 pEventData: pointer to the event information structure
17207
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 @see
17209 @return Result of the function call
17210*/
17211WDI_Status
17212WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017213(
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 WDI_ControlBlockType* pWDICtx,
17215 WDI_EventInfoType* pEventData
17216)
17217{
17218 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17219 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17220 tDelStaSelfRspParams delStaSelfRspParams;
17221 wpt_uint8 ucStaIdx;
17222
17223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17224
17225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 -------------------------------------------------------------------------*/
17228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17229 ( NULL == pEventData->pEventData))
17230 {
17231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 }
17236
17237 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17238
17239 /*-------------------------------------------------------------------------
17240 Extract response and send it to UMAC
17241 -------------------------------------------------------------------------*/
17242
Jeff Johnsone7245742012-09-05 17:12:55 -070017243 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 (wpt_uint8*)pEventData->pEventData,
17245 sizeof(tDelStaSelfRspParams));
17246
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 wdiDelStaSelfRspParams.wdiStatus =
17248 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017249
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17252 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17253 {
17254 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 delStaSelfRspParams.selfMacAddr,
17257 &ucStaIdx);
17258 if(WDI_STATUS_E_FAILURE == wdiStatus)
17259 {
17260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017261 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 }
17265 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17266 }
17267
17268 /*Notify UMAC*/
17269 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17270
17271 return WDI_STATUS_SUCCESS;
17272}
17273
Jeff Johnsone7245742012-09-05 17:12:55 -070017274#ifdef FEATURE_OEM_DATA_SUPPORT
17275/**
17276 @brief Start Oem Data Rsp function (called when a
17277 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017278
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 @param pWDICtx: pointer to the WLAN DAL context
17280 pEventData: pointer to the event information structure
17281
17282 @see
17283 @return Result of the function call
17284*/
17285#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17286
17287WDI_Status
17288WDI_ProcessStartOemDataRsp
17289(
17290 WDI_ControlBlockType* pWDICtx,
17291 WDI_EventInfoType* pEventData
17292)
17293{
17294 WDI_oemDataRspCb wdiOemDataRspCb;
17295 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17296 tStartOemDataRspParams* halStartOemDataRspParams;
17297
17298 /*-------------------------------------------------------------------------
17299 Sanity check
17300 -------------------------------------------------------------------------*/
17301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17302 ( NULL == pEventData->pEventData))
17303 {
17304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017305 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 WDI_ASSERT(0);
17307 return WDI_STATUS_E_FAILURE;
17308 }
17309
17310 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17311
17312 /*-------------------------------------------------------------------------
17313 Extract response and send it to UMAC
17314 -------------------------------------------------------------------------*/
17315 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17316
17317
17318 //It is the responsibility of the application code to check for failure
17319 //conditions!
17320
17321 //Allocate memory for WDI OEM DATA RSP structure
17322 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17323
17324 if(NULL == wdiOemDataRspParams)
17325 {
17326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017327 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 pWDICtx, pEventData, pEventData->pEventData);
17329 WDI_ASSERT(0);
17330 return WDI_STATUS_E_FAILURE;
17331 }
17332
17333 /* Populate WDI structure members */
17334 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17335
17336 /*Notify UMAC*/
17337 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17338
17339 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17340 wpalMemoryFree(wdiOemDataRspParams);
17341
17342 return WDI_STATUS_SUCCESS;
17343}/*WDI_PrcoessStartOemDataRsp*/
17344#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017345
17346/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017348===========================================================================*/
17349
17350/**
17351 @brief Process Channel Switch Rsp function (called when a response
17352 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017353
17354 @param pWDICtx: pointer to the WLAN DAL context
17355 pEventData: pointer to the event information structure
17356
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 @see
17358 @return Result of the function call
17359*/
17360WDI_Status
17361WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017362(
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 WDI_ControlBlockType* pWDICtx,
17364 WDI_EventInfoType* pEventData
17365)
17366{
17367 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17368 WDI_SwitchChRspCb wdiChSwitchRspCb;
17369 tSwitchChannelRspParams halSwitchChannelRsp;
17370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17371
17372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 -------------------------------------------------------------------------*/
17375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17376 ( NULL == pEventData->pEventData))
17377 {
17378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 }
17383
17384 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17385
17386 /*-------------------------------------------------------------------------
17387 Extract response and send it to UMAC
17388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017389 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017390 (wpt_uint8*)pEventData->pEventData,
17391 sizeof(halSwitchChannelRsp));
17392
Jeff Johnsone7245742012-09-05 17:12:55 -070017393 wdiSwitchChRsp.wdiStatus =
17394 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17396
17397#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017399#endif
17400
17401 /*Notify UMAC*/
17402 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17403
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017405}/*WDI_ProcessChannelSwitchRsp*/
17406
17407
17408/**
17409 @brief Process Config STA Rsp function (called when a response
17410 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017411
17412 @param pWDICtx: pointer to the WLAN DAL context
17413 pEventData: pointer to the event information structure
17414
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 @see
17416 @return Result of the function call
17417*/
17418WDI_Status
17419WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017420(
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 WDI_ControlBlockType* pWDICtx,
17422 WDI_EventInfoType* pEventData
17423)
17424{
17425 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17426 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17427 WDI_AddStaParams wdiAddSTAParam;
17428
17429 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17434
17435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 -------------------------------------------------------------------------*/
17438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17439 ( NULL == pEventData->pEventData))
17440 {
17441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017445 }
17446
17447 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17448
17449 /*-------------------------------------------------------------------------
17450 Extract response and send it to UMAC
17451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 sizeof(halConfigStaRsp.configStaRspParams));
17455
17456
17457 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17458 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17459 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17460 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17461 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17462
17463 /* MAC Address of STA - take from cache as it does not come back in the
17464 response*/
17465 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017468
17469 wdiCfgSTAParams.wdiStatus =
17470 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017471
17472 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17473 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17474 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17475
17476 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17477 {
17478 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17479 {
17480 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017481 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017482 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17483 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017484
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017488 wdiAddSTAParam.ucHTCapable =
17489 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17490 wdiAddSTAParam.ucStaType =
17491 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017492 wdiAddSTAParam.ucRmfEnabled =
17493 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017494
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17497 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017499
17500 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17501 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17502 WDI_MAC_ADDR_LEN);
17503
17504 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17505 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17506 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017507
17508 if ( NULL == pBSSSes )
17509 {
17510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17511 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017512
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 }
17516
17517 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017519 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017524 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017527
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17529 }
17530 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17531 {
17532 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17533
Jeff Johnsone7245742012-09-05 17:12:55 -070017534 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017540 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017546 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017547 halConfigStaRsp.configStaRspParams.ucUcastSig;
17548 }
17549 }
17550
17551 /*Notify UMAC*/
17552 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17553
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017555}/*WDI_ProcessConfigStaRsp*/
17556
17557
17558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017561
17562 @param pWDICtx: pointer to the WLAN DAL context
17563 pEventData: pointer to the event information structure
17564
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 @see
17566 @return Result of the function call
17567*/
17568WDI_Status
17569WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017570(
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 WDI_ControlBlockType* pWDICtx,
17572 WDI_EventInfoType* pEventData
17573)
17574{
17575 WDI_Status wdiStatus;
17576 eHalStatus halStatus;
17577 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17578
17579 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017580 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17582
17583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 -------------------------------------------------------------------------*/
17586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17587 ( NULL == pEventData->pEventData))
17588 {
17589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017593 }
17594
17595 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17596
17597 wpalMutexAcquire(&pWDICtx->wptMutex);
17598
17599 /*If the link is being transitioned to idle - the BSS is to be deleted
17600 - this type of ending a session is possible when UMAC has failed an
17601 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017602 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17604 {
17605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017607 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017608 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17609 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17610 &pBSSSes);
17611
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 /*-----------------------------------------------------------------------
17613 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 -----------------------------------------------------------------------*/
17616 if ( NULL == pBSSSes )
17617 {
17618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17619 "Set link response received outside association session");
17620 }
17621 else
17622 {
17623 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17624 will be del BSS coming after this to stop the beaconing & cleaning up the
17625 sessions*/
17626 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17627 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17628 {
17629 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017631 -----------------------------------------------------------------------*/
17632 WDI_DeleteSession(pWDICtx, pBSSSes);
17633
17634 /*-----------------------------------------------------------------------
17635 Check to see if this association is in progress - if so disable the
17636 flag as this has ended
17637 -----------------------------------------------------------------------*/
17638 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017639 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017640 /*Association no longer in progress */
17641 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17642 /*Association no longer in progress - prepare pending assoc for processing*/
17643 WDI_DequeueAssocRequest(pWDICtx);
17644 }
17645 }
17646 }
17647 }
17648 /* If the link state has been set to POST ASSOC, reset the "association in
17649 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17652 {
17653 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17654 WDI_DequeueAssocRequest(pWDICtx);
17655 }
17656
17657 wpalMutexRelease(&pWDICtx->wptMutex);
17658
17659 /*-------------------------------------------------------------------------
17660 Extract response and send it to UMAC
17661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017662 wpalMemoryCopy( &halStatus,
17663 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017664 sizeof(halStatus));
17665
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017667
17668 /*Notify UMAC*/
17669 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17670
Jeff Johnsone7245742012-09-05 17:12:55 -070017671 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017672}/*WDI_ProcessSetLinkStateRsp*/
17673
17674/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017677
17678 @param pWDICtx: pointer to the WLAN DAL context
17679 pEventData: pointer to the event information structure
17680
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 @see
17682 @return Result of the function call
17683*/
17684WDI_Status
17685WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017686(
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 WDI_ControlBlockType* pWDICtx,
17688 WDI_EventInfoType* pEventData
17689)
17690{
17691 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17692 WDI_GetStatsRspCb wdiGetStatsRspCb;
17693 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017694
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17696
17697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 -------------------------------------------------------------------------*/
17700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17701 ( NULL == pEventData->pEventData))
17702 {
17703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017707 }
17708
17709 /*-------------------------------------------------------------------------
17710 Extract response and send it to UMAC
17711 -------------------------------------------------------------------------*/
17712 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17713
17714 /*allocate the stats response buffer */
17715 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17716 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17717 + sizeof(WDI_GetStatsRspParamsType));
17718
17719 if(NULL == wdiGetStatsRsp)
17720 {
17721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017722 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 pWDICtx, pEventData, pEventData->pEventData);
17724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 }
17727
17728 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17729
17730 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17731 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17732 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17733 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17734 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17735 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17736
17737 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17738 wpalMemoryCopy(wdiGetStatsRsp + 1,
17739 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17740 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17741
17742 /*Notify UMAC*/
17743 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17744
17745 wpalMemoryFree(wdiGetStatsRsp);
17746
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017748}/*WDI_ProcessGetStatsRsp*/
17749
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017750#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17751/**
17752 @brief Process Get Roam Rssi Rsp function (called when a response is
17753 being received over the bus from HAL)
17754
17755 @param pWDICtx: pointer to the WLAN DAL context
17756 pEventData: pointer to the event information structure
17757
17758 @see
17759 @return Result of the function call
17760*/
17761WDI_Status
17762WDI_ProcessGetRoamRssiRsp
17763(
17764 WDI_ControlBlockType* pWDICtx,
17765 WDI_EventInfoType* pEventData
17766)
17767{
17768 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17769 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17770 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17772
17773 /*-------------------------------------------------------------------------
17774 Sanity check
17775 -------------------------------------------------------------------------*/
17776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17777 ( NULL == pEventData->pEventData))
17778 {
17779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17780 "%s: Invalid parameters", __func__);
17781 WDI_ASSERT(0);
17782 return WDI_STATUS_E_FAILURE;
17783 }
17784
17785 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17786 if(NULL == wdiGetRoamRssiRspCb)
17787 {
17788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17789 "%s: call back function is NULL", __func__);
17790 WDI_ASSERT(0);
17791 return WDI_STATUS_E_FAILURE;
17792 }
17793
17794 /*-------------------------------------------------------------------------
17795 Extract response and send it to UMAC
17796 -------------------------------------------------------------------------*/
17797 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17798 pEventData->pEventData,
17799 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17800
17801 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17802 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17803 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17804
17805 /*Notify UMAC*/
17806 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17807
17808 return WDI_STATUS_SUCCESS;
17809}/*WDI_ProcessGetRoamRssiRsp*/
17810#endif
17811
Jeff Johnson295189b2012-06-20 16:38:30 -070017812
17813/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017814 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017815 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017816
17817 @param pWDICtx: pointer to the WLAN DAL context
17818 pEventData: pointer to the event information structure
17819
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 @see
17821 @return Result of the function call
17822*/
17823WDI_Status
17824WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017825(
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 WDI_ControlBlockType* pWDICtx,
17827 WDI_EventInfoType* pEventData
17828)
17829{
17830 WDI_Status wdiStatus;
17831 eHalStatus halStatus;
17832 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17834
17835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 -------------------------------------------------------------------------*/
17838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17839 ( NULL == pEventData->pEventData))
17840 {
17841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 }
17846
17847 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17848
17849 /*-------------------------------------------------------------------------
17850 Extract response and send it to UMAC
17851 -------------------------------------------------------------------------*/
17852 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017854
17855 /*Notify UMAC*/
17856 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17857
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017859}/*WDI_ProcessUpdateCfgRsp*/
17860
17861
17862
17863/**
17864 @brief Process Add BA Rsp function (called when a response
17865 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017866
17867 @param pWDICtx: pointer to the WLAN DAL context
17868 pEventData: pointer to the event information structure
17869
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 @see
17871 @return Result of the function call
17872*/
17873WDI_Status
17874WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017875(
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 WDI_ControlBlockType* pWDICtx,
17877 WDI_EventInfoType* pEventData
17878)
17879{
17880 WDI_AddBARspCb wdiAddBARspCb;
17881
17882 tAddBARspParams halAddBARsp;
17883 WDI_AddBARspinfoType wdiAddBARsp;
17884
17885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17886
17887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 -------------------------------------------------------------------------*/
17890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17891 ( NULL == pEventData->pEventData))
17892 {
17893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 }
17898
17899 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17900
17901 /*-------------------------------------------------------------------------
17902 Extract response and send it to UMAC
17903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 wpalMemoryCopy( &halAddBARsp,
17905 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 sizeof(halAddBARsp));
17907
17908 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17909
Jeff Johnson43971f52012-07-17 12:26:56 -070017910 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 {
17912 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17913 }
17914
17915 /*Notify UMAC*/
17916 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17917
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017919}/*WDI_ProcessAddSessionBARsp*/
17920
17921/**
17922 @brief Process Add BA Rsp function (called when a response
17923 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017924
17925 @param pWDICtx: pointer to the WLAN DAL context
17926 pEventData: pointer to the event information structure
17927
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 @see
17929 @return Result of the function call
17930*/
17931WDI_Status
17932WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017933(
Jeff Johnson295189b2012-06-20 16:38:30 -070017934 WDI_ControlBlockType* pWDICtx,
17935 WDI_EventInfoType* pEventData
17936)
17937{
17938 WDI_TriggerBARspCb wdiTriggerBARspCb;
17939
17940 tTriggerBARspParams* halTriggerBARsp;
17941 tTriggerBaRspCandidate* halBaCandidate;
17942 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17943 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17944 wpt_uint16 index;
17945 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017946 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17948
17949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 -------------------------------------------------------------------------*/
17952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17953 ( NULL == pEventData->pEventData))
17954 {
17955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 }
17960
17961 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17962
17963 /*-------------------------------------------------------------------------
17964 Extract response and send it to UMAC
17965 -------------------------------------------------------------------------*/
17966 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17967
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017968 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17969
17970 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17971 {
17972 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017973 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017975
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017976 if(NULL == wdiTriggerBARsp)
17977 {
17978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017979 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017980 pWDICtx, pEventData, pEventData->pEventData);
17981 WDI_ASSERT(0);
17982 return WDI_STATUS_E_FAILURE;
17983 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017984
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017985 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17986
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17990
17991 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17992 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17993
17994 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17995 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17998 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17999 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18004 }
18005 wdiTriggerBARspCandidate++;
18006 halBaCandidate++;
18007 }
18008 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018009 else
18010 {
18011 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18012
18013 if(NULL == wdiTriggerBARsp)
18014 {
18015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080018016 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018017 pWDICtx, pEventData, pEventData->pEventData);
18018 WDI_ASSERT(0);
18019 return WDI_STATUS_E_FAILURE;
18020 }
18021
18022 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18023
18024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018025
18026 /*Notify UMAC*/
18027 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18028
18029 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018031}/*WDI_ProcessAddSessionBARsp*/
18032
18033/**
18034 @brief Process Update Beacon Params Rsp function (called when a response
18035 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018036
18037 @param pWDICtx: pointer to the WLAN DAL context
18038 pEventData: pointer to the event information structure
18039
Jeff Johnson295189b2012-06-20 16:38:30 -070018040 @see
18041 @return Result of the function call
18042*/
18043WDI_Status
18044WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018045(
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 WDI_ControlBlockType* pWDICtx,
18047 WDI_EventInfoType* pEventData
18048)
18049{
18050 WDI_Status wdiStatus;
18051 eHalStatus halStatus;
18052 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18054
18055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 -------------------------------------------------------------------------*/
18058 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18059 ( NULL == pEventData->pEventData))
18060 {
18061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 }
18066
18067 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18068
18069 /*-------------------------------------------------------------------------
18070 Extract response and send it to UMAC
18071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 wpalMemoryCopy( &halStatus,
18073 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 sizeof(halStatus));
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018077
18078 /*Notify UMAC*/
18079 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18080
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018082}/*WDI_ProcessUpdateBeaconParamsRsp*/
18083
18084/**
18085 @brief Process Send Beacon template Rsp function (called when a response
18086 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018087
18088 @param pWDICtx: pointer to the WLAN DAL context
18089 pEventData: pointer to the event information structure
18090
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 @see
18092 @return Result of the function call
18093*/
18094WDI_Status
18095WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018096(
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 WDI_ControlBlockType* pWDICtx,
18098 WDI_EventInfoType* pEventData
18099)
18100{
18101 WDI_Status wdiStatus;
18102 eHalStatus halStatus;
18103 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18105
18106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 -------------------------------------------------------------------------*/
18109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18110 ( NULL == pEventData->pEventData))
18111 {
18112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 }
18117
18118 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18119
18120 /*-------------------------------------------------------------------------
18121 Extract response and send it to UMAC
18122 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 wpalMemoryCopy( &halStatus,
18124 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 sizeof(halStatus));
18126
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018128
18129 /*Notify UMAC*/
18130 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18131
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018133}/*WDI_ProcessSendBeaconParamsRsp*/
18134
Jeff Johnsone7245742012-09-05 17:12:55 -070018135
Jeff Johnson295189b2012-06-20 16:38:30 -070018136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018137 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018138 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018139
18140 @param pWDICtx: pointer to the WLAN DAL context
18141 pEventData: pointer to the event information structure
18142
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 @see
18144 @return Result of the function call
18145*/
18146WDI_Status
18147WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018148(
Jeff Johnson295189b2012-06-20 16:38:30 -070018149 WDI_ControlBlockType* pWDICtx,
18150 WDI_EventInfoType* pEventData
18151)
18152{
18153 WDI_Status wdiStatus;
18154 eHalStatus halStatus;
18155 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18157
18158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 -------------------------------------------------------------------------*/
18161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18162 ( NULL == pEventData->pEventData))
18163 {
18164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 }
18169
18170 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18171
18172 /*-------------------------------------------------------------------------
18173 Extract response and send it to UMAC
18174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 wpalMemoryCopy( &halStatus,
18176 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 sizeof(halStatus));
18178
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018180
18181 /*Notify UMAC*/
18182 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18183
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018185}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18186
18187 /**
18188 @brief Process Set Max Tx Power Rsp function (called when a response
18189 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018190
18191 @param pWDICtx: pointer to the WLAN DAL context
18192 pEventData: pointer to the event information structure
18193
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 @see
18195 @return Result of the function call
18196*/
18197WDI_Status
18198WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018199(
Jeff Johnson295189b2012-06-20 16:38:30 -070018200 WDI_ControlBlockType* pWDICtx,
18201 WDI_EventInfoType* pEventData
18202)
18203{
18204 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018205
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018207
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18210
18211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 -------------------------------------------------------------------------*/
18214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18215 ( NULL == pEventData->pEventData))
18216 {
18217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 }
18222
18223 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18224
18225 /*-------------------------------------------------------------------------
18226 Extract response and send it to UMAC
18227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18229 pEventData->pEventData,
18230 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018231
18232 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18233 {
18234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18235 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 }
18238
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018241 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018242
18243 /*Notify UMAC*/
18244 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18245
Jeff Johnsone7245742012-09-05 17:12:55 -070018246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018247}
18248
schangd82195a2013-03-13 18:41:24 -070018249 /**
18250 @brief Process Set Tx Power Rsp function (called when a response
18251 is being received over the bus from HAL)
18252
18253 @param pWDICtx: pointer to the WLAN DAL context
18254 pEventData: pointer to the event information structure
18255
18256 @see
18257 @return Result of the function call
18258*/
18259WDI_Status
18260WDI_ProcessSetTxPowerRsp
18261(
18262 WDI_ControlBlockType* pWDICtx,
18263 WDI_EventInfoType* pEventData
18264)
18265{
18266 tSetTxPwrRspMsg halTxpowerrsp;
18267 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18268 WDA_SetTxPowerRspCb wdiReqStatusCb;
18269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18270
18271 /*-------------------------------------------------------------------------
18272 Sanity check
18273 -------------------------------------------------------------------------*/
18274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18275 ( NULL == pEventData->pEventData))
18276 {
18277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18278 "%s: Invalid parameters", __func__);
18279 WDI_ASSERT(0);
18280 return WDI_STATUS_E_FAILURE;
18281 }
18282
18283 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18284
18285 /*-------------------------------------------------------------------------
18286 Extract response and send it to UMAC
18287 -------------------------------------------------------------------------*/
18288 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18289 pEventData->pEventData,
18290 sizeof(halTxpowerrsp.setTxPwrRspParams));
18291
18292 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18293 {
18294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18295 "Error status returned in Set Tx Power Response ");
18296 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18297 return WDI_STATUS_E_FAILURE;
18298 }
18299
18300 wdiSetTxPowerRspMsg.wdiStatus =
18301 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18302
18303 /*Notify UMAC*/
18304 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18305
18306 return WDI_STATUS_SUCCESS;
18307}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018308#ifdef FEATURE_WLAN_TDLS
18309/**
18310 @brief Process TDLS Link Establish Rsp function (called
18311 when a response is being received over the bus from HAL)
18312
18313 @param pWDICtx: pointer to the WLAN DAL context
18314 pEventData: pointer to the event information structure
18315
18316 @see
18317 @return Result of the function call
18318*/
18319WDI_Status
18320WDI_ProcessLinkEstablishReqRsp
18321(
18322 WDI_ControlBlockType* pWDICtx,
18323 WDI_EventInfoType* pEventData
18324)
18325{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018326 eHalStatus halStatus;
18327 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018328 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18329 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18330
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18332
18333 /*-------------------------------------------------------------------------
18334 Sanity check
18335 -------------------------------------------------------------------------*/
18336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18337 ( NULL == pEventData->pEventData))
18338 {
18339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18340 "%s: Invalid parameters", __func__);
18341 WDI_ASSERT(0);
18342 return WDI_STATUS_E_FAILURE;
18343 }
18344
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018345 /*-------------------------------------------------------------------------
18346 Extract indication and send it to UMAC
18347 -------------------------------------------------------------------------*/
18348 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18349 pEventData->pEventData,
18350 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18351
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018352 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18353
18354 /*-------------------------------------------------------------------------
18355 Extract response and send it to UMAC
18356 -------------------------------------------------------------------------*/
18357 wpalMemoryCopy( &halStatus,
18358 pEventData->pEventData,
18359 sizeof(halStatus));
18360
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018361 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18362 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018363
18364 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018365 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018366
18367 return WDI_STATUS_SUCCESS;
18368}/*WDI_ProcessLinkEstablishReqRsp*/
18369#endif
schangd82195a2013-03-13 18:41:24 -070018370
Jeff Johnson295189b2012-06-20 16:38:30 -070018371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018372 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018374
18375 @param pWDICtx: pointer to the WLAN DAL context
18376 pEventData: pointer to the event information structure
18377
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 @see
18379 @return Result of the function call
18380*/
18381WDI_Status
18382WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018383(
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 WDI_ControlBlockType* pWDICtx,
18385 WDI_EventInfoType* pEventData
18386)
18387{
18388 WDI_Status wdiStatus;
18389 eHalStatus halStatus;
18390 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18392
18393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 -------------------------------------------------------------------------*/
18396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18397 ( NULL == pEventData->pEventData))
18398 {
18399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 }
18404
18405 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18406
18407 /*-------------------------------------------------------------------------
18408 Extract response and send it to UMAC
18409 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 wpalMemoryCopy( &halStatus,
18411 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 sizeof(halStatus));
18413
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018415
18416 /*Notify UMAC*/
18417 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18418
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018420}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018422 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018424
18425 @param pWDICtx: pointer to the WLAN DAL context
18426 pEventData: pointer to the event information structure
18427
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 @see
18429 @return Result of the function call
18430*/
18431WDI_Status
18432WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018433(
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 WDI_ControlBlockType* pWDICtx,
18435 WDI_EventInfoType* pEventData
18436)
18437{
18438 WDI_Status wdiStatus;
18439 eHalStatus halStatus;
18440 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018441 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18443
18444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 -------------------------------------------------------------------------*/
18447 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18448 ( NULL == pEventData->pEventData))
18449 {
18450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 }
18455
18456 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18457
18458 /*-------------------------------------------------------------------------
18459 Extract response and send it to UMAC
18460 -------------------------------------------------------------------------*/
18461 halStatus = *((eHalStatus*)pEventData->pEventData);
18462
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018464
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018465 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18466 * Other module states are taken care by PMC.
18467 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18468 */
18469 if (wdiStatus != WDI_STATUS_SUCCESS) {
18470
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18472 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18473 halStatus);
18474 /* Call Back is not required as we are putting the DXE in FULL
18475 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018476 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18477
18478 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018480 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018481 WDI_ASSERT(0);
18482 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018483 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 /*Notify UMAC*/
18485 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18486
Jeff Johnsone7245742012-09-05 17:12:55 -070018487 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018488}/*WDI_ProcessEnterImpsRsp*/
18489
18490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018493
18494 @param pWDICtx: pointer to the WLAN DAL context
18495 pEventData: pointer to the event information structure
18496
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 @see
18498 @return Result of the function call
18499*/
18500WDI_Status
18501WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018502(
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 WDI_ControlBlockType* pWDICtx,
18504 WDI_EventInfoType* pEventData
18505)
18506{
18507 WDI_Status wdiStatus;
18508 eHalStatus halStatus;
18509 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018510 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18512
18513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 -------------------------------------------------------------------------*/
18516 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18517 ( NULL == pEventData->pEventData))
18518 {
18519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 }
18524
18525 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18526
18527 /*-------------------------------------------------------------------------
18528 Extract response and send it to UMAC
18529 -------------------------------------------------------------------------*/
18530 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018532
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018533 if (halStatus != eHAL_STATUS_SUCCESS)
18534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18535 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18536
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018538 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18539 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18540 {
18541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018542 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018543 WDI_ASSERT(0);
18544 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 /*Notify UMAC*/
18546 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18547
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018549}/*WDI_ProcessExitImpsRsp*/
18550
18551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018554
18555 @param pWDICtx: pointer to the WLAN DAL context
18556 pEventData: pointer to the event information structure
18557
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 @see
18559 @return Result of the function call
18560*/
18561WDI_Status
18562WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018563(
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 WDI_ControlBlockType* pWDICtx,
18565 WDI_EventInfoType* pEventData
18566)
18567{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018568 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18569 tHalEnterBmpsRspParams halEnterBmpsRsp;
18570 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18571 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018572 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18574
18575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018577 -------------------------------------------------------------------------*/
18578 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18579 ( NULL == pEventData->pEventData))
18580 {
18581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 }
18586
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018588 Extract response and send it to UMAC
18589 -------------------------------------------------------------------------*/
18590 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18591 {
18592 wpalMemoryCopy( &halEnterBmpsRsp,
18593 pEventData->pEventData,
18594 sizeof(halEnterBmpsRsp));
18595
18596 //Used to print debug message
18597 halStatus = halEnterBmpsRsp.status;
18598 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18599 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18600 }
18601 else
18602 {
18603 halStatus = *((eHalStatus*)pEventData->pEventData);
18604 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18605 }
18606
18607 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018608
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018609 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18610 * Other module states are taken care by PMC.
18611 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18612 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018613 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18614 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018615
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018617 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18618 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018619 /* Call Back is not required as we are putting the DXE in FULL
18620 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018621 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18622 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18623 {
18624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018625 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018626 WDI_ASSERT(0);
18627 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018628 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018629 }
18630
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018632 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018633
Jeff Johnsone7245742012-09-05 17:12:55 -070018634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018635}/*WDI_ProcessEnterBmpsRsp*/
18636
18637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018640
18641 @param pWDICtx: pointer to the WLAN DAL context
18642 pEventData: pointer to the event information structure
18643
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 @see
18645 @return Result of the function call
18646*/
18647WDI_Status
18648WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018649(
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 WDI_ControlBlockType* pWDICtx,
18651 WDI_EventInfoType* pEventData
18652)
18653{
Jeff Johnson295189b2012-06-20 16:38:30 -070018654 eHalStatus halStatus;
18655 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018656 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018657 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18658 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18660
18661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 -------------------------------------------------------------------------*/
18664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18665 ( NULL == pEventData->pEventData))
18666 {
18667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 }
18672
18673 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18674
18675 /*-------------------------------------------------------------------------
18676 Extract response and send it to UMAC
18677 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018678
18679 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18680 {
18681 wpalMemoryCopy( &halExitBmpsRsp,
18682 pEventData->pEventData,
18683 sizeof(halExitBmpsRsp));
18684
18685 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18686 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18687 }
18688 else
18689 {
18690 halStatus = *((eHalStatus*)pEventData->pEventData);
18691 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18692 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018693
18694 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018695 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18696 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18697 {
18698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018699 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018700 WDI_ASSERT(0);
18701 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18703
18704 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018705 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018706
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018708}/*WDI_ProcessExitBmpsRsp*/
18709
18710/**
18711 @brief Process Enter UAPSD Rsp function (called when a response
18712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018713
18714 @param pWDICtx: pointer to the WLAN DAL context
18715 pEventData: pointer to the event information structure
18716
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 @see
18718 @return Result of the function call
18719*/
18720WDI_Status
18721WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018722(
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 WDI_ControlBlockType* pWDICtx,
18724 WDI_EventInfoType* pEventData
18725)
18726{
Jeff Johnson295189b2012-06-20 16:38:30 -070018727 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018728 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018730 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18731
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18733
18734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 -------------------------------------------------------------------------*/
18737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18738 ( NULL == pEventData->pEventData))
18739 {
18740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018744 }
18745
18746 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18747
18748 /*-------------------------------------------------------------------------
18749 Extract response and send it to UMAC
18750 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018751 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18752 {
18753 wpalMemoryCopy( &halEnterUapsdRsp,
18754 pEventData->pEventData,
18755 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018756
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018757 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18758 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18759 }
18760 else
18761 {
18762 halStatus = *((eHalStatus*)pEventData->pEventData);
18763 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18764 }
18765
18766 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 {
18768 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18769 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18770 // the traffic to decide when to suspend the trigger frames when there is no traffic
18771 // activity on the trigger enabled ACs
18772 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18773
18774#ifdef WLAN_PERF
18775 // Increment the BD signature to refresh the fast path BD utilization
18776 pWDICtx->uBdSigSerialNum++;
18777#endif
18778 }
18779
18780 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018781 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018782
Jeff Johnsone7245742012-09-05 17:12:55 -070018783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018784}/*WDI_ProcessEnterUapsdRsp*/
18785
18786/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018789
18790 @param pWDICtx: pointer to the WLAN DAL context
18791 pEventData: pointer to the event information structure
18792
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 @see
18794 @return Result of the function call
18795*/
18796WDI_Status
18797WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018798(
Jeff Johnson295189b2012-06-20 16:38:30 -070018799 WDI_ControlBlockType* pWDICtx,
18800 WDI_EventInfoType* pEventData
18801)
18802{
Jeff Johnson295189b2012-06-20 16:38:30 -070018803 eHalStatus halStatus;
18804 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018805 tHalExitUapsdRspParams halExitUapsdRsp;
18806 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18822
18823 /*-------------------------------------------------------------------------
18824 Extract response and send it to UMAC
18825 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018826 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18827 {
18828 wpalMemoryCopy( &halExitUapsdRsp,
18829 pEventData->pEventData,
18830 sizeof(halExitUapsdRsp));
18831
18832 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18833 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18834 }
18835 else
18836 {
18837 halStatus = *((eHalStatus*)pEventData->pEventData);
18838 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18839 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18841 // directly instead of the FW WQ.
18842 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18843
18844#ifdef WLAN_PERF
18845 // Increment the BD signature to refresh the fast path BD utilization
18846 pWDICtx->uBdSigSerialNum++;
18847#endif
18848
18849 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018850 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018851
Jeff Johnsone7245742012-09-05 17:12:55 -070018852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018853}/*WDI_ProcessExitUapsdRsp*/
18854
18855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018858
18859 @param pWDICtx: pointer to the WLAN DAL context
18860 pEventData: pointer to the event information structure
18861
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 @see
18863 @return Result of the function call
18864*/
18865WDI_Status
18866WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018867(
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 WDI_ControlBlockType* pWDICtx,
18869 WDI_EventInfoType* pEventData
18870)
18871{
18872 WDI_Status wdiStatus;
18873 eHalStatus halStatus;
18874 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18876
18877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 -------------------------------------------------------------------------*/
18880 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18881 ( NULL == pEventData->pEventData))
18882 {
18883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 }
18888
18889 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18890
18891 /*-------------------------------------------------------------------------
18892 Extract response and send it to UMAC
18893 -------------------------------------------------------------------------*/
18894 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018896
18897 /*Notify UMAC*/
18898 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18899
Jeff Johnsone7245742012-09-05 17:12:55 -070018900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018901}/*WDI_ProcessSetUapsdAcParamsRsp*/
18902
18903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018906
18907 @param pWDICtx: pointer to the WLAN DAL context
18908 pEventData: pointer to the event information structure
18909
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 @see
18911 @return Result of the function call
18912*/
18913WDI_Status
18914WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018915(
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 WDI_ControlBlockType* pWDICtx,
18917 WDI_EventInfoType* pEventData
18918)
18919{
18920 WDI_Status wdiStatus;
18921 eHalStatus halStatus;
18922 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18924
18925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 -------------------------------------------------------------------------*/
18928 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18929 ( NULL == pEventData->pEventData))
18930 {
18931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 }
18936
18937 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18938
18939 /*-------------------------------------------------------------------------
18940 Extract response and send it to UMAC
18941 -------------------------------------------------------------------------*/
18942 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018944
18945 /*Notify UMAC*/
18946 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18947
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018949}/*WDI_ProcessUpdateUapsdParamsRsp*/
18950
18951/**
18952 @brief Process Configure RXP filter Rsp function (called when a
18953 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018954
18955 @param pWDICtx: pointer to the WLAN DAL context
18956 pEventData: pointer to the event information structure
18957
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 @see
18959 @return Result of the function call
18960*/
18961WDI_Status
18962WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018963(
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 WDI_ControlBlockType* pWDICtx,
18965 WDI_EventInfoType* pEventData
18966)
18967{
18968 WDI_Status wdiStatus;
18969 eHalStatus halStatus;
18970 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18972
18973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 -------------------------------------------------------------------------*/
18976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18977 ( NULL == pEventData->pEventData))
18978 {
18979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 }
18984
18985 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18986
18987 /*-------------------------------------------------------------------------
18988 Extract response and send it to UMAC
18989 -------------------------------------------------------------------------*/
18990 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018991 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018992
18993 /*Notify UMAC*/
18994 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18995
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018997}/*WDI_ProcessConfigureRxpFilterRsp*/
18998
18999/**
19000 @brief Process Set beacon filter Rsp function (called when a
19001 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019002
19003 @param pWDICtx: pointer to the WLAN DAL context
19004 pEventData: pointer to the event information structure
19005
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 @see
19007 @return Result of the function call
19008*/
19009WDI_Status
19010WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019011(
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 WDI_ControlBlockType* pWDICtx,
19013 WDI_EventInfoType* pEventData
19014)
19015{
19016 WDI_Status wdiStatus;
19017 eHalStatus halStatus;
19018 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19020
19021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 -------------------------------------------------------------------------*/
19024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19025 ( NULL == pEventData->pEventData))
19026 {
19027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 }
19032
19033 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19034
19035 /*-------------------------------------------------------------------------
19036 Extract response and send it to UMAC
19037 -------------------------------------------------------------------------*/
19038 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019040
19041 /*Notify UMAC*/
19042 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19043
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019045}/*WDI_ProcessSetBeaconFilterRsp*/
19046
19047/**
19048 @brief Process remove beacon filter Rsp function (called when a
19049 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019050
19051 @param pWDICtx: pointer to the WLAN DAL context
19052 pEventData: pointer to the event information structure
19053
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 @see
19055 @return Result of the function call
19056*/
19057WDI_Status
19058WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019059(
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 WDI_ControlBlockType* pWDICtx,
19061 WDI_EventInfoType* pEventData
19062)
19063{
19064 WDI_Status wdiStatus;
19065 eHalStatus halStatus;
19066 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19068
19069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 -------------------------------------------------------------------------*/
19072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19073 ( NULL == pEventData->pEventData))
19074 {
19075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 }
19080
19081 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19082
19083 /*-------------------------------------------------------------------------
19084 Extract response and send it to UMAC
19085 -------------------------------------------------------------------------*/
19086 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019088
19089 /*Notify UMAC*/
19090 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19091
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019093}/*WDI_ProcessRemBeaconFilterRsp*/
19094
19095/**
19096 @brief Process set RSSI thresholds Rsp function (called when a
19097 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019098
19099 @param pWDICtx: pointer to the WLAN DAL context
19100 pEventData: pointer to the event information structure
19101
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 @see
19103 @return Result of the function call
19104*/
19105WDI_Status
19106WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019107(
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 WDI_ControlBlockType* pWDICtx,
19109 WDI_EventInfoType* pEventData
19110)
19111{
19112 WDI_Status wdiStatus;
19113 eHalStatus halStatus;
19114 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19116
19117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 -------------------------------------------------------------------------*/
19120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19121 ( NULL == pEventData->pEventData))
19122 {
19123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 }
19128
19129 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19130
19131 /*-------------------------------------------------------------------------
19132 Extract response and send it to UMAC
19133 -------------------------------------------------------------------------*/
19134 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019136
19137 /*Notify UMAC*/
19138 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19139
Jeff Johnsone7245742012-09-05 17:12:55 -070019140 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019141}/*WDI_ProcessSetRSSIThresoldsRsp*/
19142
19143/**
19144 @brief Process host offload Rsp function (called when a
19145 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019146
19147 @param pWDICtx: pointer to the WLAN DAL context
19148 pEventData: pointer to the event information structure
19149
Jeff Johnson295189b2012-06-20 16:38:30 -070019150 @see
19151 @return Result of the function call
19152*/
19153WDI_Status
19154WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019155(
Jeff Johnson295189b2012-06-20 16:38:30 -070019156 WDI_ControlBlockType* pWDICtx,
19157 WDI_EventInfoType* pEventData
19158)
19159{
19160 WDI_Status wdiStatus;
19161 eHalStatus halStatus;
19162 WDI_HostOffloadCb wdiHostOffloadCb;
19163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19164
19165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019167 -------------------------------------------------------------------------*/
19168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19169 ( NULL == pEventData->pEventData))
19170 {
19171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 }
19176
19177 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19178
19179 /*-------------------------------------------------------------------------
19180 Extract response and send it to UMAC
19181 -------------------------------------------------------------------------*/
19182 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019183 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019184
19185 /*Notify UMAC*/
19186 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19187
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019189}/*WDI_ProcessHostOffloadRsp*/
19190
19191/**
19192 @brief Process keep alive Rsp function (called when a
19193 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019194
19195 @param pWDICtx: pointer to the WLAN DAL context
19196 pEventData: pointer to the event information structure
19197
Jeff Johnson295189b2012-06-20 16:38:30 -070019198 @see
19199 @return Result of the function call
19200*/
19201WDI_Status
19202WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019203(
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 WDI_ControlBlockType* pWDICtx,
19205 WDI_EventInfoType* pEventData
19206)
19207{
19208 WDI_Status wdiStatus;
19209 eHalStatus halStatus;
19210 WDI_KeepAliveCb wdiKeepAliveCb;
19211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19213 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19214
19215
19216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 -------------------------------------------------------------------------*/
19219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19220 ( NULL == pEventData->pEventData))
19221 {
19222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 }
19227
Jeff Johnsone7245742012-09-05 17:12:55 -070019228 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19229
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 /*-------------------------------------------------------------------------
19231 Extract response and send it to UMAC
19232 -------------------------------------------------------------------------*/
19233 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019235
19236 /*Notify UMAC*/
19237 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19238
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240}/*WDI_ProcessKeepAliveRsp*/
19241
19242/**
19243 @brief Process wowl add ptrn Rsp function (called when a
19244 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019245
19246 @param pWDICtx: pointer to the WLAN DAL context
19247 pEventData: pointer to the event information structure
19248
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 @see
19250 @return Result of the function call
19251*/
19252WDI_Status
19253WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019254(
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 WDI_ControlBlockType* pWDICtx,
19256 WDI_EventInfoType* pEventData
19257)
19258{
Jeff Johnson295189b2012-06-20 16:38:30 -070019259 eHalStatus halStatus;
19260 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019261 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19262 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19263
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19265
19266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 -------------------------------------------------------------------------*/
19269 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19270 ( NULL == pEventData->pEventData))
19271 {
19272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 }
19277
19278 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19279
19280 /*-------------------------------------------------------------------------
19281 Extract response and send it to UMAC
19282 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019283 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19284 {
19285 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19286 pEventData->pEventData,
19287 sizeof(halAddWowlBcastPtrRsp));
19288
19289 wdiWowlAddBcPtrRsp.wdiStatus =
19290 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19291 }
19292 else
19293 {
19294 halStatus = *((eHalStatus*)pEventData->pEventData);
19295 wdiWowlAddBcPtrRsp.wdiStatus =
19296 WDI_HAL_2_WDI_STATUS(halStatus);
19297 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019298
19299 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019300 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019301
Jeff Johnsone7245742012-09-05 17:12:55 -070019302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019303}/*WDI_ProcessWowlAddBcPtrnRsp*/
19304
19305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019306 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019308
19309 @param pWDICtx: pointer to the WLAN DAL context
19310 pEventData: pointer to the event information structure
19311
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 @see
19313 @return Result of the function call
19314*/
19315WDI_Status
19316WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019317(
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 WDI_ControlBlockType* pWDICtx,
19319 WDI_EventInfoType* pEventData
19320)
19321{
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 eHalStatus halStatus;
19323 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019324 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19325 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19327
19328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019329 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 -------------------------------------------------------------------------*/
19331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19332 ( NULL == pEventData->pEventData))
19333 {
19334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 }
19339
19340 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19341
19342 /*-------------------------------------------------------------------------
19343 Extract response and send it to UMAC
19344 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019345 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19346 {
19347 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19348 pEventData->pEventData,
19349 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019350
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019351 wdiWowlDelBcstPtrRsp.wdiStatus =
19352 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19353 }
19354 else
19355 {
19356 halStatus = *((eHalStatus*)pEventData->pEventData);
19357 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19358 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019359 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019360 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019361
Jeff Johnsone7245742012-09-05 17:12:55 -070019362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019363}/*WDI_ProcessWowlDelBcPtrnRsp*/
19364
19365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019366 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019367 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019368
19369 @param pWDICtx: pointer to the WLAN DAL context
19370 pEventData: pointer to the event information structure
19371
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 @see
19373 @return Result of the function call
19374*/
19375WDI_Status
19376WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019377(
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 WDI_ControlBlockType* pWDICtx,
19379 WDI_EventInfoType* pEventData
19380)
19381{
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 eHalStatus halStatus;
19383 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019384 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19385 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19387
19388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 -------------------------------------------------------------------------*/
19391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19392 ( NULL == pEventData->pEventData))
19393 {
19394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 }
19399
19400 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19401
19402 /*-------------------------------------------------------------------------
19403 Extract response and send it to UMAC
19404 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019405 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19406 {
19407 wpalMemoryCopy( &halEnterWowlRspParams,
19408 (wpt_uint8*)pEventData->pEventData,
19409 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019411 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19412 wdiwowlEnterRsp.status =
19413 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19414 }
19415 else
19416 {
19417 halStatus = *((eHalStatus*)pEventData->pEventData);
19418 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19419 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019421 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019422
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019424}/*WDI_ProcessWowlEnterRsp*/
19425
19426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019427 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019428 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019429
19430 @param pWDICtx: pointer to the WLAN DAL context
19431 pEventData: pointer to the event information structure
19432
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 @see
19434 @return Result of the function call
19435*/
19436WDI_Status
19437WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019438(
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 WDI_ControlBlockType* pWDICtx,
19440 WDI_EventInfoType* pEventData
19441)
19442{
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 eHalStatus halStatus;
19444 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019445 tHalExitWowlRspParams halExitWowlRspParams;
19446 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19447
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19449
19450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 -------------------------------------------------------------------------*/
19453 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19454 ( NULL == pEventData->pEventData))
19455 {
19456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019457 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019460 }
19461
19462 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19463
19464 /*-------------------------------------------------------------------------
19465 Extract response and send it to UMAC
19466 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019467 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19468 {
19469 wpalMemoryCopy( &halExitWowlRspParams,
19470 pEventData->pEventData,
19471 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019472
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019473 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19474 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19475
19476 }
19477 else
19478 {
19479 halStatus = *((eHalStatus*)pEventData->pEventData);
19480 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19481 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019482 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019483 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019484
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019486}/*WDI_ProcessWowlExitRsp*/
19487
19488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 (called when a response is being received over the bus
19491 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019492
19493 @param pWDICtx: pointer to the WLAN DAL context
19494 pEventData: pointer to the event information structure
19495
Jeff Johnson295189b2012-06-20 16:38:30 -070019496 @see
19497 @return Result of the function call
19498*/
19499WDI_Status
19500WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019501(
Jeff Johnson295189b2012-06-20 16:38:30 -070019502 WDI_ControlBlockType* pWDICtx,
19503 WDI_EventInfoType* pEventData
19504)
19505{
19506 WDI_Status wdiStatus;
19507 eHalStatus halStatus;
19508 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19510
19511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 -------------------------------------------------------------------------*/
19514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19515 ( NULL == pEventData->pEventData))
19516 {
19517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 }
19522
19523 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19524
19525 /*-------------------------------------------------------------------------
19526 Extract response and send it to UMAC
19527 -------------------------------------------------------------------------*/
19528 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019530
19531 /*Notify UMAC*/
19532 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19533
Jeff Johnsone7245742012-09-05 17:12:55 -070019534 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019535}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19536
19537
19538/**
19539 @brief Process Nv download(called when a response
19540 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019541
19542 @param pWDICtx: pointer to the WLAN DAL context
19543 pEventData: pointer to the event information structure
19544
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 @see
19546 @return Result of the function call
19547*/
19548WDI_Status
19549WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019550(
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 WDI_ControlBlockType* pWDICtx,
19552 WDI_EventInfoType* pEventData
19553)
19554{
19555
19556 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19557 tHalNvImgDownloadRspParams halNvDownloadRsp;
19558 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19559
19560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019562 -------------------------------------------------------------------------*/
19563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19564 ( NULL == pEventData->pEventData))
19565 {
19566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019570 }
19571
19572 /*-------------------------------------------------------------------------
19573 Extract response and send it to UMAC
19574 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 wpalMemoryCopy( &halNvDownloadRsp,
19576 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 sizeof(halNvDownloadRsp));
19578
19579 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19580
19581 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019582 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19583 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 {
19585 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 }
19588 else
19589 {
19590 /*Reset the Nv related global information in WDI context information */
19591 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19592 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19593 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19594 /*call WDA callback function for last fragment */
19595 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19596 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19597 }
19598
Jeff Johnsone7245742012-09-05 17:12:55 -070019599 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019600}
19601#ifdef WLAN_FEATURE_VOWIFI_11R
19602/**
19603 @brief Process Add TSpec Rsp function (called when a response
19604 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019605
19606 @param pWDICtx: pointer to the WLAN DAL context
19607 pEventData: pointer to the event information structure
19608
Jeff Johnson295189b2012-06-20 16:38:30 -070019609 @see
19610 @return Result of the function call
19611*/
19612WDI_Status
19613WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019614(
Jeff Johnson295189b2012-06-20 16:38:30 -070019615 WDI_ControlBlockType* pWDICtx,
19616 WDI_EventInfoType* pEventData
19617)
19618{
19619 WDI_Status wdiStatus;
19620 tAggrAddTsRspParams aggrAddTsRsp;
19621 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19623
19624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 -------------------------------------------------------------------------*/
19627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19628 ( NULL == pEventData->pEventData))
19629 {
19630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 }
19635
19636 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19637
19638 /*-------------------------------------------------------------------------
19639 Extract response and send it to UMAC
19640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 wpalMemoryCopy( &aggrAddTsRsp,
19642 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 sizeof(aggrAddTsRsp));
19644
19645 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019647
19648 /*Notify UMAC*/
19649 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19650
Jeff Johnsone7245742012-09-05 17:12:55 -070019651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019652}/*WDI_ProcessAddTSpecRsp*/
19653#endif /* WLAN_FEATURE_VOWIFI_11R */
19654
19655/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019656 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019658
19659 @param pWDICtx: pointer to the WLAN DAL context
19660 pEventData: pointer to the event information structure
19661
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 @see
19663 @return Result of the function call
19664*/
19665WDI_Status
19666WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019667(
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 WDI_ControlBlockType* pWDICtx,
19669 WDI_EventInfoType* pEventData
19670)
19671{
19672 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19673 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19674 tHalHostResumeRspParams hostResumeRspMsg;
19675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19676
19677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 -------------------------------------------------------------------------*/
19680 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19681 ( NULL == pEventData->pEventData))
19682 {
19683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 }
19688
19689 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19690
19691 /*-------------------------------------------------------------------------
19692 Extract response and send it to UMAC
19693 -------------------------------------------------------------------------*/
19694
Jeff Johnsone7245742012-09-05 17:12:55 -070019695 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019696 (wpt_uint8*)pEventData->pEventData,
19697 sizeof(hostResumeRspMsg));
19698
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 wdiResumeRspParams.wdiStatus =
19700 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019701
19702 /*Notify UMAC*/
19703 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19704
19705 return WDI_STATUS_SUCCESS;
19706}
19707
19708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019709 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019711
19712 @param pWDICtx: pointer to the WLAN DAL context
19713 pEventData: pointer to the event information structure
19714
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 @see
19716 @return Result of the function call
19717*/
19718WDI_Status
19719WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019720(
Jeff Johnson295189b2012-06-20 16:38:30 -070019721 WDI_ControlBlockType* pWDICtx,
19722 WDI_EventInfoType* pEventData
19723)
19724{
19725 WDI_Status wdiStatus;
19726 eHalStatus halStatus;
19727 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19729
19730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 -------------------------------------------------------------------------*/
19733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19734 ( NULL == pEventData->pEventData))
19735 {
19736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019740 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019741
19742 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019743
19744 /*-------------------------------------------------------------------------
19745 Extract response and send it to UMAC
19746 -------------------------------------------------------------------------*/
19747 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019749
19750 /*Notify UMAC*/
19751 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19752
Jeff Johnsone7245742012-09-05 17:12:55 -070019753 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019754}/*WDI_ProcessSetTxPerTrackingRsp*/
19755
19756/*==========================================================================
19757 Indications from HAL
19758 ==========================================================================*/
19759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019761 indication of this kind is being received over the bus
19762 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019763
19764 @param pWDICtx: pointer to the WLAN DAL context
19765 pEventData: pointer to the event information structure
19766
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 @see
19768 @return Result of the function call
19769*/
19770WDI_Status
19771WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019772(
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_ControlBlockType* pWDICtx,
19774 WDI_EventInfoType* pEventData
19775)
19776{
19777 WDI_LowLevelIndType wdiInd;
19778 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19780
19781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 -------------------------------------------------------------------------*/
19784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19785 ( NULL == pEventData->pEventData))
19786 {
19787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 }
19792
19793 /*-------------------------------------------------------------------------
19794 Extract indication and send it to UMAC
19795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019796 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19797 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 sizeof(tHalRSSINotification));
19799
19800 /*Fill in the indication parameters*/
19801 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19802 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19803 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19804 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19805 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19806 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19807 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19808 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19809 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19810 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19811 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19812 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19813 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019814 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19815 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019816
ltimariu034f7d62013-01-24 18:54:33 -080019817 if ( pWDICtx->wdiLowLevelIndCB )
19818 {
19819 /*Notify UMAC of indication*/
19820 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19821 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019822
19823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019824}/*WDI_ProcessLowRSSIInd*/
19825
19826
19827/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019828 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 an indication of this kind is being received over the
19830 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019831
19832 @param pWDICtx: pointer to the WLAN DAL context
19833 pEventData: pointer to the event information structure
19834
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 @see
19836 @return Result of the function call
19837*/
19838WDI_Status
19839WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019840(
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 WDI_ControlBlockType* pWDICtx,
19842 WDI_EventInfoType* pEventData
19843)
19844{
19845 WDI_Status wdiStatus;
19846 eHalStatus halStatus;
19847 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019848 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19850
19851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 -------------------------------------------------------------------------*/
19854 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19855 ( NULL == pEventData->pEventData))
19856 {
19857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019862 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 /*-------------------------------------------------------------------------
19864 Extract indication and send it to UMAC
19865 -------------------------------------------------------------------------*/
19866 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19867 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019868 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019869
19870 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019872 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19873 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019874 if ( pWDICtx->wdiLowLevelIndCB )
19875 {
19876 /*Notify UMAC*/
19877 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19878 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019879
19880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019881}/*WDI_ProcessMissedBeaconInd*/
19882
19883
19884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019885 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019886 an indication of this kind is being received over the
19887 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
19889 @param pWDICtx: pointer to the WLAN DAL context
19890 pEventData: pointer to the event information structure
19891
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 @see
19893 @return Result of the function call
19894*/
19895WDI_Status
19896WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019897(
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 WDI_ControlBlockType* pWDICtx,
19899 WDI_EventInfoType* pEventData
19900)
19901{
19902 WDI_Status wdiStatus;
19903 eHalStatus halStatus;
19904 WDI_LowLevelIndType wdiInd;
19905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19906
19907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 -------------------------------------------------------------------------*/
19910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19911 ( NULL == pEventData->pEventData))
19912 {
19913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 }
19918
19919 /*-------------------------------------------------------------------------
19920 Extract indication and send it to UMAC
19921 -------------------------------------------------------------------------*/
19922 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19923 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019925
19926 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 /* ! TO DO - fill in from HAL struct:
19929 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19930
ltimariu034f7d62013-01-24 18:54:33 -080019931 if ( pWDICtx->wdiLowLevelIndCB )
19932 {
19933 /*Notify UMAC*/
19934 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19935 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019936
19937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019938}/*WDI_ProcessUnkAddrFrameInd*/
19939
19940
19941/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019942 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 indication of this kind is being received over the bus
19944 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019945
19946 @param pWDICtx: pointer to the WLAN DAL context
19947 pEventData: pointer to the event information structure
19948
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 @see
19950 @return Result of the function call
19951*/
19952WDI_Status
19953WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019954(
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 WDI_ControlBlockType* pWDICtx,
19956 WDI_EventInfoType* pEventData
19957)
19958{
19959 WDI_LowLevelIndType wdiInd;
19960 tpSirMicFailureInd pHalMicFailureInd;
19961
19962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19963
19964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 -------------------------------------------------------------------------*/
19967 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19968 ( NULL == pEventData->pEventData))
19969 {
19970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019975
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19977 /*-------------------------------------------------------------------------
19978 Extract indication and send it to UMAC
19979 -------------------------------------------------------------------------*/
19980
19981 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19984 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19985 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19986 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19987 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19988 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19989 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19990 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019995 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019996 pHalMicFailureInd->info.keyId;
19997 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19998 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19999 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20000 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080020001
20002 if ( pWDICtx->wdiLowLevelIndCB )
20003 {
20004 /*Notify UMAC*/
20005 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20006 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020007
20008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020009}/*WDI_ProcessMicFailureInd*/
20010
20011
20012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 an indication of this kind is being received over the
20015 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020016
20017 @param pWDICtx: pointer to the WLAN DAL context
20018 pEventData: pointer to the event information structure
20019
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 @see
20021 @return Result of the function call
20022*/
20023WDI_Status
20024WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020025(
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ControlBlockType* pWDICtx,
20027 WDI_EventInfoType* pEventData
20028)
20029{
20030 WDI_Status wdiStatus;
20031 eHalStatus halStatus;
20032 WDI_LowLevelIndType wdiInd;
20033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20034
20035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 -------------------------------------------------------------------------*/
20038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20039 ( NULL == pEventData->pEventData))
20040 {
20041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 }
20046
20047 /*-------------------------------------------------------------------------
20048 Extract indication and send it to UMAC
20049 -------------------------------------------------------------------------*/
20050
20051 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20052 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020054
20055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20056 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020057
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20060 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020061
ltimariu034f7d62013-01-24 18:54:33 -080020062 if ( pWDICtx->wdiLowLevelIndCB )
20063 {
20064 /*Notify UMAC*/
20065 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
20068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020069}/*WDI_ProcessFatalErrorInd*/
20070
20071/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020072 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020073 an indication of this kind is being received over the
20074 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020075
20076 @param pWDICtx: pointer to the WLAN DAL context
20077 pEventData: pointer to the event information structure
20078
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 @see
20080 @return Result of the function call
20081*/
20082WDI_Status
20083WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020084(
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 WDI_ControlBlockType* pWDICtx,
20086 WDI_EventInfoType* pEventData
20087)
20088{
20089 tDeleteStaContextParams halDelSTACtx;
20090 WDI_LowLevelIndType wdiInd;
20091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20092
20093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 -------------------------------------------------------------------------*/
20096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20097 ( NULL == pEventData->pEventData))
20098 {
20099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 }
20104
20105 /*-------------------------------------------------------------------------
20106 Extract indication and send it to UMAC
20107 -------------------------------------------------------------------------*/
20108
20109 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 wpalMemoryCopy( &halDelSTACtx,
20111 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 sizeof(halDelSTACtx));
20113
20114 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020115 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020116
20117 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20118 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20119 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20120 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20121
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020126 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20127 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020128
ltimariu034f7d62013-01-24 18:54:33 -080020129 if ( pWDICtx->wdiLowLevelIndCB )
20130 {
20131 /*Notify UMAC*/
20132 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
20135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020136}/*WDI_ProcessDelSTAInd*/
20137
20138/**
20139*@brief Process Coex Indication function (called when
20140 an indication of this kind is being received over the
20141 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020142
20143 @param pWDICtx: pointer to the WLAN DAL context
20144 pEventData: pointer to the event information structure
20145
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 @see
20147 @return Result of the function call
20148*/
20149WDI_Status
20150WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020151(
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 WDI_ControlBlockType* pWDICtx,
20153 WDI_EventInfoType* pEventData
20154)
20155{
20156 WDI_LowLevelIndType wdiInd;
20157 tCoexIndMsg halCoexIndMsg;
20158 wpt_uint32 index;
20159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20160
20161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 -------------------------------------------------------------------------*/
20164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20165 ( NULL == pEventData->pEventData ))
20166 {
20167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020169 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 }
20172
20173 /*-------------------------------------------------------------------------
20174 Extract indication and send it to UMAC
20175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 sizeof(halCoexIndMsg.coexIndParams) );
20179
20180 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 wdiInd.wdiIndicationType = WDI_COEX_IND;
20182 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020183 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20184 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 }
20187
20188 // DEBUG
20189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20190 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20192 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20193 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20194 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20195 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020196
ltimariu034f7d62013-01-24 18:54:33 -080020197 if ( pWDICtx->wdiLowLevelIndCB )
20198 {
20199 /*Notify UMAC*/
20200 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020202
20203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020204}/*WDI_ProcessCoexInd*/
20205
20206/**
20207*@brief Process Tx Complete Indication function (called when
20208 an indication of this kind is being received over the
20209 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020210
20211 @param pWDICtx: pointer to the WLAN DAL context
20212 pEventData: pointer to the event information structure
20213
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 @see
20215 @return Result of the function call
20216*/
20217WDI_Status
20218WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020219(
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 WDI_ControlBlockType* pWDICtx,
20221 WDI_EventInfoType* pEventData
20222)
20223{
20224 WDI_LowLevelIndType wdiInd;
20225 tTxComplIndMsg halTxComplIndMsg;
20226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20227
20228 /*-------------------------------------------------------------------------
20229 Sanity check
20230 -------------------------------------------------------------------------*/
20231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20232 ( NULL == pEventData->pEventData ))
20233 {
20234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 WDI_ASSERT( 0 );
20237 return WDI_STATUS_E_FAILURE;
20238 }
20239
20240 /*-------------------------------------------------------------------------
20241 Extract indication and send it to UMAC
20242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020243 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20244 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020245 sizeof(halTxComplIndMsg.txComplParams) );
20246
20247 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020248 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20249 wdiInd.wdiIndicationData.tx_complete_status
20250 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020251
ltimariu034f7d62013-01-24 18:54:33 -080020252 if ( pWDICtx->wdiLowLevelIndCB )
20253 {
20254 /*Notify UMAC*/
20255 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20256 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020257
20258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020259}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020260#ifdef FEATURE_WLAN_TDLS
20261/**
20262*@brief Process TDLS Indication function (called when
20263 an indication of this kind is being received over the
20264 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020265
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020266 @param pWDICtx: pointer to the WLAN DAL context
20267 pEventData: pointer to the event information structure
20268
20269 @see
20270 @return Result of the function call
20271*/
20272WDI_Status
20273WDI_ProcessTdlsInd
20274(
20275 WDI_ControlBlockType* pWDICtx,
20276 WDI_EventInfoType* pEventData
20277)
20278{
20279 WDI_LowLevelIndType wdiInd;
20280 tTdlsIndMsg halTdlsIndMsg;
20281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20282
20283 /*-------------------------------------------------------------------------
20284 Sanity check
20285 -------------------------------------------------------------------------*/
20286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20287 ( NULL == pEventData->pEventData ))
20288 {
20289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20290 "%s: Invalid parameters", __func__);
20291 WDI_ASSERT( 0 );
20292 return WDI_STATUS_E_FAILURE;
20293 }
20294
20295 /*-------------------------------------------------------------------------
20296 Extract indication and send it to UMAC
20297 -------------------------------------------------------------------------*/
20298 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20299 pEventData->pEventData,
20300 sizeof(halTdlsIndMsg.tdlsIndParams) );
20301
20302 /*Fill in the indication parameters*/
20303 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20304
20305 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20306 = halTdlsIndMsg.tdlsIndParams.status;
20307
20308 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20309 = halTdlsIndMsg.tdlsIndParams.staIdx;
20310
20311 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20312 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20313
20314 /*Notify UMAC*/
20315 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20316
20317 return WDI_STATUS_SUCCESS;
20318}/*WDI_ProcessTdlsInd*/
20319#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020320/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020321*@brief Process Noa Start Indication function (called when
20322 an indication of this kind is being received over the
20323 bus from HAL)
20324
20325 @param pWDICtx: pointer to the WLAN DAL context
20326 pEventData: pointer to the event information structure
20327
20328 @see
20329 @return Result of the function call
20330*/
20331WDI_Status
20332WDI_ProcessP2pNoaStartInd
20333(
20334 WDI_ControlBlockType* pWDICtx,
20335 WDI_EventInfoType* pEventData
20336)
20337{
20338 WDI_LowLevelIndType wdiInd;
20339 tNoaStartIndMsg halNoaStartIndMsg;
20340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20341
20342 /*-------------------------------------------------------------------------
20343 Sanity check
20344 -------------------------------------------------------------------------*/
20345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20346 ( NULL == pEventData->pEventData ))
20347 {
20348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20349 "%s: Invalid parameters", __func__);
20350 WDI_ASSERT( 0 );
20351 return WDI_STATUS_E_FAILURE;
20352 }
20353
20354 /*-------------------------------------------------------------------------
20355 Extract indication and send it to UMAC
20356 -------------------------------------------------------------------------*/
20357 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20358 pEventData->pEventData,
20359 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20360
20361 /*Fill in the indication parameters*/
20362 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20363
20364 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20365 = halNoaStartIndMsg.noaStartIndParams.status;
20366
20367 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20368 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20369
20370 /*Notify UMAC*/
20371 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20372
20373 return WDI_STATUS_SUCCESS;
20374}/*WDI_ProcessNoaAttrInd*/
20375
20376/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020377*@brief Process Noa Attr Indication function (called when
20378 an indication of this kind is being received over the
20379 bus from HAL)
20380
20381 @param pWDICtx: pointer to the WLAN DAL context
20382 pEventData: pointer to the event information structure
20383
20384 @see
20385 @return Result of the function call
20386*/
20387WDI_Status
20388WDI_ProcessP2pNoaAttrInd
20389(
20390 WDI_ControlBlockType* pWDICtx,
20391 WDI_EventInfoType* pEventData
20392)
20393{
20394 WDI_LowLevelIndType wdiInd;
20395 tNoaAttrIndMsg halNoaAttrIndMsg;
20396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20397
20398 /*-------------------------------------------------------------------------
20399 Sanity check
20400 -------------------------------------------------------------------------*/
20401 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20402 ( NULL == pEventData->pEventData ))
20403 {
20404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 WDI_ASSERT( 0 );
20407 return WDI_STATUS_E_FAILURE;
20408 }
20409
20410 /*-------------------------------------------------------------------------
20411 Extract indication and send it to UMAC
20412 -------------------------------------------------------------------------*/
20413 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20414 pEventData->pEventData,
20415 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20416
20417 /*Fill in the indication parameters*/
20418 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020419
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20421 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020422
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20424 = halNoaAttrIndMsg.noaAttrIndParams.index;
20425 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20426 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20427 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20428 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020429
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20431 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20432 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20433 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20434 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20435 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20436 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20437 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020438
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20440 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20441 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20442 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20443 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20444 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20445 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20446 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20447
ltimariu034f7d62013-01-24 18:54:33 -080020448 if ( pWDICtx->wdiLowLevelIndCB )
20449 {
20450 /*Notify UMAC*/
20451 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20452 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020453
20454 return WDI_STATUS_SUCCESS;
20455}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020456
20457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 an indication of this kind is being received over the
20460 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020461
20462 @param pWDICtx: pointer to the WLAN DAL context
20463 pEventData: pointer to the event information structure
20464
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 @see
20466 @return Result of the function call
20467*/
20468WDI_Status
20469WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020470(
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 WDI_ControlBlockType* pWDICtx,
20472 WDI_EventInfoType* pEventData
20473)
20474{
20475 WDI_LowLevelIndType wdiInd;
20476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020477
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 /*-------------------------------------------------------------------------
20479 Extract indication and send it to UMAC
20480 -------------------------------------------------------------------------*/
20481 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20483
ltimariu034f7d62013-01-24 18:54:33 -080020484 if ( pWDICtx->wdiLowLevelIndCB )
20485 {
20486 /*Notify UMAC*/
20487 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20488 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020489
Jeff Johnsone7245742012-09-05 17:12:55 -070020490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020491}/*WDI_ProcessTxPerHitInd*/
20492
Jeff Johnson295189b2012-06-20 16:38:30 -070020493/**
Yue Ma365933a2013-08-14 15:59:08 -070020494 @brief Process Periodic Tx Pattern Fw Indication function
20495
20496 @param pWDICtx: pointer to the WLAN DAL context
20497 pEventData: pointer to the event information structure
20498
20499 @see
20500 @return Result of the function call
20501*/
20502WDI_Status
20503WDI_ProcessPeriodicTxPtrnFwInd
20504(
20505 WDI_ControlBlockType* pWDICtx,
20506 WDI_EventInfoType* pEventData
20507)
20508{
20509 WDI_LowLevelIndType wdiInd;
20510
20511 /*-------------------------------------------------------------------------
20512 Sanity check
20513 -------------------------------------------------------------------------*/
20514 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20515 (NULL == pEventData->pEventData))
20516 {
20517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20518 "%s: Invalid parameters", __func__);
20519 WDI_ASSERT(0);
20520 return WDI_STATUS_E_FAILURE;
20521 }
20522
20523 /*-------------------------------------------------------------------------
20524 Extract indication and send it to UMAC
20525 -------------------------------------------------------------------------*/
20526 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20527 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20528 sizeof(tHalPeriodicTxPtrnFwInd));
20529
20530 if (pWDICtx->wdiLowLevelIndCB)
20531 {
20532 /*Notify UMAC*/
20533 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20534 }
20535
20536 return WDI_STATUS_SUCCESS;
20537}
20538
20539/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 @brief WDI_ProcessFTMCommandReq
20541 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020542
20543 @param pWDICtx: pointer to the WLAN DAL context
20544 pEventData: pointer to the event information structure
20545
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 @see
20547 @return Result of the function call
20548*/
20549WDI_Status
20550WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020551(
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 WDI_ControlBlockType* pWDICtx,
20553 WDI_EventInfoType* pEventData
20554)
20555{
20556 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20557 wpt_uint8 *ftmCommandBuffer = NULL;
20558 wpt_uint16 dataOffset;
20559 wpt_uint16 bufferSize;
20560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020562 -------------------------------------------------------------------------*/
20563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20564 ( NULL == pEventData->pEventData))
20565
20566 {
20567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 }
20572
20573 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20574
20575 /* Get MSG Buffer */
20576 WDI_GetMessageBuffer(pWDICtx,
20577 WDI_FTM_CMD_REQ,
20578 ftmCommandReq->bodyLength,
20579 &ftmCommandBuffer,
20580 &dataOffset,
20581 &bufferSize);
20582
20583 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20584 ftmCommandReq->FTMCommandBody,
20585 ftmCommandReq->bodyLength);
20586
20587 /* Send MSG */
20588 return WDI_SendMsg(pWDICtx,
20589 ftmCommandBuffer,
20590 bufferSize,
20591 pEventData->pCBfnc,
20592 pEventData->pUserData,
20593 WDI_FTM_CMD_RESP);
20594}
20595
20596/**
20597 @brief WDI_ProcessFTMCommandRsp
20598 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020599
20600 @param pWDICtx: pointer to the WLAN DAL context
20601 pEventData: pointer to the event information structure
20602
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 @see
20604 @return Result of the function call
20605*/
20606WDI_Status
20607WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020608(
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 WDI_ControlBlockType* pWDICtx,
20610 WDI_EventInfoType* pEventData
20611)
20612{
20613 WDI_FTMCommandRspCb ftmCMDRspCb;
20614 tProcessPttRspParams *ftmCMDRspData = NULL;
20615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20616
20617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 -------------------------------------------------------------------------*/
20620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20621 ( NULL == pEventData->pEventData))
20622 {
20623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 }
20628
20629 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20630
20631 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20632
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20634 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20636
20637 /*Notify UMAC*/
20638 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20639
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641}
Jeff Johnson295189b2012-06-20 16:38:30 -070020642/**
20643 @brief WDI_ProcessHalDumpCmdReq
20644 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020645
20646 @param pWDICtx: pointer to the WLAN DAL context
20647 pEventData: pointer to the event information structure
20648
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 @see
20650 @return Result of the function call
20651*/
20652WDI_Status
20653WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020654(
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 WDI_ControlBlockType* pWDICtx,
20656 WDI_EventInfoType* pEventData
20657)
20658{
20659 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20660 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20661 wpt_uint16 usDataOffset = 0;
20662 wpt_uint16 usSendSize = 0;
20663 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020665
20666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 -------------------------------------------------------------------------*/
20669 if (( NULL == pEventData ) ||
20670 ( NULL == pEventData->pEventData) ||
20671 ( NULL == pEventData->pCBfnc ))
20672 {
20673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 }
20678
20679 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20680 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20681
20682 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020693
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 /*-----------------------------------------------------------------------
20695 Get message buffer
20696 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020697 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20699 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020700 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20702 {
20703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020704 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 }
20709
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 wpalMemoryCopy( pSendBuffer+usDataOffset,
20711 &halDumpCmdReqMsg.dumpCmdReqParams,
20712 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020713
20714 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020716
20717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20721 wdiHALDumpCmdRspCb, pEventData->pUserData,
20722 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020723}
20724
20725/**
20726 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 Process hal Dump Command Response from HAL, simply route to HDD
20728
20729 @param pWDICtx: pointer to the WLAN DAL context
20730 pEventData: pointer to the event information structure
20731
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 @see
20733 @return Result of the function call
20734*/
20735WDI_Status
20736WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020737(
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 WDI_ControlBlockType* pWDICtx,
20739 WDI_EventInfoType* pEventData
20740)
20741{
20742 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020743 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20745
20746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 -------------------------------------------------------------------------*/
20749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20750 ( NULL == pEventData->pEventData))
20751 {
20752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 }
20757
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020759
20760 /*Initialize the WDI Response structure */
20761 wdiHALDumpCmdRsp.usBufferLen = 0;
20762 wdiHALDumpCmdRsp.pBuffer = NULL;
20763
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020764 wpalMemoryCopy( &halDumpCmdRspParams,
20765 pEventData->pEventData,
20766 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020767
20768 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020769 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020770
20771 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020772 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 {
20774 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020775 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20776 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20777
20778 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20779 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020780 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020782
Jeff Johnson295189b2012-06-20 16:38:30 -070020783 /*Notify UMAC*/
20784 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20785
20786 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20787 {
20788 /* Free the allocated buffer */
20789 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20790 }
20791 return WDI_STATUS_SUCCESS;
20792}
20793
20794/*==========================================================================
20795 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020796
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020798 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020799==========================================================================*/
20800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 when it wishes to send up a notification like the ones
20803 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020804
Jeff Johnson295189b2012-06-20 16:38:30 -070020805 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020806
20807 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020808 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020809 wctsNotifyCBData: the callback data of the user
20810
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020812
20813 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020814*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020815void
Jeff Johnson295189b2012-06-20 16:38:30 -070020816WDI_NotifyMsgCTSCB
20817(
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 WCTS_NotifyEventType wctsEvent,
20820 void* wctsNotifyCBData
20821)
20822{
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20825
20826 if (NULL == pWDICtx )
20827 {
20828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 }
20833
20834 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20835 {
20836 /* callback presumably occurred after close */
20837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020838 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 }
20841
20842 if ( WCTS_EVENT_OPEN == wctsEvent )
20843 {
20844 /*Flag must be set atomically as it is checked from incoming request
20845 functions*/
20846 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848
20849 /*Nothing to do - so try to dequeue any pending request that may have
20850 occurred while we were trying to establish this*/
20851 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 {
20856 /*Flag must be set atomically as it is checked from incoming request
20857 functions*/
20858 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020860
20861 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 wpalMutexRelease(&pWDICtx->wptMutex);
20864
20865 /*Notify that the Control Channel is closed */
20866 wpalEventSet(&pWDICtx->wctsActionEvent);
20867 }
20868
20869}/*WDI_NotifyMsgCTSCB*/
20870
20871
20872/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020873 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 when it wishes to send up a packet received over the
20875 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020876
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020878
20879 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 pMsg: the packet
20881 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 wctsRxMsgCBData: the callback data of the user
20883
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020885
20886 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020887*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020888void
20889WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020890(
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 void* pMsg,
20893 wpt_uint32 uLen,
20894 void* wctsRxMsgCBData
20895)
20896{
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 tHalMsgHeader *pHalMsgHeader;
20898 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20901
20902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 ( uLen < sizeof(tHalMsgHeader)))
20907 {
20908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 }
20913
20914 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20915 {
20916 /* callback presumably occurred after close */
20917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020918 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 }
20921
Jeff Johnsone7245742012-09-05 17:12:55 -070020922 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 context - so no serialization is necessary here
20924 ! - revisit this assumption */
20925
20926 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20927
20928 if ( uLen != pHalMsgHeader->msgLen )
20929 {
20930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20931 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20933 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020934 }
20935
20936 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20937
20938 /*The message itself starts after the header*/
20939 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20940 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20941 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20942 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20943
20944
20945 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20946 {
20947 /*Stop the timer as the response was received */
20948 /*!UT - check for potential race conditions between stop and response */
20949 wpalTimerStop(&pWDICtx->wptResponseTimer);
20950 }
20951 /* Check if we receive a response message which is not expected */
20952 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20953 {
20954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20955 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20956 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20959 pWDICtx->wdiExpectedResponse);
Sameer Thalappilad723582013-11-15 14:50:51 -080020960
20961 if (gWDICb.bEnableSSR == false)
20962 {
20963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20964 "SSR is not enabled on WDI timeout");
20965 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20966 return;
20967 }
20968 wpalWcnssResetIntr();
20969 /* if this timer fires, it means Riva did not receive the FIQ */
20970 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
20971
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 return;
20973 }
20974
20975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20976 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20977
20978 /*Post response event to the state machine*/
20979 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20980
20981}/*WDI_RXMsgCTSCB*/
20982
20983
20984/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020986========================================================================*/
20987
20988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020991
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 @param pWDICtx - pointer to the control block
20993
20994 @return Result of the function call
20995*/
20996WPT_INLINE WDI_Status
20997WDI_CleanCB
20998(
20999 WDI_ControlBlockType* pWDICtx
21000)
21001{
21002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21003
21004 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021006
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21009 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21010
21011 WDI_ResetAssocSessions( pWDICtx );
21012
21013 return WDI_STATUS_SUCCESS;
21014}/*WDI_CleanCB*/
21015
21016
21017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021019
Jeff Johnsone7245742012-09-05 17:12:55 -070021020
21021 @param pWDICtx: pointer to the WLAN DAL context
21022 pEventData: pointer to the event information structure
21023
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 @see
21025 @return Result of the function call
21026*/
21027WPT_INLINE WDI_Status
21028WDI_ProcessRequest
21029(
21030 WDI_ControlBlockType* pWDICtx,
21031 WDI_EventInfoType* pEventData
21032)
21033{
21034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21035
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 already checked these pointers*/
21038
21039 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21040 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021041 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021043 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 WDI_getReqMsgString(pEventData->wdiRequest),
21045 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21046 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21047 }
21048 else
21049 {
21050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021051 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021052 pEventData->wdiRequest);
21053 return WDI_STATUS_E_NOT_IMPLEMENT;
21054 }
21055}/*WDI_ProcessRequest*/
21056
21057
21058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021059 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 prefixes it with a send message header
21062
21063 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 wdiReqType: type of the request being sent
21065 uBufferLen: message buffer len
21066 pMsgBuffer: resulting allocated buffer
21067 pusDataOffset: offset in the buffer where the caller
21068 can start copying its message data
21069 puBufferSize: the resulting buffer size (offset+buff
21070 len)
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*/
21075WDI_Status
21076WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021077(
21078 WDI_ControlBlockType* pWDICtx,
21079 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 wpt_uint8** pMsgBuffer,
21082 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 wpt_uint16* pusBufferSize
21084)
21085{
21086 tHalMsgHeader halMsgHeader;
21087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21088
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 again*/
21091
21092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021093 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021095 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21097 if ( NULL == *pMsgBuffer )
21098 {
21099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21100 "Unable to allocate message buffer for req %s (%d)",
21101 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 }
21106
21107 /*-------------------------------------------------------------------------
21108 Fill in the message header
21109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21111 /* Fill msgVersion */
21112#ifdef WLAN_FEATURE_11AC
21113 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021114 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 else
21116#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021117 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021118
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21120 *pusDataOffset = sizeof(halMsgHeader);
21121 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21122
21123 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021124}/*WDI_GetMessageBuffer*/
21125
21126
21127/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 the CB
21131
21132 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021134
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 usSendSize size of the buffer to be sent
21136 pRspCb: response callback - save in the WDI
21137 CB
21138 pUserData: user data associated with the
21139 callback
21140 wdiExpectedResponse: the code of the response that is
21141 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021142
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 @see
21144 @return Result of the function call
21145*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021146WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021147WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021148(
21149 WDI_ControlBlockType* pWDICtx,
21150 wpt_uint8* pSendBuffer,
21151 wpt_uint32 usSendSize,
21152 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021153 void* pUserData,
21154 WDI_ResponseEnumType wdiExpectedResponse
21155)
21156{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021157 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021158 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21160
21161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 ------------------------------------------------------------------------*/
21164 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 pWDICtx->pfncRspCB = pRspCb;
21166 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021167
21168 /*-----------------------------------------------------------------------
21169 Call the CTS to send this message over - free message afterwards
21170 - notify transport failure
21171 Note: CTS is reponsible for freeing the message buffer.
21172 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021173 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21174 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21175 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 "Failed to send message over the bus - catastrophic failure");
21179
Jeff Johnsond13512a2012-07-17 11:42:19 -070021180 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021182 else
21183 {
21184 /* even when message was placed in CTS deferred Q, we will treat it
21185 success but log this info
21186 */
21187 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21188 {
21189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21190 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21191 "response %s (%d)",
21192 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21193 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021194 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021195 }
21196 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021197
Jeff Johnsond13512a2012-07-17 11:42:19 -070021198 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021199 if ( NULL != pWDICtx->wdiReqStatusCB )
21200 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021201 /*Inform originator whether request went through or not*/
21202 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21203 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 pWDICtx->wdiReqStatusCB = NULL;
21205 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021206 callback(wdiStatus, callbackContext);
21207
21208 /*For WDI requests which have registered a request callback,
21209 inform the WDA caller of the same via setting the return value
21210 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21211 end up repeating the functonality in the req callback for the
21212 WDI_STATUS_E_FAILURE case*/
21213 if (wdiStatus == WDI_STATUS_E_FAILURE)
21214 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215 }
21216
Jeff Johnsond13512a2012-07-17 11:42:19 -070021217 if ( wdiStatus == WDI_STATUS_SUCCESS )
21218 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 /*Start timer for the expected response */
21220 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021221
21222 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021223 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021224 }
21225 else
21226 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021227 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021228 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21229 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021230
Jeff Johnsond13512a2012-07-17 11:42:19 -070021231 return wdiStatus;
21232
Jeff Johnson295189b2012-06-20 16:38:30 -070021233}/*WDI_SendMsg*/
21234
21235
21236
21237/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021238 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 the bus using the control transport and saves some info
21240 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021241
21242 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021243 pSendBuffer: buffer to be sent
21244 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021245
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 @see
21247 @return Result of the function call
21248*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021249WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021250WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021251(
21252 WDI_ControlBlockType* pWDICtx,
21253 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 wpt_uint32 usSendSize
21255)
21256{
21257 wpt_uint32 uStatus ;
21258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21259
21260 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021261 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021262 Note: CTS is reponsible for freeing the message buffer.
21263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021264 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 (void*)pSendBuffer, usSendSize );
21266
21267 /*Inform Upper MAC about the outcome of the request*/
21268 if ( NULL != pWDICtx->wdiReqStatusCB )
21269 {
21270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21271 "Send indication status : %d", uStatus);
21272
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021273 /* even if CTS placed indication into its deferred Q, we treat it
21274 * as success and let CTS drain its queue as per smd interrupt to CTS
21275 */
21276 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 -070021277 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 }
21279
21280 /*If sending of the message failed - it is considered catastrophic and
21281 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021282 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21283 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21284
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 {
21286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021287 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021288
21289 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21290 return WDI_STATUS_E_FAILURE;
21291 }
21292
Jeff Johnsone7245742012-09-05 17:12:55 -070021293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021294}/*WDI_SendIndication*/
21295
21296
21297/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 @brief WDI_DetectedDeviceError - called internally by DAL when
21299 it has detected a failure in the device
21300
21301 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 usErrorCode: error code detected by WDI or received
21303 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021304
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021306 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021307*/
21308void
21309WDI_DetectedDeviceError
21310(
21311 WDI_ControlBlockType* pWDICtx,
21312 wpt_uint16 usErrorCode
21313)
21314{
21315 WDI_LowLevelIndType wdiInd;
21316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21317
21318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21319 "Device Error detected code: %d - transitioning to stopped state",
21320 usErrorCode);
21321
21322 wpalMutexAcquire(&pWDICtx->wptMutex);
21323
21324 WDI_STATableStop(pWDICtx);
21325
21326 WDI_ResetAssocSessions(pWDICtx);
21327
21328 /*Set the expected state transition to stopped - because the device
21329 experienced a failure*/
21330 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21331
21332 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021334
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021336
21337 /*TO DO: - there should be an attempt to reset the device here*/
21338
21339 wpalMutexRelease(&pWDICtx->wptMutex);
21340
21341 /*------------------------------------------------------------------------
21342 Notify UMAC if a handler is registered
21343 ------------------------------------------------------------------------*/
21344 if (pWDICtx->wdiLowLevelIndCB)
21345 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21347 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021348
21349 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21350 }
21351}/*WDI_DetectedDeviceError*/
21352
21353/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 we started on send message has expire - this should
21356 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021357 reply - trigger catastrophic failure
21358 @param
21359
Jeff Johnson295189b2012-06-20 16:38:30 -070021360 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021361
21362 @see
21363 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021364*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021365void
Jeff Johnson295189b2012-06-20 16:38:30 -070021366WDI_ResponseTimerCB
21367(
21368 void *pUserData
21369)
21370{
21371 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21373
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021374 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 }
21381
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021382 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021383 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021384
21385 /* If response timer is running at this time that means this timer
21386 * event is not for the last request but rather last-to-last request and
21387 * this timer event has come after we recevied respone for last-to-last
21388 * message
21389 */
21390 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21391 {
21392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21393 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021394 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021395 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21396 return;
21397 }
21398
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021399 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 {
21401
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021404 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021405 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021406 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21407 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021408
21409 /* WDI timeout means Riva is not responding or SMD communication to Riva
21410 * is not happening. The only possible way to recover from this error
21411 * is to initiate SSR from APPS.
21412 * There is also an option to re-enable wifi, which will eventually
21413 * trigger SSR
21414 */
21415 if (gWDICb.bEnableSSR == false)
21416 {
21417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21418 "SSR is not enabled on WDI timeout");
21419 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21420 return;
21421 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021422#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021423 wpalWcnssResetIntr();
21424 /* if this timer fires, it means Riva did not receive the FIQ */
21425 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021426#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021427 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21428 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021429#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 }
21431 else
21432 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021434 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021435 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021436 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21437 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 }
21439
21440 return;
21441
21442}/*WDI_ResponseTimerCB*/
21443
21444
21445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021447
Jeff Johnsone7245742012-09-05 17:12:55 -070021448
21449 @param pWDICtx: pointer to the WLAN DAL context
21450 pEventData: pointer to the event information structure
21451
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 @see
21453 @return Result of the function call
21454*/
21455WPT_INLINE WDI_Status
21456WDI_ProcessResponse
21457(
21458 WDI_ControlBlockType* pWDICtx,
21459 WDI_EventInfoType* pEventData
21460)
21461{
21462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21463
Jeff Johnsone7245742012-09-05 17:12:55 -070021464 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 already checked these pointers
21466 ! - revisit this assumption */
21467 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21468 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021471 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 WDI_getRespMsgString(pEventData->wdiResponse),
21473 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21474 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21475 }
21476 else
21477 {
21478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 pEventData->wdiResponse);
21481 return WDI_STATUS_E_NOT_IMPLEMENT;
21482 }
21483}/*WDI_ProcessResponse*/
21484
21485
21486/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021488=========================================================================*/
21489
21490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 @brief Utility function used by the DAL Core to help queue a
21492 request that cannot be processed right away.
21493 @param
21494
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 pWDICtx: - pointer to the WDI control block
21496 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 queued
21498
21499 @see
21500 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021501*/
21502WDI_Status
21503WDI_QueuePendingReq
21504(
21505 WDI_ControlBlockType* pWDICtx,
21506 WDI_EventInfoType* pEventData
21507)
21508{
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21513
21514 if ( NULL == pEventDataQueue )
21515 {
21516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021517 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 WDI_ASSERT(0);
21519 return WDI_STATUS_MEM_FAILURE;
21520 }
21521
21522 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21523 pEventDataQueue->pUserData = pEventData->pUserData;
21524 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21525 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527
21528 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21529 {
21530 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021531
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 if ( NULL == pEventInfo )
21533 {
21534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021535 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 WDI_ASSERT(0);
21537 wpalMemoryFree(pEventDataQueue);
21538 return WDI_STATUS_MEM_FAILURE;
21539 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021540
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21542
21543 }
21544 pEventDataQueue->pEventData = pEventInfo;
21545
21546 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021548
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021550
21551 return WDI_STATUS_SUCCESS;
21552}/*WDI_QueuePendingReq*/
21553
21554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021557 @param
21558
21559 pMsg - pointer to the message
21560
21561 @see
21562 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021563*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021564void
Jeff Johnson295189b2012-06-20 16:38:30 -070021565WDI_PALCtrlMsgCB
21566(
21567 wpt_msg *pMsg
21568)
21569{
21570 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 WDI_ControlBlockType* pWDICtx = NULL;
21572 WDI_Status wdiStatus;
21573 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 void* pUserData;
21575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21576
21577 if (( NULL == pMsg )||
21578 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21579 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21580 {
21581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021582 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021584 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 }
21586
21587 /*Transition back to the state that we had before serialization
21588 - serialization transitions us to BUSY to stop any incomming requests
21589 ! TO DO L: possible race condition here if a request comes in between the
21590 state transition and the post function*/
21591
Jeff Johnsone7245742012-09-05 17:12:55 -070021592 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021593
21594 /*-----------------------------------------------------------------------
21595 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021596 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021597 -----------------------------------------------------------------------*/
21598 switch ( pEventData->wdiRequest )
21599 {
21600
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21603 break;
21604
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 case WDI_NV_DOWNLOAD_REQ:
21606 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21607 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21608 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21609 {
21610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021611 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21613 }
21614 else
21615 {
21616 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21617 }
21618
21619 break;
21620
21621 default:
21622 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21623 break;
21624 }/*switch ( pEventData->wdiRequest )*/
21625
21626 if ( WDI_STATUS_SUCCESS != wdiStatus )
21627 {
21628 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21629
21630 if ( NULL != pfnReqStatusCB )
21631 {
21632 /*Fail the request*/
21633 pfnReqStatusCB( wdiStatus, pUserData);
21634 }
21635 }
21636
21637 /* Free data - that was allocated when queueing*/
21638 if( pEventData != NULL )
21639 {
21640 if( pEventData->pEventData != NULL )
21641 {
21642 wpalMemoryFree(pEventData->pEventData);
21643 }
21644 wpalMemoryFree(pEventData);
21645 }
21646
21647 if( pMsg != NULL )
21648 {
21649 wpalMemoryFree(pMsg);
21650 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021651
Jeff Johnson295189b2012-06-20 16:38:30 -070021652}/*WDI_PALCtrlMsgCB*/
21653
21654/**
21655 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 and schedule for execution a pending request
21657 @param
21658
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 pWDICtx: - pointer to the WDI control block
21660 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 queued
21662
21663 @see
21664 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021665*/
21666WDI_Status
21667WDI_DequeuePendingReq
21668(
21669 WDI_ControlBlockType* pWDICtx
21670)
21671{
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21676
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021678
21679 if ( NULL == pNode )
21680 {
21681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 return WDI_STATUS_SUCCESS;
21684 }
21685
21686 /*The node actually points to the 1st element inside the Event Data struct -
21687 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689
21690 /*Serialize processing in the control thread
21691 !TO DO: - check to see if these are all the messages params that need
21692 to be filled in*/
21693 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21694
21695 if ( NULL == palMsg )
21696 {
21697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021698 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 palMsg->callback = WDI_PALCtrlMsgCB;
21704 palMsg->ptr = pEventData;
21705
21706 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 palMsg->val = pWDICtx->uGlobalState;
21708
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 /*Transition back to BUSY as we need to handle a queued request*/
21710 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021711
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21713
21714 return WDI_STATUS_PENDING;
21715}/*WDI_DequeuePendingReq*/
21716
21717
21718/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 away.- The assoc requests will be queued by BSSID
21722 @param
21723
Jeff Johnson295189b2012-06-20 16:38:30 -070021724 pWDICtx: - pointer to the WDI control block
21725 pEventData: pointer to the evnt info that needs to be queued
21726 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021727
21728 @see
21729 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021730*/
21731WDI_Status
21732WDI_QueueNewAssocRequest
21733(
21734 WDI_ControlBlockType* pWDICtx,
21735 WDI_EventInfoType* pEventData,
21736 wpt_macAddr macBSSID
21737)
21738{
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 wpt_uint8 i;
21740 WDI_BSSSessionType* pSession = NULL;
21741 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 void* pEventInfo;
21744 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021746
Jeff Johnsone7245742012-09-05 17:12:55 -070021747
21748 /*------------------------------------------------------------------------
21749 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 ------------------------------------------------------------------------*/
21751 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21752 {
21753 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21754 {
21755 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021756 pSession = &pWDICtx->aBSSSessions[i];
21757 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021758 }
21759 }
21760
21761 if ( i >= WDI_MAX_BSS_SESSIONS )
21762 {
21763 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021766
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 /*------------------------------------------------------------------------
21768 Fill in the BSSID for this session and set the usage flag
21769 ------------------------------------------------------------------------*/
21770 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021771 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021772
21773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 ------------------------------------------------------------------------*/
21776 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21777 if ( NULL == pEventDataQueue )
21778 {
21779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021780 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 WDI_ASSERT(0);
21782 return WDI_STATUS_MEM_FAILURE;
21783 }
21784
21785 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21786 if ( NULL == pSessionIdElement )
21787 {
21788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021789 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 WDI_ASSERT(0);
21791 wpalMemoryFree(pEventDataQueue);
21792 return WDI_STATUS_MEM_FAILURE;
21793 }
21794
21795 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21796 if ( NULL == pEventInfo )
21797 {
21798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021799 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021800 WDI_ASSERT(0);
21801 wpalMemoryFree(pSessionIdElement);
21802 wpalMemoryFree(pEventDataQueue);
21803 return WDI_STATUS_MEM_FAILURE;
21804 }
21805
21806 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21807 pEventDataQueue->pUserData = pEventData->pUserData;
21808 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21809 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021811
21812 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21813 pEventDataQueue->pEventData = pEventInfo;
21814
21815 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021817
21818 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021819 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021820
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021822
21823 /*We need to maintain a separate list that keeps track of the order in which
21824 the new assoc requests are being queued such that we can start processing
21825 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 pSessionIdElement->ucIndex = i;
21827 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021828
21829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21830 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021832
21833 /*Return pending as this is what the status of the request is since it has
21834 been queued*/
21835 return WDI_STATUS_PENDING;
21836}/*WDI_QueueNewAssocRequest*/
21837
21838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 away.- The assoc requests will be queued by BSSID
21842 @param
21843
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 pWDICtx: - pointer to the WDI control block
21845 pSession: - session in which to queue
21846 pEventData: pointer to the event info that needs to be
21847 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021848
21849 @see
21850 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021851*/
21852WDI_Status
21853WDI_QueueAssocRequest
21854(
21855 WDI_ControlBlockType* pWDICtx,
21856 WDI_BSSSessionType* pSession,
21857 WDI_EventInfoType* pEventData
21858)
21859{
Jeff Johnsone7245742012-09-05 17:12:55 -070021860 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021861 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021864
21865 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 Sanity check
21867 ------------------------------------------------------------------------*/
21868 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21869 {
21870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021872
Jeff Johnsone7245742012-09-05 17:12:55 -070021873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 }
21875
21876 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021878 ------------------------------------------------------------------------*/
21879 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21880 if ( NULL == pEventDataQueue )
21881 {
21882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021883 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 WDI_ASSERT(0);
21885 return WDI_STATUS_MEM_FAILURE;
21886 }
21887
21888 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21889 if ( NULL == pEventInfo )
21890 {
21891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21892 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021893 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021894 WDI_ASSERT(0);
21895 wpalMemoryFree(pEventDataQueue);
21896 return WDI_STATUS_MEM_FAILURE;
21897 }
21898
21899 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21900 pEventDataQueue->pUserData = pEventData->pUserData;
21901 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21902 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 pEventDataQueue->pEventData = pEventInfo;
21905
21906 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21907
21908 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021910
21911 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021912 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021915
21916 /*The result of this operation is pending because the request has been
21917 queued and it will be processed at a later moment in time */
21918 return WDI_STATUS_PENDING;
21919}/*WDI_QueueAssocRequest*/
21920
21921/**
21922 @brief Utility function used by the DAL Core to help dequeue
21923 an association request that was pending
21924 The request will be queued up in front of the main
21925 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 @param
21927
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021929
21930
21931 @see
21932 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021933*/
21934WDI_Status
21935WDI_DequeueAssocRequest
21936(
21937 WDI_ControlBlockType* pWDICtx
21938)
21939{
Jeff Johnsone7245742012-09-05 17:12:55 -070021940 wpt_list_node* pNode = NULL;
21941 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942 WDI_BSSSessionType* pSession;
21943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021944
21945 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 Sanity check
21947 ------------------------------------------------------------------------*/
21948 if ( NULL == pWDICtx )
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 Johnson295189b2012-06-20 16:38:30 -070021952
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 }
21955
21956 /*------------------------------------------------------------------------
21957 An association has been completed => a new association can occur
21958 Check to see if there are any pending associations ->
21959 If so , transfer all the pending requests into the busy queue for
21960 processing
21961 These requests have arrived prior to the requests in the busy queue
21962 (bc they needed to be processed in order to be placed in this queue)
21963 => they will be placed at the front of the busy queue
21964 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021966
21967 if ( NULL == pNode )
21968 {
21969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021970 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 return WDI_STATUS_SUCCESS;
21972 }
21973
21974 /*The node actually points to the 1st element inside the Session Id struct -
21975 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021977
21978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21979 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21980
21981 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21982 {
21983 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021984
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 the front of the main waiting queue for subsequent execution*/
21987 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 while ( NULL != pNode )
21989 {
21990 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21992 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 }
21996 else
21997 {
21998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022000 WPAL_ASSERT(0);
22001 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022003 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022004
Jeff Johnson295189b2012-06-20 16:38:30 -070022005 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22006 wpalMemoryFree(pSessionIdElement);
22007 return WDI_STATUS_SUCCESS;
22008}/*WDI_DequeueAssocRequest*/
22009
22010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 pending requests - all req cb will be called with
22013 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 @param
22015
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022017
22018 @see
22019 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022020*/
22021WDI_Status
22022WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022023(
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 WDI_ControlBlockType* pWDICtx
22025)
22026{
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 void* pUserData;
22031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22032
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022034
22035 /*------------------------------------------------------------------------
22036 Go through all the requests and fail them - this will only be called
22037 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 ------------------------------------------------------------------------*/
22040 while( pNode )
22041 {
22042 /*The node actually points to the 1st element inside the Event Data struct -
22043 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 pEventDataQueue = (WDI_EventInfoType*)pNode;
22045
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22047 if ( NULL != pfnReqStatusCB )
22048 {
22049 /*Fail the request*/
22050 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22051 }
22052 /* Free data - that was allocated when queueing */
22053 if ( pEventDataQueue->pEventData != NULL )
22054 {
22055 wpalMemoryFree(pEventDataQueue->pEventData);
22056 }
22057 wpalMemoryFree(pEventDataQueue);
22058
22059 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22060 {
22061 break;
22062 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 }
22064
Jeff Johnson295189b2012-06-20 16:38:30 -070022065 return WDI_STATUS_SUCCESS;
22066}/*WDI_ClearPendingRequests*/
22067
22068/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022069 @brief Helper routine used to init the BSS Sessions in the WDI control block
22070
22071
22072 @param pWDICtx: pointer to the WLAN DAL context
22073
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 @see
22075*/
22076void
22077WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022078(
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 WDI_ControlBlockType* pWDICtx
22080)
22081{
Jeff Johnsone7245742012-09-05 17:12:55 -070022082 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22084
22085 /*-------------------------------------------------------------------------
22086 No Sanity check
22087 -------------------------------------------------------------------------*/
22088 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22089 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022090 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022091 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22092 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22093 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22094 }
22095}/*WDI_ResetAssocSessions*/
22096
22097/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022098 @brief Helper routine used to find a session based on the BSSID
22099
22100
22101 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 pSession: pointer to the session (if found)
22104
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022107*/
22108wpt_uint8
22109WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022110(
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 WDI_ControlBlockType* pWDICtx,
22112 wpt_macAddr macBSSID,
22113 WDI_BSSSessionType** ppSession
22114)
22115{
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22118
22119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 -------------------------------------------------------------------------*/
22122 if ( NULL == ppSession )
22123 {
22124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022125 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 }
22128
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022130
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 /*------------------------------------------------------------------------
22132 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 ------------------------------------------------------------------------*/
22134 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22135 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022136 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22137 (eWLAN_PAL_TRUE ==
22138 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22139 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 {
22141 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 return i;
22144 }
22145 }
22146
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022148}/*WDI_FindAssocSession*/
22149
22150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022151 @brief Helper routine used to find a session based on the BSSID
22152
22153
22154 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 ucBSSIdx: BSS Index of the session
22156 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022157
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022160*/
22161wpt_uint8
22162WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022163(
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 WDI_ControlBlockType* pWDICtx,
22165 wpt_uint16 ucBSSIdx,
22166 WDI_BSSSessionType** ppSession
22167)
22168{
Jeff Johnsone7245742012-09-05 17:12:55 -070022169 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22171
22172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 -------------------------------------------------------------------------*/
22175 if ( NULL == ppSession )
22176 {
22177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022178 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 }
22181
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 /*------------------------------------------------------------------------
22185 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 ------------------------------------------------------------------------*/
22187 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22188 {
22189 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22190 {
22191 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 return i;
22194 }
22195 }
22196
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022198}/*WDI_FindAssocSessionByBSSIdx*/
22199
22200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022201 @brief Helper routine used to find a session based on the BSSID
22202
22203
22204 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 ucBSSIdx: BSS Index of the session
22206 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022207
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022210*/
22211wpt_uint8
22212WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022213(
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 WDI_ControlBlockType* pWDICtx,
22215 wpt_uint16 usIdx,
22216 WDI_BSSSessionType** ppSession
22217)
22218{
22219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22220
22221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 -------------------------------------------------------------------------*/
22224 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
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 Johnsone7245742012-09-05 17:12:55 -070022228 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022229 }
22230
22231 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022233
22234 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022235
Jeff Johnson295189b2012-06-20 16:38:30 -070022236}/*WDI_FindAssocSessionByBSSIdx*/
22237
22238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022241
22242
22243 @param pWDICtx: pointer to the WLAN DAL context
22244 pSession: pointer to the session (if found)
22245
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022248*/
22249wpt_uint8
22250WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022251(
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 WDI_ControlBlockType* pWDICtx,
22253 WDI_BSSSessionType** ppSession
22254)
22255{
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 -------------------------------------------------------------------------*/
22261 if ( NULL == ppSession )
22262 {
22263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022264 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 }
22267
Jeff Johnsone7245742012-09-05 17:12:55 -070022268 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022269
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 /*------------------------------------------------------------------------
22271 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 ------------------------------------------------------------------------*/
22273 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22274 {
22275 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22276 {
22277 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 return i;
22280 }
22281 }
22282
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022284}/*WDI_FindEmptySession*/
22285
22286
22287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022290
22291
22292 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022293 macBSSID: pointer to BSSID. If NULL, get all the session.
22294 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22295 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22296 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022297 @see
22298 @return Number of sessions in use
22299*/
22300wpt_uint8
22301WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022302(
Hoonki Lee26599972013-04-24 01:21:58 -070022303 WDI_ControlBlockType* pWDICtx,
22304 wpt_macAddr macBSSID,
22305 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022306)
22307{
Jeff Johnsone7245742012-09-05 17:12:55 -070022308 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022310
22311 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022312 Count all sessions in use
22313 ------------------------------------------------------------------------*/
22314 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22315 {
Hoonki Lee26599972013-04-24 01:21:58 -070022316 if ( macBSSID && skipBSSID &&
22317 (eWLAN_PAL_TRUE ==
22318 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22319 WDI_MAC_ADDR_LEN)))
22320 {
22321 continue;
22322 }
22323 else if ( pWDICtx->aBSSSessions[i].bInUse )
22324 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022326 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 }
22328
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022330}/*WDI_GetActiveSessionsCount*/
22331
22332/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022333 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022335
22336
22337 @param pWDICtx: pointer to the WLAN DAL context
22338 pSession: pointer to the session (if found)
22339
Jeff Johnson295189b2012-06-20 16:38:30 -070022340 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022342*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022343void
Jeff Johnson295189b2012-06-20 16:38:30 -070022344WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022345(
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 WDI_ControlBlockType* pWDICtx,
22347 WDI_BSSSessionType* ppSession
22348)
22349{
22350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 -------------------------------------------------------------------------*/
22353 if ( NULL == ppSession )
22354 {
22355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022356 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022357 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 }
22359
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 /*------------------------------------------------------------------------
22361 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 ------------------------------------------------------------------------*/
22363 wpal_list_destroy(&ppSession->wptPendingQueue);
22364 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22366 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22368 wpal_list_init(&ppSession->wptPendingQueue);
22369
22370}/*WDI_DeleteSession*/
22371
22372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 @param
22376
Jeff Johnson295189b2012-06-20 16:38:30 -070022377 WDI_AddStaParams: - pointer to the WDI Add STA params
22378 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022379
22380 @see
22381 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022382*/
22383void
22384WDI_AddBcastSTAtoSTATable
22385(
22386 WDI_ControlBlockType* pWDICtx,
22387 WDI_AddStaParams * staParams,
22388 wpt_uint16 usBcastStaIdx
22389)
22390{
22391 WDI_AddStaParams wdiAddSTAParam = {0};
22392 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22394
22395 /*---------------------------------------------------------------------
22396 Sanity check
22397 ---------------------------------------------------------------------*/
22398 if ( NULL == staParams )
22399 {
22400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022402
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404 }
22405
22406 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22407 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22408 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22409 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22410 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22411 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22412 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22413 WDI_MAC_ADDR_LEN );
22414 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22415 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22416 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22417 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22418 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22419 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22420 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022421
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22423}
22424
22425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 @brief NV blob will be divided into fragments of size 4kb and
22427 Sent to HAL
22428
22429 @param pWDICtx: pointer to the WLAN DAL context
22430 pEventData: pointer to the event information structure
22431
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 @see
22433 @return Result of the function call
22434 */
22435
22436WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022437(
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 WDI_ControlBlockType* pWDICtx,
22439 WDI_EventInfoType* pEventData
22440)
22441{
22442
22443 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22444 wpt_uint8* pSendBuffer = NULL;
22445 wpt_uint16 usDataOffset = 0;
22446 wpt_uint16 usSendSize = 0;
22447 wpt_uint16 usCurrentFragmentSize =0;
22448 wpt_uint8* pSrcBuffer = NULL;
22449 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22450 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22451
22452 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22453 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22454 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22455
Jeff Johnsone7245742012-09-05 17:12:55 -070022456 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22458
22459 /* Update the current Fragment Number */
22460 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22461
22462 /*Update the HAL REQ structure */
22463 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22464 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22465 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22466
22467 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022468 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 image will be sent to HAL*/
22470
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22477 usCurrentFragmentSize = FRAGMENT_SIZE;
22478
22479 /*Update the HAL REQ structure */
22480 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22481 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22482
22483 }
22484 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 usCurrentFragmentSize = FRAGMENT_SIZE;
22487
22488 /*Update the HAL REQ structure */
22489 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22490 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22491 }
22492
22493 /*-----------------------------------------------------------------------
22494 Get message buffer
22495 -----------------------------------------------------------------------*/
22496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22497 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22498 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22501 {
22502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022503 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 pEventData, pwdiNvDownloadReqParams);
22505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 }
22508
22509 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022510 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22512
22513 /* Appending the NV image fragment */
22514 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22515 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22516 usCurrentFragmentSize);
22517
22518 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022520
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22522 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 WDI_NV_DOWNLOAD_RESP);
22524
22525}
Jeff Johnsone7245742012-09-05 17:12:55 -070022526/*============================================================================
22527 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 ============================================================================*/
22529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022530 @brief Helper routine used to find a session based on the BSSID
22531 @param pContext: pointer to the WLAN DAL context
22532 @param pDPContext: pointer to the Datapath context
22533
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022535 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022536*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022537WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022538WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22539{
22540 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22541
22542 pCB->pDPContext = pDPContext;
22543 return;
22544}
22545
22546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022547 @brief Helper routine used to find a session based on the BSSID
22548
22549
22550 @param pContext: pointer to the WLAN DAL context
22551
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 @see
22553 @return pointer to Datapath context
22554*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022555WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022556WDI_DS_GetDatapathContext (void *pContext)
22557{
22558 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22559 return pCB->pDPContext;
22560}
22561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 @brief Helper routine used to find a session based on the BSSID
22563
22564
22565 @param pContext: pointer to the WLAN DAL context
22566 @param pDTDriverContext: pointer to the Transport Driver context
22567
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 @see
22569 @return void
22570*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022571WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022572WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22573{
22574 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22575
22576 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022577 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022578}
22579
22580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 @brief Helper routine used to find a session based on the BSSID
22582
22583
22584 @param pWDICtx: pointer to the WLAN DAL context
22585
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022588*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022589WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022590WDT_GetTransportDriverContext (void *pContext)
22591{
22592 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022593 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022594}
22595
Jeff Johnsone7245742012-09-05 17:12:55 -070022596/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 Helper inline converters
22598 ============================================================================*/
22599/*Convert WDI driver type into HAL driver type*/
22600WPT_STATIC WPT_INLINE WDI_Status
22601WDI_HAL_2_WDI_STATUS
22602(
22603 eHalStatus halStatus
22604)
22605{
Jeff Johnsone7245742012-09-05 17:12:55 -070022606 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022607 the chances of getting inlined*/
22608 switch( halStatus )
22609 {
22610 case eHAL_STATUS_SUCCESS:
22611 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22612 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22613 return WDI_STATUS_SUCCESS;
22614 case eHAL_STATUS_FAILURE:
22615 return WDI_STATUS_E_FAILURE;
22616 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022617 return WDI_STATUS_MEM_FAILURE;
22618 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 default:
22621 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22622 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022623
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022625}/*WDI_HAL_2_WDI_STATUS*/
22626
22627/*Convert WDI request type into HAL request type*/
22628WPT_STATIC WPT_INLINE tHalHostMsgType
22629WDI_2_HAL_REQ_TYPE
22630(
22631 WDI_RequestEnumType wdiReqType
22632)
22633{
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 the chances of getting inlined*/
22636 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022638 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022651 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 return WLAN_HAL_RMV_STAKEY_REQ;
22673 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022674 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022679 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022680 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022681 case WDI_DEL_BA_REQ:
22682 return WLAN_HAL_DEL_BA_REQ;
22683#ifdef FEATURE_WLAN_CCX
22684 case WDI_TSM_STATS_REQ:
22685 return WLAN_HAL_TSM_STATS_REQ;
22686#endif
22687 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 case WDI_ADD_BA_SESSION_REQ:
22698 return WLAN_HAL_ADD_BA_SESSION_REQ;
22699 case WDI_TRIGGER_BA_REQ:
22700 return WLAN_HAL_TRIGGER_BA_REQ;
22701 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22706 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22707 case WDI_SET_MAX_TX_POWER_REQ:
22708 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussainfc753992013-08-09 15:09:58 -070022709 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22710 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schangd82195a2013-03-13 18:41:24 -070022711 case WDI_SET_TX_POWER_REQ:
22712 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22714 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022715#ifdef FEATURE_WLAN_TDLS
22716 case WDI_TDLS_LINK_ESTABLISH_REQ:
22717 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22718#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_REM_BEACON_FILTER_REQ:
22740 return WLAN_HAL_REM_BCN_FILTER_REQ;
22741 case WDI_SET_RSSI_THRESHOLDS_REQ:
22742 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22743 case WDI_HOST_OFFLOAD_REQ:
22744 return WLAN_HAL_HOST_OFFLOAD_REQ;
22745 case WDI_WOWL_ADD_BC_PTRN_REQ:
22746 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22747 case WDI_WOWL_DEL_BC_PTRN_REQ:
22748 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22749 case WDI_WOWL_ENTER_REQ:
22750 return WLAN_HAL_ENTER_WOWL_REQ;
22751 case WDI_WOWL_EXIT_REQ:
22752 return WLAN_HAL_EXIT_WOWL_REQ;
22753 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22754 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22755 case WDI_NV_DOWNLOAD_REQ:
22756 return WLAN_HAL_DOWNLOAD_NV_REQ;
22757 case WDI_FLUSH_AC_REQ:
22758 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22759 case WDI_BTAMP_EVENT_REQ:
22760 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22761#ifdef WLAN_FEATURE_VOWIFI_11R
22762 case WDI_AGGR_ADD_TS_REQ:
22763 return WLAN_HAL_AGGR_ADD_TS_REQ;
22764#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 case WDI_FTM_CMD_REQ:
22766 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 case WDI_ADD_STA_SELF_REQ:
22768 return WLAN_HAL_ADD_STA_SELF_REQ;
22769 case WDI_DEL_STA_SELF_REQ:
22770 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022771#ifdef FEATURE_OEM_DATA_SUPPORT
22772 case WDI_START_OEM_DATA_REQ:
22773 return WLAN_HAL_START_OEM_DATA_REQ;
22774#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022775 case WDI_HOST_RESUME_REQ:
22776 return WLAN_HAL_HOST_RESUME_REQ;
22777 case WDI_HOST_SUSPEND_IND:
22778 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022779 case WDI_TRAFFIC_STATS_IND:
22780 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022781#ifdef WLAN_FEATURE_11W
22782 case WDI_EXCLUDE_UNENCRYPTED_IND:
22783 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22784#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 case WDI_KEEP_ALIVE_REQ:
22786 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022787#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022788 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22789 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022790#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022791#ifdef FEATURE_WLAN_SCAN_PNO
22792 case WDI_SET_PREF_NETWORK_REQ:
22793 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22794 case WDI_SET_RSSI_FILTER_REQ:
22795 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22796 case WDI_UPDATE_SCAN_PARAMS_REQ:
22797 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22798#endif // FEATURE_WLAN_SCAN_PNO
22799 case WDI_SET_TX_PER_TRACKING_REQ:
22800 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22801#ifdef WLAN_FEATURE_PACKET_FILTERING
22802 case WDI_8023_MULTICAST_LIST_REQ:
22803 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22804 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22807 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22808 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22809 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22810#endif // WLAN_FEATURE_PACKET_FILTERING
22811 case WDI_HAL_DUMP_CMD_REQ:
22812 return WLAN_HAL_DUMP_COMMAND_REQ;
22813#ifdef WLAN_FEATURE_GTK_OFFLOAD
22814 case WDI_GTK_OFFLOAD_REQ:
22815 return WLAN_HAL_GTK_OFFLOAD_REQ;
22816 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22817 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22818#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22819
22820 case WDI_INIT_SCAN_CON_REQ:
22821 return WLAN_HAL_INIT_SCAN_CON_REQ;
22822 case WDI_SET_POWER_PARAMS_REQ:
22823 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22824 case WDI_SET_TM_LEVEL_REQ:
22825 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22826 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22827 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022828#ifdef WLAN_FEATURE_11AC
22829 case WDI_UPDATE_VHT_OP_MODE_REQ:
22830 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22831#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022832 case WDI_GET_ROAM_RSSI_REQ:
22833 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022834 case WDI_DHCP_START_IND:
22835 return WLAN_HAL_DHCP_START_IND;
22836 case WDI_DHCP_STOP_IND:
22837 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022838#ifdef FEATURE_WLAN_LPHB
22839 case WDI_LPHB_CFG_REQ:
22840 return WLAN_HAL_LPHB_CFG_REQ;
22841#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022842 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22843 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22844 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22845 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22846
Rajeev3db91f12013-10-05 11:03:42 +053022847#ifdef FEATURE_WLAN_BATCH_SCAN
22848 case WDI_SET_BATCH_SCAN_REQ:
22849 return WLAN_HAL_BATCHSCAN_SET_REQ;
22850 case WDI_STOP_BATCH_SCAN_IND:
22851 return WLAN_HAL_BATCHSCAN_STOP_IND;
22852 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22853 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22854#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022855 case WDI_RATE_UPDATE_IND:
22856 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022857
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022861
Jeff Johnson295189b2012-06-20 16:38:30 -070022862}/*WDI_2_HAL_REQ_TYPE*/
22863
22864/*Convert WDI response type into HAL response type*/
22865WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22866HAL_2_WDI_RSP_TYPE
22867(
22868 tHalHostMsgType halMsg
22869)
22870{
Jeff Johnsone7245742012-09-05 17:12:55 -070022871 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 the chances of getting inlined*/
22873 switch( halMsg )
22874 {
22875 case WLAN_HAL_START_RSP:
22876 return WDI_START_RESP;
22877 case WLAN_HAL_STOP_RSP:
22878 return WDI_STOP_RESP;
22879 case WLAN_HAL_INIT_SCAN_RSP:
22880 return WDI_INIT_SCAN_RESP;
22881 case WLAN_HAL_START_SCAN_RSP:
22882 return WDI_START_SCAN_RESP;
22883 case WLAN_HAL_END_SCAN_RSP:
22884 return WDI_END_SCAN_RESP;
22885 case WLAN_HAL_FINISH_SCAN_RSP:
22886 return WDI_FINISH_SCAN_RESP;
22887 case WLAN_HAL_CONFIG_STA_RSP:
22888 return WDI_CONFIG_STA_RESP;
22889 case WLAN_HAL_DELETE_STA_RSP:
22890 return WDI_DEL_STA_RESP;
22891 case WLAN_HAL_CONFIG_BSS_RSP:
22892 return WDI_CONFIG_BSS_RESP;
22893 case WLAN_HAL_DELETE_BSS_RSP:
22894 return WDI_DEL_BSS_RESP;
22895 case WLAN_HAL_JOIN_RSP:
22896 return WDI_JOIN_RESP;
22897 case WLAN_HAL_POST_ASSOC_RSP:
22898 return WDI_POST_ASSOC_RESP;
22899 case WLAN_HAL_SET_BSSKEY_RSP:
22900 return WDI_SET_BSS_KEY_RESP;
22901 case WLAN_HAL_SET_STAKEY_RSP:
22902 return WDI_SET_STA_KEY_RESP;
22903 case WLAN_HAL_RMV_BSSKEY_RSP:
22904 return WDI_RMV_BSS_KEY_RESP;
22905 case WLAN_HAL_RMV_STAKEY_RSP:
22906 return WDI_RMV_STA_KEY_RESP;
22907 case WLAN_HAL_SET_BCASTKEY_RSP:
22908 return WDI_SET_STA_BCAST_KEY_RESP;
22909 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22910 // return WDI_RMV_STA_BCAST_KEY_RESP;
22911 case WLAN_HAL_ADD_TS_RSP:
22912 return WDI_ADD_TS_RESP;
22913 case WLAN_HAL_DEL_TS_RSP:
22914 return WDI_DEL_TS_RESP;
22915 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22916 return WDI_UPD_EDCA_PRMS_RESP;
22917 case WLAN_HAL_ADD_BA_RSP:
22918 return WDI_ADD_BA_RESP;
22919 case WLAN_HAL_DEL_BA_RSP:
22920 return WDI_DEL_BA_RESP;
22921#ifdef FEATURE_WLAN_CCX
22922 case WLAN_HAL_TSM_STATS_RSP:
22923 return WDI_TSM_STATS_RESP;
22924#endif
22925 case WLAN_HAL_CH_SWITCH_RSP:
22926 return WDI_CH_SWITCH_RESP;
22927 case WLAN_HAL_SET_LINK_ST_RSP:
22928 return WDI_SET_LINK_ST_RESP;
22929 case WLAN_HAL_GET_STATS_RSP:
22930 return WDI_GET_STATS_RESP;
22931 case WLAN_HAL_UPDATE_CFG_RSP:
22932 return WDI_UPDATE_CFG_RESP;
22933 case WLAN_HAL_ADD_BA_SESSION_RSP:
22934 return WDI_ADD_BA_SESSION_RESP;
22935 case WLAN_HAL_TRIGGER_BA_RSP:
22936 return WDI_TRIGGER_BA_RESP;
22937 case WLAN_HAL_UPDATE_BEACON_RSP:
22938 return WDI_UPD_BCON_PRMS_RESP;
22939 case WLAN_HAL_SEND_BEACON_RSP:
22940 return WDI_SND_BCON_RESP;
22941 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22942 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22943 /*Indications*/
22944 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22945 return WDI_HAL_RSSI_NOTIFICATION_IND;
22946 case WLAN_HAL_MISSED_BEACON_IND:
22947 return WDI_HAL_MISSED_BEACON_IND;
22948 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22949 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22950 case WLAN_HAL_MIC_FAILURE_IND:
22951 return WDI_HAL_MIC_FAILURE_IND;
22952 case WLAN_HAL_FATAL_ERROR_IND:
22953 return WDI_HAL_FATAL_ERROR_IND;
22954 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22955 return WDI_HAL_DEL_STA_IND;
22956 case WLAN_HAL_COEX_IND:
22957 return WDI_HAL_COEX_IND;
22958 case WLAN_HAL_OTA_TX_COMPL_IND:
22959 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022960 case WLAN_HAL_P2P_NOA_ATTR_IND:
22961 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022962 case WLAN_HAL_P2P_NOA_START_IND:
22963 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022964 case WLAN_HAL_TX_PER_HIT_IND:
22965 return WDI_HAL_TX_PER_HIT_IND;
22966 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22967 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussainfc753992013-08-09 15:09:58 -070022968 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
22969 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schangd82195a2013-03-13 18:41:24 -070022970 case WLAN_HAL_SET_TX_POWER_RSP:
22971 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 case WLAN_HAL_SET_P2P_GONOA_RSP:
22973 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022974#ifdef FEATURE_WLAN_TDLS
22975 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22976 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22977 case WLAN_HAL_TDLS_IND:
22978 return WDI_HAL_TDLS_IND;
22979#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022981 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022985 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22999 return WDI_SET_BEACON_FILTER_RESP;
23000 case WLAN_HAL_REM_BCN_FILTER_RSP:
23001 return WDI_REM_BEACON_FILTER_RESP;
23002 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23003 return WDI_SET_RSSI_THRESHOLDS_RESP;
23004 case WLAN_HAL_HOST_OFFLOAD_RSP:
23005 return WDI_HOST_OFFLOAD_RESP;
23006 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23007 return WDI_WOWL_ADD_BC_PTRN_RESP;
23008 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23009 return WDI_WOWL_DEL_BC_PTRN_RESP;
23010 case WLAN_HAL_ENTER_WOWL_RSP:
23011 return WDI_WOWL_ENTER_RESP;
23012 case WLAN_HAL_EXIT_WOWL_RSP:
23013 return WDI_WOWL_EXIT_RESP;
23014 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23015 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23016 case WLAN_HAL_DOWNLOAD_NV_RSP:
23017 return WDI_NV_DOWNLOAD_RESP;
23018 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23019 return WDI_FLUSH_AC_RESP;
23020 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23021 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 case WLAN_HAL_PROCESS_PTT_RSP:
23023 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023024 case WLAN_HAL_ADD_STA_SELF_RSP:
23025 return WDI_ADD_STA_SELF_RESP;
23026case WLAN_HAL_DEL_STA_SELF_RSP:
23027 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023028#ifdef FEATURE_OEM_DATA_SUPPORT
23029 case WLAN_HAL_START_OEM_DATA_RSP:
23030 return WDI_START_OEM_DATA_RESP;
23031#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023032 case WLAN_HAL_HOST_RESUME_RSP:
23033 return WDI_HOST_RESUME_RESP;
23034 case WLAN_HAL_KEEP_ALIVE_RSP:
23035 return WDI_KEEP_ALIVE_RESP;
23036#ifdef FEATURE_WLAN_SCAN_PNO
23037 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23038 return WDI_SET_PREF_NETWORK_RESP;
23039 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023040 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23042 return WDI_UPDATE_SCAN_PARAMS_RESP;
23043 case WLAN_HAL_PREF_NETW_FOUND_IND:
23044 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23045#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023046#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023047 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23048 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023049#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23051 return WDI_SET_TX_PER_TRACKING_RESP;
23052#ifdef WLAN_FEATURE_PACKET_FILTERING
23053 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23054 return WDI_8023_MULTICAST_LIST_RESP;
23055 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23056 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23057 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23058 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23059 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23060 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23061#endif // WLAN_FEATURE_PACKET_FILTERING
23062
23063 case WLAN_HAL_DUMP_COMMAND_RSP:
23064 return WDI_HAL_DUMP_CMD_RESP;
23065 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23066 return WDI_SET_POWER_PARAMS_RESP;
23067#ifdef WLAN_FEATURE_VOWIFI_11R
23068 case WLAN_HAL_AGGR_ADD_TS_RSP:
23069 return WDI_AGGR_ADD_TS_RESP;
23070#endif
23071
23072#ifdef WLAN_FEATURE_GTK_OFFLOAD
23073 case WLAN_HAL_GTK_OFFLOAD_RSP:
23074 return WDI_GTK_OFFLOAD_RESP;
23075 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23076 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23077#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23078#ifdef WLAN_WAKEUP_EVENTS
23079 case WLAN_HAL_WAKE_REASON_IND:
23080 return WDI_HAL_WAKE_REASON_IND;
23081#endif // WLAN_WAKEUP_EVENTS
23082
23083 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23084 return WDI_SET_TM_LEVEL_RESP;
23085 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23086 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023087#ifdef WLAN_FEATURE_11AC
23088 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23089 return WDI_UPDATE_VHT_OP_MODE_RESP;
23090#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023091#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23092 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23093 return WDI_GET_ROAM_RSSI_RESP;
23094#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070023095
Leo Chang00bc9132013-08-01 19:21:11 -070023096#ifdef FEATURE_WLAN_LPHB
23097 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070023098 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070023099 case WLAN_HAL_LPHB_CFG_RSP:
23100 return WDI_LPHB_CFG_RESP;
23101#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070023102
23103 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23104 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070023105 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23106 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070023107
Rajeev3db91f12013-10-05 11:03:42 +053023108#ifdef FEATURE_WLAN_BATCH_SCAN
23109 case WLAN_HAL_BATCHSCAN_SET_RSP:
23110 return WDI_SET_BATCH_SCAN_RESP;
23111 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23112 return WDI_BATCHSCAN_RESULT_IND;
23113#endif // FEATURE_WLAN_BATCH_SCAN
23114
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 }
23118
23119}/*HAL_2_WDI_RSP_TYPE*/
23120
23121
23122/*Convert WDI driver type into HAL driver type*/
23123WPT_STATIC WPT_INLINE tDriverType
23124WDI_2_HAL_DRV_TYPE
23125(
23126 WDI_DriverType wdiDriverType
23127)
23128{
Jeff Johnsone7245742012-09-05 17:12:55 -070023129 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023130 the chances of getting inlined*/
23131 switch( wdiDriverType )
23132 {
23133 case WDI_DRIVER_TYPE_PRODUCTION:
23134 return eDRIVER_TYPE_PRODUCTION;
23135 case WDI_DRIVER_TYPE_MFG:
23136 return eDRIVER_TYPE_MFG;
23137 case WDI_DRIVER_TYPE_DVT:
23138 return eDRIVER_TYPE_DVT;
23139 }
23140
Jeff Johnsone7245742012-09-05 17:12:55 -070023141 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023142}/*WDI_2_HAL_DRV_TYPE*/
23143
23144
23145/*Convert WDI stop reason into HAL stop reason*/
23146WPT_STATIC WPT_INLINE tHalStopType
23147WDI_2_HAL_STOP_REASON
23148(
23149 WDI_StopType wdiDriverType
23150)
23151{
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 the chances of getting inlined*/
23154 switch( wdiDriverType )
23155 {
23156 case WDI_STOP_TYPE_SYS_RESET:
23157 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023158 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23159 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 case WDI_STOP_TYPE_RF_KILL:
23161 return HAL_STOP_TYPE_RF_KILL;
23162 }
23163
Jeff Johnsone7245742012-09-05 17:12:55 -070023164 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023165}/*WDI_2_HAL_STOP_REASON*/
23166
23167
23168/*Convert WDI scan mode type into HAL scan mode type*/
23169WPT_STATIC WPT_INLINE eHalSysMode
23170WDI_2_HAL_SCAN_MODE
23171(
23172 WDI_ScanMode wdiScanMode
23173)
23174{
Jeff Johnsone7245742012-09-05 17:12:55 -070023175 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 the chances of getting inlined*/
23177 switch( wdiScanMode )
23178 {
23179 case WDI_SCAN_MODE_NORMAL:
23180 return eHAL_SYS_MODE_NORMAL;
23181 case WDI_SCAN_MODE_LEARN:
23182 return eHAL_SYS_MODE_LEARN;
23183 case WDI_SCAN_MODE_SCAN:
23184 return eHAL_SYS_MODE_SCAN;
23185 case WDI_SCAN_MODE_PROMISC:
23186 return eHAL_SYS_MODE_PROMISC;
23187 case WDI_SCAN_MODE_SUSPEND_LINK:
23188 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023189 case WDI_SCAN_MODE_ROAM_SCAN:
23190 return eHAL_SYS_MODE_ROAM_SCAN;
23191 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23192 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 }
23194
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023196}/*WDI_2_HAL_SCAN_MODE*/
23197
23198/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023199WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023200WDI_2_HAL_SEC_CH_OFFSET
23201(
23202 WDI_HTSecondaryChannelOffset wdiSecChOffset
23203)
23204{
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 the chances of getting inlined*/
23207 switch( wdiSecChOffset )
23208 {
23209 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23215#ifdef WLAN_FEATURE_11AC
23216 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23217 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23218 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23219 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23220 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23221 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23222 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23223 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23224 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23225 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23226 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23227 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23228 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23229 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23230#endif
23231 default:
23232 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 }
23234
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023236}/*WDI_2_HAL_SEC_CH_OFFSET*/
23237
23238/*Convert WDI BSS type into HAL BSS type*/
23239WPT_STATIC WPT_INLINE tSirBssType
23240WDI_2_HAL_BSS_TYPE
23241(
23242 WDI_BssType wdiBSSType
23243)
23244{
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 the chances of getting inlined*/
23247 switch( wdiBSSType )
23248 {
23249 case WDI_INFRASTRUCTURE_MODE:
23250 return eSIR_INFRASTRUCTURE_MODE;
23251 case WDI_INFRA_AP_MODE:
23252 return eSIR_INFRA_AP_MODE;
23253 case WDI_IBSS_MODE:
23254 return eSIR_IBSS_MODE;
23255 case WDI_BTAMP_STA_MODE:
23256 return eSIR_BTAMP_STA_MODE;
23257 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 case WDI_BSS_AUTO_MODE:
23260 return eSIR_AUTO_MODE;
23261 }
23262
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023264}/*WDI_2_HAL_BSS_TYPE*/
23265
23266/*Convert WDI NW type into HAL NW type*/
23267WPT_STATIC WPT_INLINE tSirNwType
23268WDI_2_HAL_NW_TYPE
23269(
23270 WDI_NwType wdiNWType
23271)
23272{
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 the chances of getting inlined*/
23275 switch( wdiNWType )
23276 {
23277 case WDI_11A_NW_TYPE:
23278 return eSIR_11A_NW_TYPE;
23279 case WDI_11B_NW_TYPE:
23280 return eSIR_11B_NW_TYPE;
23281 case WDI_11G_NW_TYPE:
23282 return eSIR_11G_NW_TYPE;
23283 case WDI_11N_NW_TYPE:
23284 return eSIR_11N_NW_TYPE;
23285 }
23286
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023288}/*WDI_2_HAL_NW_TYPE*/
23289
23290/*Convert WDI chanel bonding type into HAL cb type*/
23291WPT_STATIC WPT_INLINE ePhyChanBondState
23292WDI_2_HAL_CB_STATE
23293(
23294 WDI_PhyChanBondState wdiCbState
23295)
23296{
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 the chances of getting inlined*/
23299 switch ( wdiCbState )
23300 {
23301 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23302 return PHY_SINGLE_CHANNEL_CENTERED;
23303 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23304 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23305 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23306 return PHY_DOUBLE_CHANNEL_CENTERED;
23307 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23308 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023309#ifdef WLAN_FEATURE_11AC
23310 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23311 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23312 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23313 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23314 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23315 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23316 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23317 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23318 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23319 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23320 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23321 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23322 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23323 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23324#endif
23325 case WDI_MAX_CB_STATE:
23326 default:
23327 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023329
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 return PHY_CHANNEL_BONDING_STATE_MAX;
23331}/*WDI_2_HAL_CB_STATE*/
23332
23333/*Convert WDI chanel bonding type into HAL cb type*/
23334WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23335WDI_2_HAL_HT_OPER_MODE
23336(
23337 WDI_HTOperatingMode wdiHTOperMode
23338)
23339{
Jeff Johnsone7245742012-09-05 17:12:55 -070023340 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 the chances of getting inlined*/
23342 switch ( wdiHTOperMode )
23343 {
23344 case WDI_HT_OP_MODE_PURE:
23345 return eSIR_HT_OP_MODE_PURE;
23346 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23347 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23348 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23349 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23350 case WDI_HT_OP_MODE_MIXED:
23351 return eSIR_HT_OP_MODE_MIXED;
23352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023353
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 return eSIR_HT_OP_MODE_MAX;
23355}/*WDI_2_HAL_HT_OPER_MODE*/
23356
23357/*Convert WDI mimo PS type into HAL mimo PS type*/
23358WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23359WDI_2_HAL_MIMO_PS
23360(
23361 WDI_HTMIMOPowerSaveState wdiHTOperMode
23362)
23363{
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 the chances of getting inlined*/
23366 switch ( wdiHTOperMode )
23367 {
23368 case WDI_HT_MIMO_PS_STATIC:
23369 return eSIR_HT_MIMO_PS_STATIC;
23370 case WDI_HT_MIMO_PS_DYNAMIC:
23371 return eSIR_HT_MIMO_PS_DYNAMIC;
23372 case WDI_HT_MIMO_PS_NA:
23373 return eSIR_HT_MIMO_PS_NA;
23374 case WDI_HT_MIMO_PS_NO_LIMIT:
23375 return eSIR_HT_MIMO_PS_NO_LIMIT;
23376 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023377
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 return eSIR_HT_MIMO_PS_MAX;
23379}/*WDI_2_HAL_MIMO_PS*/
23380
23381/*Convert WDI ENC type into HAL ENC type*/
23382WPT_STATIC WPT_INLINE tAniEdType
23383WDI_2_HAL_ENC_TYPE
23384(
23385 WDI_EncryptType wdiEncType
23386)
23387{
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 the chances of getting inlined*/
23390 switch ( wdiEncType )
23391 {
23392 case WDI_ENCR_NONE:
23393 return eSIR_ED_NONE;
23394
23395 case WDI_ENCR_WEP40:
23396 return eSIR_ED_WEP40;
23397
23398 case WDI_ENCR_WEP104:
23399 return eSIR_ED_WEP104;
23400
23401 case WDI_ENCR_TKIP:
23402 return eSIR_ED_TKIP;
23403
23404 case WDI_ENCR_CCMP:
23405 return eSIR_ED_CCMP;
23406
23407 case WDI_ENCR_AES_128_CMAC:
23408 return eSIR_ED_AES_128_CMAC;
23409#if defined(FEATURE_WLAN_WAPI)
23410 case WDI_ENCR_WPI:
23411 return eSIR_ED_WPI;
23412#endif
23413 default:
23414 return eSIR_ED_NOT_IMPLEMENTED;
23415 }
23416
23417}/*WDI_2_HAL_ENC_TYPE*/
23418
23419/*Convert WDI WEP type into HAL WEP type*/
23420WPT_STATIC WPT_INLINE tAniWepType
23421WDI_2_HAL_WEP_TYPE
23422(
23423 WDI_WepType wdiWEPType
23424)
23425{
Jeff Johnsone7245742012-09-05 17:12:55 -070023426 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 the chances of getting inlined*/
23428 switch ( wdiWEPType )
23429 {
23430 case WDI_WEP_STATIC:
23431 return eSIR_WEP_STATIC;
23432
23433 case WDI_WEP_DYNAMIC:
23434 return eSIR_WEP_DYNAMIC;
23435 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023436
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 return eSIR_WEP_MAX;
23438}/*WDI_2_HAL_WEP_TYPE*/
23439
23440WPT_STATIC WPT_INLINE tSirLinkState
23441WDI_2_HAL_LINK_STATE
23442(
23443 WDI_LinkStateType wdiLinkState
23444)
23445{
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 the chances of getting inlined*/
23448 switch ( wdiLinkState )
23449 {
23450 case WDI_LINK_IDLE_STATE:
23451 return eSIR_LINK_IDLE_STATE;
23452
23453 case WDI_LINK_PREASSOC_STATE:
23454 return eSIR_LINK_PREASSOC_STATE;
23455
23456 case WDI_LINK_POSTASSOC_STATE:
23457 return eSIR_LINK_POSTASSOC_STATE;
23458
23459 case WDI_LINK_AP_STATE:
23460 return eSIR_LINK_AP_STATE;
23461
23462 case WDI_LINK_IBSS_STATE:
23463 return eSIR_LINK_IBSS_STATE;
23464
23465 case WDI_LINK_BTAMP_PREASSOC_STATE:
23466 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23467
23468 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23469 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23470
23471 case WDI_LINK_BTAMP_AP_STATE:
23472 return eSIR_LINK_BTAMP_AP_STATE;
23473
23474 case WDI_LINK_BTAMP_STA_STATE:
23475 return eSIR_LINK_BTAMP_STA_STATE;
23476
23477 case WDI_LINK_LEARN_STATE:
23478 return eSIR_LINK_LEARN_STATE;
23479
23480 case WDI_LINK_SCAN_STATE:
23481 return eSIR_LINK_SCAN_STATE;
23482
23483 case WDI_LINK_FINISH_SCAN_STATE:
23484 return eSIR_LINK_FINISH_SCAN_STATE;
23485
23486 case WDI_LINK_INIT_CAL_STATE:
23487 return eSIR_LINK_INIT_CAL_STATE;
23488
23489 case WDI_LINK_FINISH_CAL_STATE:
23490 return eSIR_LINK_FINISH_CAL_STATE;
23491
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 case WDI_LINK_LISTEN_STATE:
23493 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023494
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023495 case WDI_LINK_SEND_ACTION_STATE:
23496 return eSIR_LINK_SEND_ACTION_STATE;
23497
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 default:
23499 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023501}
23502
Jeff Johnsone7245742012-09-05 17:12:55 -070023503/*Translate a STA Context from WDI into HAL*/
23504WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023505void
23506WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023507(
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 tConfigStaParams* phalConfigSta,
23509 WDI_ConfigStaReqInfoType* pwdiConfigSta
23510)
23511{
23512 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023513#ifdef WLAN_FEATURE_11AC
23514 /* Get the Version 1 Handler */
23515 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23516 if (WDI_getFwWlanFeatCaps(DOT11AC))
23517 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023518 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 }
23520#endif
23521 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 the chances of getting inlined*/
23523
Jeff Johnsone7245742012-09-05 17:12:55 -070023524 wpalMemoryCopy(phalConfigSta->bssId,
23525 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23526
23527 wpalMemoryCopy(phalConfigSta->staMac,
23528 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023529
23530 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23531 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23532 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23533 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23534 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23535 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23536 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23537 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23538 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23539 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23540 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23541 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23542 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23543 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23544 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23545 phalConfigSta->action = pwdiConfigSta->wdiAction;
23546 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23547 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23548 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23549 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23550 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23551 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23552 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023553
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23555
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 pwdiConfigSta->wdiSupportedRates.opRateMode;
23558 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23559 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23562 }
23563 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23564 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023565 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023566 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23567 }
23568 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23569 {
23570 phalConfigSta->supportedRates.aniLegacyRates[i] =
23571 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23572 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23575 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23579 }
23580 phalConfigSta->supportedRates.rxHighestDataRate =
23581 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23582
Jeff Johnsone7245742012-09-05 17:12:55 -070023583#ifdef WLAN_FEATURE_11AC
23584 if(phalConfigSta_V1 != NULL)
23585 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023586 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23587 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23588 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23589 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 }
23591#endif
23592
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023594
Jeff Johnsone7245742012-09-05 17:12:55 -070023595#ifdef WLAN_FEATURE_11AC
23596 if(phalConfigSta_V1 != NULL)
23597 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023598 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23599 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023600 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023601 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23602 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23603
Jeff Johnsone7245742012-09-05 17:12:55 -070023604 }
23605#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023606}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023607
23608/*Translate a Rate set info from WDI into HAL*/
23609WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023610WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023611(
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 tSirMacRateSet* pHalRateSet,
23613 WDI_RateSet* pwdiRateSet
23614)
23615{
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23618
23619 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23620 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23621
23622 for ( i = 0; i < pHalRateSet->numRates; i++ )
23623 {
23624 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023626
Jeff Johnson295189b2012-06-20 16:38:30 -070023627}/*WDI_CopyWDIRateSetToHALRateSet*/
23628
23629
23630/*Translate an EDCA Parameter Record from WDI into HAL*/
23631WPT_STATIC WPT_INLINE void
23632WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023633(
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 tSirMacEdcaParamRecord* phalEdcaParam,
23635 WDI_EdcaParamRecord* pWDIEdcaParam
23636)
23637{
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 the chances of getting inlined*/
23640
23641 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23642 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23643 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23644 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23645
23646 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23647 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23648 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23649}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23650
23651
23652/*Copy a management frame header from WDI fmt into HAL fmt*/
23653WPT_STATIC WPT_INLINE void
23654WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23655(
23656 tSirMacMgmtHdr* pmacMgmtHdr,
23657 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23658)
23659{
23660 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23661 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23662 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23663 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23664 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23665 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23666 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23667 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23668 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23669 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23670 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23671
23672 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23673 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23674
Jeff Johnsone7245742012-09-05 17:12:55 -070023675 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 pwdiMacMgmtHdr->bssId, 6);
23681
23682 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23683 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23684 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23685
23686}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23687
23688
23689/*Copy config bss parameters from WDI fmt into HAL fmt*/
23690WPT_STATIC WPT_INLINE void
23691WDI_CopyWDIConfigBSSToHALConfigBSS
23692(
23693 tConfigBssParams* phalConfigBSS,
23694 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23695)
23696{
23697
23698 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023699#ifdef WLAN_FEATURE_11AC
23700 /* Get the Version 1 Handler */
23701 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23702 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023703 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023704#endif
23705
Jeff Johnson295189b2012-06-20 16:38:30 -070023706 wpalMemoryCopy( phalConfigBSS->bssId,
23707 pwdiConfigBSS->macBSSID,
23708 WDI_MAC_ADDR_LEN);
23709
23710#ifdef HAL_SELF_STA_PER_BSS
23711 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23712 pwdiConfigBSS->macSelfAddr,
23713 WDI_MAC_ADDR_LEN);
23714#endif
23715
23716 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23717
23718 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23719 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23720
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023722 pwdiConfigBSS->ucShortSlotTimeSupported;
23723 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23724 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23725 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23726 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23727 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23730 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23731 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23732 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23733 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23734 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23735 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23736 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23737 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23738 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23739 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23740
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 phalConfigBSS->htOperMode =
23742 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023743
23744 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23745 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23746 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23747 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23748
23749#ifdef WLAN_FEATURE_VOWIFI
23750 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23751#endif
23752
23753 /*! Used 32 as magic number because that is how the ssid is declared inside the
23754 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23757 pwdiConfigBSS->wdiSSID.ucLength : 32;
23758 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 pwdiConfigBSS->wdiSSID.sSSID,
23760 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023761
23762 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23763 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023764
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23766 &pwdiConfigBSS->wdiRateSet);
23767
23768 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23769
23770 if(phalConfigBSS->edcaParamsValid)
23771 {
23772 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23773 &pwdiConfigBSS->wdiBEEDCAParams);
23774 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23775 &pwdiConfigBSS->wdiBKEDCAParams);
23776 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23777 &pwdiConfigBSS->wdiVIEDCAParams);
23778 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23779 &pwdiConfigBSS->wdiVOEDCAParams);
23780 }
23781
Jeff Johnsone7245742012-09-05 17:12:55 -070023782 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023783
23784 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23785
23786#ifdef WLAN_FEATURE_VOWIFI_11R
23787
Jeff Johnsone7245742012-09-05 17:12:55 -070023788 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023790
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 if( phalConfigBSS->extSetStaKeyParamValid )
23792 {
23793 /*-----------------------------------------------------------------------
23794 Copy the STA Key parameters into the HAL message
23795 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23798
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23801
23802 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23803
23804 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23805
23806 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23807
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23809 keyIndex++)
23810 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23813 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23814 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23815 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23816 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23817 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23824 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 WDI_MAX_KEY_LENGTH);
23827 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 }
23829 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23830 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023831 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 sizeof(phalConfigBSS->extSetStaKeyParam) );
23833 }
23834
23835#endif /*WLAN_FEATURE_VOWIFI_11R*/
23836
Jeff Johnsone7245742012-09-05 17:12:55 -070023837#ifdef WLAN_FEATURE_11AC
23838 if(phalConfigBSS_V1 != NULL)
23839 {
23840 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23841 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23842 }
23843#endif
23844
Jeff Johnson295189b2012-06-20 16:38:30 -070023845}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23846
23847
Jeff Johnsone7245742012-09-05 17:12:55 -070023848/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 pointed to by user data */
23850WPT_STATIC WPT_INLINE void
23851WDI_ExtractRequestCBFromEvent
23852(
23853 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023854 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 void** ppUserData
23856)
23857{
23858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23859 switch ( pEvent->wdiRequest )
23860 {
23861 case WDI_START_REQ:
23862 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23863 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23864 break;
23865 case WDI_STOP_REQ:
23866 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23867 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23868 break;
23869 case WDI_INIT_SCAN_REQ:
23870 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23871 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23872 break;
23873 case WDI_START_SCAN_REQ:
23874 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23875 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23876 break;
23877 case WDI_END_SCAN_REQ:
23878 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23879 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23880 break;
23881 case WDI_FINISH_SCAN_REQ:
23882 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23883 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23884 break;
23885 case WDI_JOIN_REQ:
23886 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23887 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23888 break;
23889 case WDI_CONFIG_BSS_REQ:
23890 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23891 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23892 break;
23893 case WDI_DEL_BSS_REQ:
23894 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23895 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23896 break;
23897 case WDI_POST_ASSOC_REQ:
23898 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23899 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23900 break;
23901 case WDI_DEL_STA_REQ:
23902 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23903 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23904 break;
23905 case WDI_DEL_STA_SELF_REQ:
23906 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23907 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23908 break;
23909
23910 case WDI_SET_BSS_KEY_REQ:
23911 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23912 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23913 break;
23914 case WDI_RMV_BSS_KEY_REQ:
23915 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23916 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23917 break;
23918 case WDI_SET_STA_KEY_REQ:
23919 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23920 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23921 break;
23922 case WDI_RMV_STA_KEY_REQ:
23923 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23924 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23925 break;
23926 case WDI_ADD_TS_REQ:
23927 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23928 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23929 break;
23930 case WDI_DEL_TS_REQ:
23931 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23932 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23933 break;
23934 case WDI_UPD_EDCA_PRMS_REQ:
23935 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23936 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23937 break;
23938 case WDI_ADD_BA_SESSION_REQ:
23939 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23940 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23941 break;
23942 case WDI_DEL_BA_REQ:
23943 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23944 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23945 break;
23946#ifdef FEATURE_WLAN_CCX
23947 case WDI_TSM_STATS_REQ:
23948 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23949 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23950 break;
23951#endif
23952 case WDI_CH_SWITCH_REQ:
23953 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23954 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23955 break;
23956 case WDI_CONFIG_STA_REQ:
23957 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23958 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23959 break;
23960 case WDI_SET_LINK_ST_REQ:
23961 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23962 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23963 break;
23964 case WDI_GET_STATS_REQ:
23965 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23966 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23967 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023968#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23969 case WDI_GET_ROAM_RSSI_REQ:
23970 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23971 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23972 break;
23973#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 case WDI_UPDATE_CFG_REQ:
23975 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23976 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23977 break;
23978 case WDI_ADD_BA_REQ:
23979 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23980 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23981 break;
23982 case WDI_TRIGGER_BA_REQ:
23983 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23984 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23985 break;
23986 case WDI_UPD_BCON_PRMS_REQ:
23987 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23988 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23989 break;
23990 case WDI_SND_BCON_REQ:
23991 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23992 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23993 break;
23994 case WDI_ENTER_BMPS_REQ:
23995 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23996 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23997 break;
23998 case WDI_EXIT_BMPS_REQ:
23999 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24000 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24001 break;
24002 case WDI_ENTER_UAPSD_REQ:
24003 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24004 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24005 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024006 case WDI_EXIT_UAPSD_REQ:
24007 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24008 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24009 break;
24010 case WDI_SET_UAPSD_PARAM_REQ:
24011 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24012 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24013 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 case WDI_UPDATE_UAPSD_PARAM_REQ:
24015 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24016 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24017 break;
24018 case WDI_CONFIGURE_RXP_FILTER_REQ:
24019 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24020 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24021 break;
24022 case WDI_SET_BEACON_FILTER_REQ:
24023 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24024 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24025 break;
24026 case WDI_REM_BEACON_FILTER_REQ:
24027 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24028 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024029 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024030 case WDI_SET_RSSI_THRESHOLDS_REQ:
24031 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24032 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24033 break;
24034 case WDI_HOST_OFFLOAD_REQ:
24035 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24036 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24037 break;
24038 case WDI_WOWL_ADD_BC_PTRN_REQ:
24039 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24040 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24041 break;
24042 case WDI_WOWL_DEL_BC_PTRN_REQ:
24043 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24044 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24045 break;
24046 case WDI_WOWL_ENTER_REQ:
24047 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24048 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24049 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024050 case WDI_WOWL_EXIT_REQ:
24051 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24052 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24053 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24055 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24056 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24057 break;
24058 case WDI_FLUSH_AC_REQ:
24059 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24060 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24061 break;
24062 case WDI_BTAMP_EVENT_REQ:
24063 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24064 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24065 break;
24066 case WDI_KEEP_ALIVE_REQ:
24067 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24068 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24069 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024070#if defined FEATURE_WLAN_SCAN_PNO
24071 case WDI_SET_PREF_NETWORK_REQ:
24072 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24073 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24074 break;
24075 case WDI_SET_RSSI_FILTER_REQ:
24076 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24077 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24078 break;
24079 case WDI_UPDATE_SCAN_PARAMS_REQ:
24080 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24081 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24082 break;
24083#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 case WDI_SET_TX_PER_TRACKING_REQ:
24085 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24086 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024087 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024088#if defined WLAN_FEATURE_PACKET_FILTERING
24089 case WDI_8023_MULTICAST_LIST_REQ:
24090 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24091 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24092 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024093 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24094 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24095 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24096 break;
24097 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24098 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24099 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24100 break;
24101 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24102 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24103 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24104 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024105#endif
24106 case WDI_SET_POWER_PARAMS_REQ:
24107 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24108 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24109 break;
24110#if defined WLAN_FEATURE_GTK_OFFLOAD
24111 case WDI_GTK_OFFLOAD_REQ:
24112 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24113 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24114 break;
24115 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24116 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24117 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24118 break;
24119#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024120
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 default:
24122 *ppfnReqCB = NULL;
24123 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 }
24126}/*WDI_ExtractRequestCBFromEvent*/
24127
24128
24129/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024130 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 frame xtl is enabled for a particular STA.
24132
24133 WDI_PostAssocReq must have been called.
24134
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 @param uSTAIdx: STA index
24136
Jeff Johnson295189b2012-06-20 16:38:30 -070024137 @see WDI_PostAssocReq
24138 @return Result of the function call
24139*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024140wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024141WDI_IsHwFrameTxTranslationCapable
24142(
24143 wpt_uint8 uSTAIdx
24144)
24145{
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024147 uma value*/
24148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024149 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024150 ------------------------------------------------------------------------*/
24151 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24152 {
24153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24154 "WDI API call before module is initialized - Fail request");
24155
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 }
24158
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024159#ifdef WLAN_SOFTAP_VSTA_FEATURE
24160 if (IS_VSTA_IDX(uSTAIdx))
24161 {
24162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24163 "STA %d is a Virtual STA, "
24164 "HW frame translation disabled", uSTAIdx);
24165 return eWLAN_PAL_FALSE;
24166 }
24167#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024168
Jeff Johnson295189b2012-06-20 16:38:30 -070024169 return gWDICb.bFrameTransEnabled;
24170}/*WDI_IsHwFrameTxTranslationCapable*/
24171
24172#ifdef FEATURE_WLAN_SCAN_PNO
24173/**
24174 @brief WDI_SetPreferredNetworkList
24175
Jeff Johnsone7245742012-09-05 17:12:55 -070024176 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024178
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 wdiPNOScanCb: callback for passing back the response
24180 of the Set PNO operation received from the
24181 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024182
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 callback
24185
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 @return Result of the function call
24187*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024189WDI_SetPreferredNetworkReq
24190(
24191 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24192 WDI_PNOScanCb wdiPNOScanCb,
24193 void* pUserData
24194)
24195{
24196 WDI_EventInfoType wdiEventData = {{0}};
24197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24198
24199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 ------------------------------------------------------------------------*/
24202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24203 {
24204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24205 "WDI API call before module is initialized - Fail request");
24206
Jeff Johnsone7245742012-09-05 17:12:55 -070024207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 }
24209
24210 /*------------------------------------------------------------------------
24211 Fill in Event data and post to the Main FSM
24212 ------------------------------------------------------------------------*/
24213 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024214 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024215 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024217 wdiEventData.pUserData = pUserData;
24218
24219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24220}
24221
24222
24223/**
24224 @brief WDI_SetRssiFilterReq
24225
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024228
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 wdiRssiFilterCb: callback for passing back the response
24230 of the Set RSSI Filter operation received from the
24231 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024232
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024234 callback
24235
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 @return Result of the function call
24237*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024239WDI_SetRssiFilterReq
24240(
24241 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24242 WDI_RssiFilterCb wdiRssiFilterCb,
24243 void* pUserData
24244)
24245{
24246 WDI_EventInfoType wdiEventData = {{0}};
24247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24248
24249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024251 ------------------------------------------------------------------------*/
24252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24253 {
24254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24255 "WDI API call before module is initialized - Fail request");
24256
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024258 }
24259
24260 /*------------------------------------------------------------------------
24261 Fill in Event data and post to the Main FSM
24262 ------------------------------------------------------------------------*/
24263 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024264 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024266 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 wdiEventData.pUserData = pUserData;
24268
24269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24270}/*WDI_SetRssiFilterReq*/
24271
24272/**
24273 @brief WDI_UpdateScanParamsReq
24274
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024277
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 wdiUpdateScanParamsCb: callback for passing back the response
24279 of the Set PNO operation received from the
24280 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024281
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 callback
24284
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 @return Result of the function call
24286*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024288WDI_UpdateScanParamsReq
24289(
24290 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24291 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24292 void* pUserData
24293)
24294{
24295 WDI_EventInfoType wdiEventData = {{0}};
24296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24297
24298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 ------------------------------------------------------------------------*/
24301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24302 {
24303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24304 "WDI API call before module is initialized - Fail request");
24305
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 }
24308
24309 /*------------------------------------------------------------------------
24310 Fill in Event data and post to the Main FSM
24311 ------------------------------------------------------------------------*/
24312 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 wdiEventData.pUserData = pUserData;
24317
24318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24319}
24320
24321/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024324
24325 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 pwdiPNOScanReqParams: pointer to the info received
24327 from upper layers
24328 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 and its size
24330
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 @return Result of the function call
24332*/
24333
24334WDI_Status
24335WDI_PackPreferredNetworkList
24336(
24337 WDI_ControlBlockType* pWDICtx,
24338 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24339 wpt_uint8** ppSendBuffer,
24340 wpt_uint16* pSize
24341)
24342{
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 wpt_uint16 usDataOffset = 0;
24345 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024346 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 /*-----------------------------------------------------------------------
24349 Get message buffer
24350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024352 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024354 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 {
24356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024357 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 pwdiPNOScanReqParams);
24359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 }
24362
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024363 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24364
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 /*-------------------------------------------------------------------------
24366 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24367 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024368 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024370 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24372
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024373 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24378
24379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24382 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24383 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24384
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024385 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 {
24387 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024388 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24390
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024391 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024392 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024393 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024394
24395 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024396 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024397 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024398
24399 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024400 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024401 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024402
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024405 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024406 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24407 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24408 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24409 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024411 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024413 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024414
24415 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024416 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24418
24419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024420 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024421 pPrefNetwListParams->aNetworks[i].ssId.length,
24422 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 }
24424
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024425 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24428 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24429 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24430
24431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024432 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024433 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24435 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24436
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024437 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024439 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024441 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24443 }
24444
24445 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024446 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24448 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24449 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024450 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024451
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024452 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024454 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024455
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024456 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24458 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24459 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024460 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024461
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024462 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024464 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024465
24466 /*Set the output values*/
24467 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024468 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024469
24470 return WDI_STATUS_SUCCESS;
24471}/*WDI_PackPreferredNetworkList*/
24472
24473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024476
24477 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 pwdiPNOScanReqParams: pointer to the info received
24479 from upper layers
24480 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 and its size
24482
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 @return Result of the function call
24484*/
24485
24486WDI_Status
24487WDI_PackPreferredNetworkListNew
24488(
24489 WDI_ControlBlockType* pWDICtx,
24490 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24491 wpt_uint8** ppSendBuffer,
24492 wpt_uint16* pSize
24493)
24494{
Jeff Johnsone7245742012-09-05 17:12:55 -070024495 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 wpt_uint16 usDataOffset = 0;
24497 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024498 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024499 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024500
24501 /*-----------------------------------------------------------------------
24502 Get message buffer
24503 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024504 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024505 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024507 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024508 {
24509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024510 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 pwdiPNOScanReqParams);
24512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 }
24515
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024516 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24517
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 /*-------------------------------------------------------------------------
24519 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24520 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024521 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024523 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24525
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024526 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024527 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024529 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24531
24532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024533 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24535 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24536 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24537
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024538 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 {
24540 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024541 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24543
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024544 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024546 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024547
24548 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024549 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024550 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
24552 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024553 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024555
24556 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024557 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024559
Jeff Johnsone7245742012-09-05 17:12:55 -070024560 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024561 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024562 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24564
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024565 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024566 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024567 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024568
24569 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024570 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24572
24573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024574 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024575 pPrefNetwListParams->aNetworks[i].ssId.length,
24576 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024577 }
24578
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024579 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24582 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24583 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24584
24585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024586 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024587 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24589 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24590
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024591 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024593 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024595 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24597 }
24598
24599 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024600 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24602 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24603 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024605
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024606 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024607 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024608 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024609
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024610 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24612 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24613 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024614 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024615
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024616 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024618 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024619
Jeff Johnson295189b2012-06-20 16:38:30 -070024620
24621 /*Set the output values*/
24622 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024624
24625 return WDI_STATUS_SUCCESS;
24626}/*WDI_PackPreferredNetworkListNew*/
24627
24628/**
24629 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024630
24631 @param pWDICtx: pointer to the WLAN DAL context
24632 pEventData: pointer to the event information structure
24633
Jeff Johnson295189b2012-06-20 16:38:30 -070024634 @return Result of the function call
24635*/
24636WDI_Status
24637WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024638(
Jeff Johnson295189b2012-06-20 16:38:30 -070024639 WDI_ControlBlockType* pWDICtx,
24640 WDI_EventInfoType* pEventData
24641)
24642{
24643 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24644 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024646 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024647 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024648
24649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 -------------------------------------------------------------------------*/
24652 if (( NULL == pEventData ) ||
24653 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24654 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24655 {
24656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024660 }
24661
24662 /*-------------------------------------------------------------------------
24663 Pack the PNO request structure based on version
24664 -------------------------------------------------------------------------*/
24665 if ( pWDICtx->wdiPNOVersion > 0 )
24666 {
24667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024668 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 pWDICtx->wdiPNOVersion);
24670
24671 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24672 &pSendBuffer, &usSendSize);
24673 }
24674 else
24675 {
24676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024677 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 pWDICtx->wdiPNOVersion);
24679
24680 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24681 &pSendBuffer, &usSendSize);
24682 }
24683
24684 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24685 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24686 {
24687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024688 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024690 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 }
24692
24693 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695
24696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24700 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024701}
24702
24703/**
24704 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024705
24706 @param pWDICtx: pointer to the WLAN DAL context
24707 pEventData: pointer to the event information structure
24708
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 @see
24710 @return Result of the function call
24711*/
24712WDI_Status
24713WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024714(
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 WDI_ControlBlockType* pWDICtx,
24716 WDI_EventInfoType* pEventData
24717)
24718{
24719 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24720 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 wpt_uint16 usDataOffset = 0;
24723 wpt_uint16 usSendSize = 0;
24724 wpt_uint8 ucRssiThreshold;
24725
24726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024728 -------------------------------------------------------------------------*/
24729 if (( NULL == pEventData ) ||
24730 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24731 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24732 {
24733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 }
24738
24739 /*-----------------------------------------------------------------------
24740 Get message buffer
24741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 sizeof(ucRssiThreshold),
24744 &pSendBuffer, &usDataOffset, &usSendSize))||
24745 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24746 {
24747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024748 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 }
24753
24754 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24755
Jeff Johnsone7245742012-09-05 17:12:55 -070024756 wpalMemoryCopy( pSendBuffer+usDataOffset,
24757 &ucRssiThreshold,
24758 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024759
24760 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024761 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024762
24763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24767 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024768}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024769#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24770/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024771 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024772
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024773 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024774 by the Device Interface
24775
24776 wdiRoamOffloadScancb: callback for passing back the response
24777 of the Roam Candidate Lookup Req operation received from the
24778 device
24779
24780 pUserData: user data will be passed back with the
24781 callback
24782 @return Result of the function call
24783*/
24784WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024785WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024786(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024787 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024788 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24789 void* pUserData
24790)
24791{
24792 WDI_EventInfoType wdiEventData = {{0}};
24793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24794
24795 /*------------------------------------------------------------------------
24796 Sanity Check
24797 ------------------------------------------------------------------------*/
24798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24799 {
24800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24801 "WDI API call before module is initialized - Fail request");
24802
24803 return WDI_STATUS_E_NOT_ALLOWED;
24804 }
24805
24806 /*------------------------------------------------------------------------
24807 Fill in Event data and post to the Main FSM
24808 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024809 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24810 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24811 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024812 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24813 wdiEventData.pUserData = pUserData;
24814
24815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24816}
24817
24818void
24819WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24820{
24821 switch (wdiEdType)
24822 {
24823 case WDI_ED_NONE:
24824 *EdType = eED_NONE;
24825 break;
24826 case WDI_ED_WEP40:
24827 case WDI_ED_WEP104:
24828 *EdType = eED_WEP;
24829 break;
24830 case WDI_ED_TKIP:
24831 *EdType = eED_TKIP;
24832 break;
24833 case WDI_ED_CCMP:
24834#ifdef WLAN_FEATURE_11W
24835 case WDI_ED_AES_128_CMAC:
24836#endif
24837 *EdType = eED_CCMP;
24838 break;
24839#ifdef FEATURE_WLAN_WAPI
24840 case WDI_ED_WPI:
24841 *EdType = eED_WPI;
24842 break;
24843#endif
24844 case WDI_ED_ANY:
24845 *EdType = eED_ANY;
24846 break;
24847
24848 default:
24849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24850 "%s: Unknown Encryption Type", __func__);
24851 break;
24852 }
24853}
24854
24855/**
24856 @brief Helper function to pack Start Roam Candidate Lookup
24857 Request parameters
24858
24859 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024860 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024861 from upper layers
24862 ppSendBuffer, pSize - out pointers of the packed buffer
24863 and its size
24864
24865 @return Result of the function call
24866*/
24867
24868WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024869WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024870(
24871 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024872 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024873 wpt_uint8** ppSendBuffer,
24874 wpt_uint16* pSize
24875)
24876{
24877 wpt_uint8* pSendBuffer = NULL;
24878 wpt_uint16 usDataOffset = 0;
24879 wpt_uint16 usSendSize = 0;
24880 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24881 wpt_uint8 i;
24882 /*-----------------------------------------------------------------------
24883 Get message buffer
24884 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024886 sizeof(tRoamCandidateListParams),
24887 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024888 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024889 {
24890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024891 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024892 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024893 WDI_ASSERT(0);
24894 return WDI_STATUS_E_FAILURE;
24895 }
24896 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024897 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024898 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024899 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024900 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024901 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024902 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024903 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024904 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024905 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024906 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024907
24908 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024909 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024910 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024911 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024912 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24913 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024914 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24915 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24916 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24917 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24918 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24919 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024920 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024921 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24922 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24923 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24924 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24925 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24926 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24927 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24928 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024929 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024930 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24931 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24932 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024933
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24935 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24936 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24937 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24938 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24939 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain5f7589c2013-11-17 22:05:35 -080024940 "HomeAwayTime=%d",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024941 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24942 pRoamCandidateListParams->RoamScanOffloadEnabled,
24943 pRoamCandidateListParams->Command,
24944 pRoamCandidateListParams->StartScanReason,
24945 pRoamCandidateListParams->NeighborScanTimerPeriod,
24946 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24947 pRoamCandidateListParams->NeighborScanChannelMinTime,
24948 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24949 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24950 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24951 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24952 pRoamCandidateListParams->ConnectedNetwork.authentication,
24953 pRoamCandidateListParams->ConnectedNetwork.encryption,
24954 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24955 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24956 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024957 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024958 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024959 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024960 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024961 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24962 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024963 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024964 pRoamCandidateListParams->us24GProbeSize);
24965 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024966 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024967 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024968 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024969 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24970 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024971 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024972 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024973 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24974 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24975 pRoamCandidateListParams->nProbes =
24976 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24977 pRoamCandidateListParams->HomeAwayTime =
24978 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024980 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24981 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024983 }
24984
24985
24986 /*Set the output values*/
24987 *ppSendBuffer = pSendBuffer;
24988 *pSize = usSendSize;
24989 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024990}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024991
24992/**
24993 @brief Process Start Roam Candidate Lookup Request function
24994
24995 @param pWDICtx: pointer to the WLAN DAL context
24996 pEventData: pointer to the event information structure
24997
24998 @return Result of the function call
24999*/
25000WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025001WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025002(
25003 WDI_ControlBlockType* pWDICtx,
25004 WDI_EventInfoType* pEventData
25005)
25006{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025007 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025008 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25009 wpt_uint8* pSendBuffer = NULL;
25010 wpt_uint16 usSendSize = 0;
25011 WDI_Status wdiStatus;
25012 /*-------------------------------------------------------------------------
25013 Sanity check
25014 -------------------------------------------------------------------------*/
25015 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025016 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025017 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25018 {
25019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25020 "%s: Invalid parameters", __func__);
25021 WDI_ASSERT(0);
25022 return WDI_STATUS_E_FAILURE;
25023 }
25024
25025 /*-------------------------------------------------------------------------
25026 Pack the Start Roam Candidate Lookup request structure based on version
25027 -------------------------------------------------------------------------*/
25028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25029 "%s: Packing Roam Candidate Lookup request ", __func__);
25030
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025031 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025032 &pSendBuffer, &usSendSize);
25033
25034 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25035 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25036 {
25037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25038 "%s: failed to pack request parameters", __func__);
25039 WDI_ASSERT(0);
25040 return wdiStatus;
25041 }
25042
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025043 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25044 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025045
25046 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025047 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025048 -------------------------------------------------------------------------*/
25049 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025050 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025051}
25052
25053/**
25054 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25055 response is being received over the bus from HAL)
25056
25057 @param pWDICtx: pointer to the WLAN DAL context
25058 pEventData: pointer to the event information structure
25059
25060 @see
25061 @return Result of the function call
25062*/
25063WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025064WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025065(
25066 WDI_ControlBlockType* pWDICtx,
25067 WDI_EventInfoType* pEventData
25068)
25069{
25070 WDI_Status wdiStatus;
25071 eHalStatus halStatus;
25072 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25073
25074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25075
25076 /*-------------------------------------------------------------------------
25077 Sanity check
25078 -------------------------------------------------------------------------*/
25079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25080 ( NULL == pEventData->pEventData ))
25081 {
25082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25083 "%s: Invalid parameters", __func__);
25084 WDI_ASSERT(0);
25085 return WDI_STATUS_E_FAILURE;
25086 }
25087
25088 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25089
25090 /*-------------------------------------------------------------------------
25091 Extract response and send it to UMAC
25092 -------------------------------------------------------------------------*/
25093 halStatus = *((eHalStatus*)pEventData->pEventData);
25094 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25095
25096 /*Notify UMAC*/
25097 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25098
25099 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025100}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025101#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025102
25103/**
25104 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025105
25106 @param pWDICtx: pointer to the WLAN DAL context
25107 pEventData: pointer to the event information structure
25108
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 @see
25110 @return Result of the function call
25111*/
25112WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025113WDI_PackUpdateScanParamsReq
25114(
25115 WDI_ControlBlockType* pWDICtx,
25116 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25117 wpt_uint8** ppSendBuffer,
25118 wpt_uint16* pSize
25119)
25120{
25121 wpt_uint8* pSendBuffer = NULL;
25122 wpt_uint16 usDataOffset = 0;
25123 wpt_uint16 usSendSize = 0;
25124 tUpdateScanParams updateScanParams = {0};
25125
25126
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025128 "Begin WDI Update Scan Parameters Old Style Params");
25129 /*-----------------------------------------------------------------------
25130 Get message buffer
25131 -----------------------------------------------------------------------*/
25132 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25133 sizeof(updateScanParams),
25134 &pSendBuffer, &usDataOffset, &usSendSize))||
25135 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25136 {
25137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025138 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025139 pwdiUpdateScanParams);
25140 WDI_ASSERT(0);
25141 return WDI_STATUS_E_FAILURE;
25142 }
25143
25144 //
25145 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25146 //
25147
25148 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25149 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25150
25151 updateScanParams.ucChannelCount =
25152 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25153 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25154 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25155 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25156
25157 wpalMemoryCopy( updateScanParams.aChannels,
25158 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25159 updateScanParams.ucChannelCount);
25160
25161
25162 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25163 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25164 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25165 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25166 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25167
25168 wpalMemoryCopy( pSendBuffer+usDataOffset,
25169 &updateScanParams,
25170 sizeof(updateScanParams));
25171
25172 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25173 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25174
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025176 "End Update Scan Parameters Old Style");
25177
25178 /*Set the output values*/
25179 *ppSendBuffer = pSendBuffer;
25180 *pSize = usSendSize;
25181
25182 return WDI_STATUS_SUCCESS;
25183}
25184
25185/**
25186 @brief Process Update Scan Params function
25187
25188 @param pWDICtx: pointer to the WLAN DAL context
25189 pEventData: pointer to the event information structure
25190
25191 @see
25192 @return Result of the function call
25193*/
25194WDI_Status
25195WDI_PackUpdateScanParamsReqEx
25196(
25197 WDI_ControlBlockType* pWDICtx,
25198 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25199 wpt_uint8** ppSendBuffer,
25200 wpt_uint16* pSize
25201)
25202{
25203 wpt_uint8* pSendBuffer = NULL;
25204 wpt_uint16 usDataOffset = 0;
25205 wpt_uint16 usSendSize = 0;
25206 tUpdateScanParamsEx updateScanParams = {0};
25207
25208
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025209 /*-----------------------------------------------------------------------
25210 Get message buffer
25211 -----------------------------------------------------------------------*/
25212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25213 sizeof(updateScanParams),
25214 &pSendBuffer, &usDataOffset, &usSendSize))||
25215 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25216 {
25217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025218 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025219 pwdiUpdateScanParams);
25220 WDI_ASSERT(0);
25221 return WDI_STATUS_E_FAILURE;
25222 }
25223
25224 //
25225 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25226 //
25227
25228 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25229 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25230
25231 updateScanParams.ucChannelCount =
25232 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25233 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25234 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25235 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25236
25237 wpalMemoryCopy( updateScanParams.aChannels,
25238 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25239 updateScanParams.ucChannelCount);
25240
25241
25242 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25243 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25244 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25245 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25246 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25247
25248 wpalMemoryCopy( pSendBuffer+usDataOffset,
25249 &updateScanParams,
25250 sizeof(updateScanParams));
25251
25252 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25253 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25254
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025255 /*Set the output values*/
25256 *ppSendBuffer = pSendBuffer;
25257 *pSize = usSendSize;
25258
25259 return WDI_STATUS_SUCCESS;
25260}
25261
25262/**
25263 @brief Process Update Scan Params function
25264
25265 @param pWDICtx: pointer to the WLAN DAL context
25266 pEventData: pointer to the event information structure
25267
25268 @see
25269 @return Result of the function call
25270*/
25271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025272WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025273(
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 WDI_ControlBlockType* pWDICtx,
25275 WDI_EventInfoType* pEventData
25276)
25277{
25278 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25279 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025280 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025282 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283
25284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 -------------------------------------------------------------------------*/
25287 if (( NULL == pEventData ) ||
25288 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25289 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25290 {
25291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 }
25296
25297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25298 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025299
25300 //
25301 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25302 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025303 if ( pWDICtx->wlanVersion.revision < 1 )
25304 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025305 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025306 &pSendBuffer, &usSendSize);
25307 }
25308 else
25309 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025310 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25311 &pSendBuffer, &usSendSize);
25312 }
25313
25314 if(WDI_STATUS_SUCCESS != wdiStatus)
25315 {
25316 //memory allocation failed
25317 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025318 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025319
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025324 wdiUpdateScanParamsCb, pEventData->pUserData,
25325 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025326}
25327
25328/**
25329 @brief Process Preferred Network Found Indication function
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_ProcessPrefNetworkFoundInd
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{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025344 WDI_LowLevelIndType wdiInd;
25345 tpPrefNetwFoundParams pNetwFoundParams;
25346 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025347
25348
25349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025351 -------------------------------------------------------------------------*/
25352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25353 ( NULL == pEventData->pEventData ))
25354 {
25355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025357 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025359 }
25360
25361 /*-------------------------------------------------------------------------
25362 Extract indication and send it to UMAC
25363 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025364 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25365
25366 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25367 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25368 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25369
25370 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25371 {
25372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25373 "%s: fail to allocate memory", __func__);
25374 return WDI_STATUS_MEM_FAILURE;
25375 }
25376
25377 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25378 (pNetwFoundParams->ssId.length < 32 )?
25379 pNetwFoundParams->ssId.length : 32;
25380 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25381 pNetwFoundParams->ssId.ssId,
25382 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25383 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25384 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25385 pNetwFoundParams->frameLength;
25386 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25387 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25388 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025389
25390 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025391 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025392
Jeff Johnson295189b2012-06-20 16:38:30 -070025393 // DEBUG
25394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025395 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025396 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025397 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025399 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025400 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25401
ltimariu034f7d62013-01-24 18:54:33 -080025402 if ( pWDICtx->wdiLowLevelIndCB )
25403 {
25404 /*Notify UMAC*/
25405 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25406 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025407
25408 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025409}
25410
25411/**
25412 @brief Process PNO Rsp function (called when a
25413 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025414
25415 @param pWDICtx: pointer to the WLAN DAL context
25416 pEventData: pointer to the event information structure
25417
Jeff Johnson295189b2012-06-20 16:38:30 -070025418 @see
25419 @return Result of the function call
25420*/
25421WDI_Status
25422WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025423(
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 WDI_ControlBlockType* pWDICtx,
25425 WDI_EventInfoType* pEventData
25426)
25427{
25428 WDI_Status wdiStatus;
25429 eHalStatus halStatus;
25430 WDI_PNOScanCb wdiPNOScanCb = NULL;
25431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25432
25433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 -------------------------------------------------------------------------*/
25436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25437 ( NULL == pEventData->pEventData ))
25438 {
25439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 }
25444
25445
Jeff Johnsone7245742012-09-05 17:12:55 -070025446 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025447
25448 /*-------------------------------------------------------------------------
25449 Extract response and send it to UMAC
25450 -------------------------------------------------------------------------*/
25451 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025452 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025453
25454 /*Notify UMAC*/
25455 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25456
Jeff Johnsone7245742012-09-05 17:12:55 -070025457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025458}/*WDI_ProcessSetPreferredNetworkRsp*/
25459
25460/**
25461 @brief Process RSSI Filter Rsp function (called when a
25462 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025463
25464 @param pWDICtx: pointer to the WLAN DAL context
25465 pEventData: pointer to the event information structure
25466
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 @see
25468 @return Result of the function call
25469*/
25470WDI_Status
25471WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025472(
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 WDI_ControlBlockType* pWDICtx,
25474 WDI_EventInfoType* pEventData
25475)
25476{
25477 WDI_Status wdiStatus;
25478 eHalStatus halStatus;
25479 WDI_RssiFilterCb wdiRssiFilterCb;
25480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25481
25482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 -------------------------------------------------------------------------*/
25485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25486 ( NULL == pEventData->pEventData ))
25487 {
25488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025492 }
25493
Jeff Johnsone7245742012-09-05 17:12:55 -070025494 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025495
25496 /*-------------------------------------------------------------------------
25497 Extract response and send it to UMAC
25498 -------------------------------------------------------------------------*/
25499 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025500 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025501
25502 /*Notify UMAC*/
25503 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25504
Jeff Johnsone7245742012-09-05 17:12:55 -070025505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025506}/*WDI_ProcessSetRssiFilterRsp*/
25507
25508/**
25509 @brief Process Update Scan Params Rsp function (called when a
25510 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025511
25512 @param pWDICtx: pointer to the WLAN DAL context
25513 pEventData: pointer to the event information structure
25514
Jeff Johnson295189b2012-06-20 16:38:30 -070025515 @see
25516 @return Result of the function call
25517*/
25518WDI_Status
25519WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025520(
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 WDI_ControlBlockType* pWDICtx,
25522 WDI_EventInfoType* pEventData
25523)
25524{
25525 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025526 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025528 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25530
25531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025533 -------------------------------------------------------------------------*/
25534 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25535 ( NULL == pEventData->pEventData ))
25536 {
25537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 }
25542
25543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025544 "%s: Process UPD scan params ptr : %p",
25545 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025546
Jeff Johnsone7245742012-09-05 17:12:55 -070025547 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025548
25549 /*-------------------------------------------------------------------------
25550 Extract response and send it to UMAC
25551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25553 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025554 sizeof(halUpdScanParams.status));
25555
25556 uStatus = halUpdScanParams.status;
25557
25558 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025559 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025560
25561 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025563
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025565
25566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025567 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 halUpdScanParams.status);
25569
25570 /*Notify UMAC*/
25571 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25572
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025574}
25575#endif // FEATURE_WLAN_SCAN_PNO
25576
25577#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025578WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025579WDI_8023MulticastListReq
25580(
25581 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25582 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25583 void* pUserData
25584)
25585{
25586 WDI_EventInfoType wdiEventData;
25587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25588
25589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025590 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025591
25592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 ------------------------------------------------------------------------*/
25595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25596 {
25597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25598 "WDI API call before module is initialized - Fail request");
25599
Jeff Johnsone7245742012-09-05 17:12:55 -070025600 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 }
25602
25603 /*------------------------------------------------------------------------
25604 Fill in Event data and post to the Main FSM
25605 ------------------------------------------------------------------------*/
25606 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025607 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 wdiEventData.pUserData = pUserData;
25611
25612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25613}
25614
Jeff Johnsone7245742012-09-05 17:12:55 -070025615WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025616WDI_ReceiveFilterSetFilterReq
25617(
25618 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25619 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25620 void* pUserData
25621)
25622{
25623 WDI_EventInfoType wdiEventData;
25624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25625
25626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025627 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025628
25629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025631 ------------------------------------------------------------------------*/
25632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25633 {
25634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25635 "WDI API call before module is initialized - Fail request");
25636
Jeff Johnsone7245742012-09-05 17:12:55 -070025637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025638 }
25639
25640 /*------------------------------------------------------------------------
25641 Fill in Event data and post to the Main FSM
25642 ------------------------------------------------------------------------*/
25643 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25645 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025646 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25647 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 wdiEventData.pUserData = pUserData;
25650
25651
25652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25653}
25654
Jeff Johnsone7245742012-09-05 17:12:55 -070025655WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025656WDI_FilterMatchCountReq
25657(
25658 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25659 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25660 void* pUserData
25661)
25662{
25663 WDI_EventInfoType wdiEventData;
25664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25665
25666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025667 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025668
25669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025671 ------------------------------------------------------------------------*/
25672 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25673 {
25674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25675 "WDI API call before module is initialized - Fail request");
25676
Jeff Johnsone7245742012-09-05 17:12:55 -070025677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 }
25679
25680 /*------------------------------------------------------------------------
25681 Fill in Event data and post to the Main FSM
25682 ------------------------------------------------------------------------*/
25683 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025684 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025685 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025686 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025687 wdiEventData.pUserData = pUserData;
25688
25689
25690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25691}
25692
Jeff Johnsone7245742012-09-05 17:12:55 -070025693WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025694WDI_ReceiveFilterClearFilterReq
25695(
25696 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25697 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25698 void* pUserData
25699)
25700{
25701 WDI_EventInfoType wdiEventData;
25702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25703
25704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025705 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025706
25707 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025708 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 ------------------------------------------------------------------------*/
25710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25711 {
25712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25713 "WDI API call before module is initialized - Fail request");
25714
Jeff Johnsone7245742012-09-05 17:12:55 -070025715 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025716 }
25717
25718 /*------------------------------------------------------------------------
25719 Fill in Event data and post to the Main FSM
25720 ------------------------------------------------------------------------*/
25721 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025722 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025724 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025725 wdiEventData.pUserData = pUserData;
25726
25727
25728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25729}
25730
25731/**
25732 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025733
25734 @param pWDICtx: pointer to the WLAN DAL context
25735 pEventData: pointer to the event information structure
25736
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 @see
25738 @return Result of the function call
25739*/
25740WDI_Status
25741WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025742(
Jeff Johnson295189b2012-06-20 16:38:30 -070025743 WDI_ControlBlockType* pWDICtx,
25744 WDI_EventInfoType* pEventData
25745)
25746{
25747 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25748 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025750 wpt_uint16 usDataOffset = 0;
25751 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025752 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025753 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025754 wpt_uint8 ucCurrentBSSSesIdx = 0;
25755 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025756
25757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025758 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025759
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025760 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25761 if( NULL == pRcvFltMcAddrListType )
25762 {
25763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25764 "Failed to alloc in WDI_Process8023MulticastListReq");
25765 return WDI_STATUS_E_FAILURE;
25766 }
25767
Jeff Johnson295189b2012-06-20 16:38:30 -070025768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025770 -------------------------------------------------------------------------*/
25771 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025772 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025773 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025774 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25776 {
25777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025778 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025779 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025781 return WDI_STATUS_E_FAILURE;
25782 }
25783
25784 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25785 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25786 &pBSSSes);
25787 if ( NULL == pBSSSes )
25788 {
25789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025790 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025791 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 }
25794
25795 /*-----------------------------------------------------------------------
25796 Get message buffer
25797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25799 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 sizeof(tHalRcvFltMcAddrListType),
25801 &pSendBuffer, &usDataOffset, &usSendSize))||
25802 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25803 {
25804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25805 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025806 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 pEventData, pwdiFltPktSetMcListReqParamsType,
25808 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025809 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 }
25813
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025814 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025816 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025818 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025819 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25820 sizeof(tSirMacAddr));
25821 }
25822
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025823 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025825 pRcvFltMcAddrListType,
25826 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025827
25828 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025830
25831
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025832 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025834 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025838 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025839}
25840
25841/**
25842 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025843
25844 @param pWDICtx: pointer to the WLAN DAL context
25845 pEventData: pointer to the event information structure
25846
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 @see
25848 @return Result of the function call
25849*/
25850WDI_Status
25851WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025852(
Jeff Johnson295189b2012-06-20 16:38:30 -070025853 WDI_ControlBlockType* pWDICtx,
25854 WDI_EventInfoType* pEventData
25855)
25856{
25857 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25858 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025860 wpt_uint16 usDataOffset = 0;
25861 wpt_uint16 usSendSize = 0;
25862 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025863 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025864 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025865 wpt_uint8 ucCurrentBSSSesIdx = 0;
25866 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025867 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25868 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025869
25870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025871 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025872
25873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025875 -------------------------------------------------------------------------*/
25876 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025877 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25881 {
25882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 return WDI_STATUS_E_FAILURE;
25886 }
25887
25888 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25889 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25890 &pBSSSes);
25891 if ( NULL == pBSSSes )
25892 {
25893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025894 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025896 }
25897
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025898 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25899 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025900
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025901 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25902 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25903 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25904
25905 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25906 usSessRcvPktFilterCfgSize);
25907
25908 if(NULL == pSessRcvPktFilterCfg)
25909 {
25910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25911 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025912 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025913 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025914 WDI_ASSERT(0);
25915 return WDI_STATUS_E_FAILURE;
25916 }
25917
25918 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25919
25920 /*-----------------------------------------------------------------------
25921 Get message buffer
25922 -----------------------------------------------------------------------*/
25923
25924 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25925 usSessRcvPktFilterCfgSize,
25926 &pSendBuffer, &usDataOffset, &usSendSize))||
25927 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25928 {
25929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25930 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025931 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025932 pEventData, pwdiSetRcvPktFilterReqInfo,
25933 wdiReceiveFilterSetFilterCb);
25934 WDI_ASSERT(0);
25935 wpalMemoryFree(pSessRcvPktFilterCfg);
25936 return WDI_STATUS_E_FAILURE;
25937 }
25938
25939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025940 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025941 usSendSize,pSessRcvPktFilterCfg);
25942
25943 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25944 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25945 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25946 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25947
25948 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25949
25950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25951 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25952 pSessRcvPktFilterCfg->filterType);
25953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25954 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25955 pSessRcvPktFilterCfg->coleasceTime);
25956
25957 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25958 {
25959 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25960 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25961 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25962 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25963 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25964 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25965 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25966 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25967
25968 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25969 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25970 8);
25971 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25972 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25973 8);
25974
25975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025976 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025977 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25978 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25979
25980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025981 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025982 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25983 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25984
25985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025986 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025987 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25988 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25989 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25990 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25991 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25992 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25993
25994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025995 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025996 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25997 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25998 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25999 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26000 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26001 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26002 }
26003
26004 wpalMemoryCopy( pSendBuffer+usDataOffset,
26005 pSessRcvPktFilterCfg,
26006 usSessRcvPktFilterCfgSize);
26007
26008
26009 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26010 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26011
26012 wpalMemoryFree(pSessRcvPktFilterCfg);
26013
26014 }
26015 /*If SLM_SESSIONIZATION is not supported then do this */
26016 else
26017 {
26018 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26019 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26020 * sizeof(tHalRcvPktFilterParams));
26021
26022 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026023 usRcvPktFilterCfgSize);
26024
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026025 if(NULL == pRcvPktFilterCfg)
26026 {
26027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26028 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026029 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026030 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026031 WDI_ASSERT(0);
26032 return WDI_STATUS_E_FAILURE;
26033 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026034
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026035 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026037 /*-----------------------------------------------------------------------
26038 Get message buffer
26039 -----------------------------------------------------------------------*/
26040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 usRcvPktFilterCfgSize,
26042 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026043 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26044 {
26045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026047 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026048 pEventData, pwdiSetRcvPktFilterReqInfo,
26049 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026050 WDI_ASSERT(0);
26051 wpalMemoryFree(pRcvPktFilterCfg);
26052 return WDI_STATUS_E_FAILURE;
26053 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026054
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026056 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026057 usSendSize,usRcvPktFilterCfgSize);
26058
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026059 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26060 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26061 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26062 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026063
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026070
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026071 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26072 {
26073 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26074 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26075 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26076 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26077 pRcvPktFilterCfg->paramsData[i].dataOffset =
26078 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26079 pRcvPktFilterCfg->paramsData[i].dataLength =
26080 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026081
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026082 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26084 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026085 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26087 8);
26088
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026090 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26093
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026095 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026096 pRcvPktFilterCfg->paramsData[i].dataOffset,
26097 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026098
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026100 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026101 pRcvPktFilterCfg->paramsData[i].compareData[0],
26102 pRcvPktFilterCfg->paramsData[i].compareData[1],
26103 pRcvPktFilterCfg->paramsData[i].compareData[2],
26104 pRcvPktFilterCfg->paramsData[i].compareData[3],
26105 pRcvPktFilterCfg->paramsData[i].compareData[4],
26106 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026107
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026109 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026110 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26111 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26112 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26113 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26114 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26115 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26116 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026117
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026118 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026119 pRcvPktFilterCfg,
26120 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026121
26122
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026123 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26124 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026125
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026127 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026128 wpalMemoryFree(pRcvPktFilterCfg);
26129 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026135 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026136}
26137
26138/**
26139 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026140
26141 @param pWDICtx: pointer to the WLAN DAL context
26142 pEventData: pointer to the event information structure
26143
Jeff Johnson295189b2012-06-20 16:38:30 -070026144 @see
26145 @return Result of the function call
26146*/
26147WDI_Status
26148WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026149(
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 WDI_ControlBlockType* pWDICtx,
26151 WDI_EventInfoType* pEventData
26152)
26153{
26154 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26155 NULL;
26156 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26157 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026158 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026159 wpt_uint16 usDataOffset = 0;
26160 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026161 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26162 wpt_uint8 ucCurrentBSSSesIdx = 0;
26163 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026164
26165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026166 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026167
26168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 -------------------------------------------------------------------------*/
26171 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026172 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026173 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26176 {
26177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026181 }
26182
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026183 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26184 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26185 &pBSSSes);
26186 if ( NULL == pBSSSes )
26187 {
26188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026189 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026190 return WDI_STATUS_E_FAILURE;
26191 }
26192
Jeff Johnson295189b2012-06-20 16:38:30 -070026193 /*-----------------------------------------------------------------------
26194 Get message buffer
26195 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026196 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26197 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026198 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026199 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026200 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026201 {
26202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26203 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026204 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026205 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26206 wdiFilterMatchCountCb);
26207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026209 }
26210
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026211 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26212 wpalMemoryCopy( pSendBuffer+usDataOffset,
26213 &rcvFltPktMatchCntReqParam,
26214 sizeof(rcvFltPktMatchCntReqParam));
26215
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 //
26217 // Don't need to fill send buffer other than header
26218 //
26219 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026220 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026221
26222
26223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026224 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26227 wdiFilterMatchCountCb,
26228 pEventData->pUserData,
26229 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026230}
26231
26232/**
26233 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026234
26235 @param pWDICtx: pointer to the WLAN DAL context
26236 pEventData: pointer to the event information structure
26237
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 @see
26239 @return Result of the function call
26240*/
26241WDI_Status
26242WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026243(
Jeff Johnson295189b2012-06-20 16:38:30 -070026244 WDI_ControlBlockType* pWDICtx,
26245 WDI_EventInfoType* pEventData
26246)
Jeff Johnsone7245742012-09-05 17:12:55 -070026247{
Jeff Johnson295189b2012-06-20 16:38:30 -070026248 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26249 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026251 wpt_uint16 usDataOffset = 0;
26252 wpt_uint16 usSendSize = 0;
26253 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026254 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026255 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026256
26257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026258 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026259
26260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026262 -------------------------------------------------------------------------*/
26263 if (( NULL == pEventData ) ||
26264 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26265 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026266 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26268 {
26269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026272 return WDI_STATUS_E_FAILURE;
26273 }
26274
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026275 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026276 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26277 &pBSSSes);
26278 if ( NULL == pBSSSes )
26279 {
26280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026281 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026283 }
26284
26285 /*-----------------------------------------------------------------------
26286 Get message buffer
26287 -----------------------------------------------------------------------*/
26288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026289 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 sizeof(tHalRcvFltPktClearParam),
26291 &pSendBuffer, &usDataOffset, &usSendSize))||
26292 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26293 {
26294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26295 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026296 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026297 pEventData, pwdiRcvFltPktClearReqParamsType,
26298 wdiRcvFltPktClearFilterCb);
26299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 }
26302
26303
26304 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026305 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026306 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026307 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026308
Jeff Johnsone7245742012-09-05 17:12:55 -070026309 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26310 wpalMemoryCopy( pSendBuffer+usDataOffset,
26311 &rcvFltPktClearParam,
26312 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026313
26314 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026315 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026316
26317
26318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026319 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026320 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026323 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026324}
26325
26326/**
26327 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026328
26329 @param pWDICtx: pointer to the WLAN DAL context
26330 pEventData: pointer to the event information structure
26331
Jeff Johnson295189b2012-06-20 16:38:30 -070026332 @see
26333 @return Result of the function call
26334*/
26335WDI_Status
26336WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026337(
Jeff Johnson295189b2012-06-20 16:38:30 -070026338 WDI_ControlBlockType* pWDICtx,
26339 WDI_EventInfoType* pEventData
26340)
26341{
Jeff Johnson295189b2012-06-20 16:38:30 -070026342 eHalStatus halStatus;
26343 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026344 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26345 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26347
26348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026349 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026350
26351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 -------------------------------------------------------------------------*/
26354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26355 ( NULL == pEventData->pEventData ))
26356 {
26357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026361 }
26362
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026364
26365 /*-------------------------------------------------------------------------
26366 Extract response and send it to UMAC
26367 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026368 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26369 {
26370 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26371 pEventData->pEventData,
26372 sizeof(halRcvFltPktSetMcListRsp));
26373
26374 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26375 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26376 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26377 halRcvFltPktSetMcListRsp.bssIdx;
26378 }
26379 else
26380 {
26381 halStatus = *((eHalStatus*)pEventData->pEventData);
26382 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26383 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026384
26385 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026386 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026387
Jeff Johnsone7245742012-09-05 17:12:55 -070026388 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026389}
26390
26391/**
26392 @brief Process Set Rsp function (called when a
26393 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026394
26395 @param pWDICtx: pointer to the WLAN DAL context
26396 pEventData: pointer to the event information structure
26397
Jeff Johnson295189b2012-06-20 16:38:30 -070026398 @see
26399 @return Result of the function call
26400*/
26401WDI_Status
26402WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026403(
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 WDI_ControlBlockType* pWDICtx,
26405 WDI_EventInfoType* pEventData
26406)
26407{
Jeff Johnson295189b2012-06-20 16:38:30 -070026408 eHalStatus halStatus;
26409 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026410 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26411 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26413
26414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026415 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026416
26417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 -------------------------------------------------------------------------*/
26420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26421 ( NULL == pEventData->pEventData ))
26422 {
26423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026427 }
26428
26429 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026430 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026431
26432 /*-------------------------------------------------------------------------
26433 Extract response and send it to UMAC
26434 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026435 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26436 {
26437 wpalMemoryCopy( &halSetPktFilterRspParams,
26438 pEventData->pEventData,
26439 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026440
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026441 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26442 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26443 }
26444 else
26445 {
26446 halStatus = *((eHalStatus*)pEventData->pEventData);
26447 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026450 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026451
Jeff Johnsone7245742012-09-05 17:12:55 -070026452 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026453}
26454
26455/**
26456 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026457
26458 @param pWDICtx: pointer to the WLAN DAL context
26459 pEventData: pointer to the event information structure
26460
Jeff Johnson295189b2012-06-20 16:38:30 -070026461 @see
26462 @return Result of the function call
26463*/
26464WDI_Status
26465WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026466(
Jeff Johnson295189b2012-06-20 16:38:30 -070026467 WDI_ControlBlockType* pWDICtx,
26468 WDI_EventInfoType* pEventData
26469)
26470{
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026473 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26474 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026475
26476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26477
26478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026479 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026480
26481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026483 -------------------------------------------------------------------------*/
26484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26485 ( NULL == pEventData->pEventData ))
26486 {
26487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026491 }
26492
Jeff Johnsone7245742012-09-05 17:12:55 -070026493 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026494
26495 /*-------------------------------------------------------------------------
26496 Extract response and send it to UMAC
26497 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026498 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26499 {
26500 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26501 pEventData->pEventData,
26502 sizeof(halRcvFltrPktMatachRsp));
26503
26504 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26505 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26506 }
26507 else
26508 {
26509 halStatus = *((eHalStatus*)pEventData->pEventData);
26510 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26511 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026512
26513 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026514 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026515
Jeff Johnsone7245742012-09-05 17:12:55 -070026516 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026517}
26518
26519/**
26520 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026521
26522 @param pWDICtx: pointer to the WLAN DAL context
26523 pEventData: pointer to the event information structure
26524
Jeff Johnson295189b2012-06-20 16:38:30 -070026525 @see
26526 @return Result of the function call
26527*/
26528WDI_Status
26529WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026530(
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 WDI_ControlBlockType* pWDICtx,
26532 WDI_EventInfoType* pEventData
26533)
26534{
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 eHalStatus halStatus;
26536 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026537 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26538 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26540
26541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026542 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026543
26544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026546 -------------------------------------------------------------------------*/
26547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26548 ( NULL == pEventData->pEventData ))
26549 {
26550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 }
26555
26556 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026557 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026558
26559 /*-------------------------------------------------------------------------
26560 Extract response and send it to UMAC
26561 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026562 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26563 {
26564 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26565 pEventData->pEventData,
26566 sizeof(halRcvFltPktClearRspMsg));
26567
26568 wdiRcvFltPktClearRspParamsType.wdiStatus =
26569 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26570 wdiRcvFltPktClearRspParamsType.bssIdx =
26571 halRcvFltPktClearRspMsg.bssIdx;
26572 }
26573 else
26574 {
26575 halStatus = *((eHalStatus*)pEventData->pEventData);
26576 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26577 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026578
26579 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026580 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026581
Jeff Johnsone7245742012-09-05 17:12:55 -070026582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026583}
26584#endif // WLAN_FEATURE_PACKET_FILTERING
26585
26586/**
26587 @brief Process Shutdown Rsp function
26588 There is no shutdown response comming from HAL
26589 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026590
Jeff Johnson295189b2012-06-20 16:38:30 -070026591 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026592 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026593
26594 @see
26595 @return Result of the function call
26596*/
26597WDI_Status
26598WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026599(
Jeff Johnson295189b2012-06-20 16:38:30 -070026600 WDI_ControlBlockType* pWDICtx,
26601 WDI_EventInfoType* pEventData
26602)
26603{
26604 /*There is no shutdown response comming from HAL - function just kept for
26605 simmetry */
26606 WDI_ASSERT(0);
26607 return WDI_STATUS_SUCCESS;
26608}/*WDI_ProcessShutdownRsp*/
26609
26610/**
26611 @brief WDI_SetPowerParamsReq
26612
Jeff Johnsone7245742012-09-05 17:12:55 -070026613 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026614 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026615
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 wdiPowerParamsCb: callback for passing back the response
26617 of the Set Power Params operation received from the
26618 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026619
Jeff Johnson295189b2012-06-20 16:38:30 -070026620 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026621 callback
26622
Jeff Johnson295189b2012-06-20 16:38:30 -070026623 @return Result of the function call
26624*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026625WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026626WDI_SetPowerParamsReq
26627(
26628 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26629 WDI_SetPowerParamsCb wdiPowerParamsCb,
26630 void* pUserData
26631)
26632{
26633 WDI_EventInfoType wdiEventData;
26634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26635
26636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 ------------------------------------------------------------------------*/
26639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26640 {
26641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26642 "WDI API call before module is initialized - Fail request");
26643
Jeff Johnsone7245742012-09-05 17:12:55 -070026644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026645 }
26646
26647 /*------------------------------------------------------------------------
26648 Fill in Event data and post to the Main FSM
26649 ------------------------------------------------------------------------*/
26650 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026651 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026652 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026653 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 wdiEventData.pUserData = pUserData;
26655
26656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26657}/*WDI_SetPowerParamsReq*/
26658
26659/**
26660 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026661
26662 @param pWDICtx: pointer to the WLAN DAL context
26663 pEventData: pointer to the event information structure
26664
Jeff Johnson295189b2012-06-20 16:38:30 -070026665 @see
26666 @return Result of the function call
26667*/
26668WDI_Status
26669WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026670(
Jeff Johnson295189b2012-06-20 16:38:30 -070026671 WDI_ControlBlockType* pWDICtx,
26672 WDI_EventInfoType* pEventData
26673)
26674{
26675 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26676 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026677 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 wpt_uint16 usDataOffset = 0;
26679 wpt_uint16 usSendSize = 0;
26680 tSetPowerParamsType powerParams;
26681
26682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026684 -------------------------------------------------------------------------*/
26685 if (( NULL == pEventData ) ||
26686 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26687 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26688 {
26689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026693 }
26694
26695 /*-----------------------------------------------------------------------
26696 Get message buffer
26697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026699 sizeof(powerParams),
26700 &pSendBuffer, &usDataOffset, &usSendSize))||
26701 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26702 {
26703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026704 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026705 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026708 }
26709
26710 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026711 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026712 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26713
26714 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026715 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026716 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26717
26718 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026719 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026720 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26721
26722 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026723 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026724 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26725
26726 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026727 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026728 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26729
26730 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026731 powerParams.uBETInterval =
26732 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026733
Yue Ma0da19492013-05-13 17:01:29 -070026734 /* MAX LI for modulated DTIM */
26735 powerParams.uMaxLIModulatedDTIM =
26736 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026737
26738 wpalMemoryCopy( pSendBuffer+usDataOffset,
26739 &powerParams,
26740 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026741
26742 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026743 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026744
26745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026746 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26749 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026750}
26751
26752/**
26753 @brief Process Power Params Rsp function (called when a
26754 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026755
26756 @param pWDICtx: pointer to the WLAN DAL context
26757 pEventData: pointer to the event information structure
26758
Jeff Johnson295189b2012-06-20 16:38:30 -070026759 @see
26760 @return Result of the function call
26761*/
26762WDI_Status
26763WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026764(
Jeff Johnson295189b2012-06-20 16:38:30 -070026765 WDI_ControlBlockType* pWDICtx,
26766 WDI_EventInfoType* pEventData
26767)
26768{
26769 WDI_Status wdiStatus;
26770 eHalStatus halStatus;
26771 WDI_SetPowerParamsCb wdiPowerParamsCb;
26772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26773
26774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026776 -------------------------------------------------------------------------*/
26777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26778 ( NULL == pEventData->pEventData ))
26779 {
26780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 }
26785
Jeff Johnsone7245742012-09-05 17:12:55 -070026786 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026787
26788 /*-------------------------------------------------------------------------
26789 Extract response and send it to UMAC
26790 -------------------------------------------------------------------------*/
26791 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026792 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026793
26794 /*Notify UMAC*/
26795 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26796
Jeff Johnsone7245742012-09-05 17:12:55 -070026797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026798}/*WDI_ProcessSetPowerParamsRsp*/
26799
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026800/**
26801 @brief WDI_dhcpStartInd
26802 Host will send an event to the FW when DHCP is initiated
26803
26804 @param
26805 WDI_DHCPInd: DHCP Indication
26806 @see
26807 @return Result of the function call
26808*/
26809WDI_Status
26810WDI_dhcpStartInd
26811(
26812 WDI_DHCPInd *wdiDHCPInd
26813)
26814{
26815 WDI_EventInfoType wdiEventData;
26816
26817 /*------------------------------------------------------------------------
26818 Sanity Check
26819 ------------------------------------------------------------------------*/
26820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26821 {
26822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26823 "WDI API call before module is initialized - Fail request");
26824
26825 return WDI_STATUS_E_NOT_ALLOWED;
26826 }
26827
26828 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26829 wdiEventData.pEventData = wdiDHCPInd;
26830 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26831 wdiEventData.pCBfnc = NULL;
26832 wdiEventData.pUserData = NULL;
26833
26834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26835}
26836
26837
26838/**
26839 @brief WDI_dhcpStopInd
26840 Host will send an event to the FW when DHCP is completed
26841
26842 @param
26843 WDI_DHCPInd: DHCP Indication
26844 @see
26845 @return Result of the function call
26846*/
26847WDI_Status
26848WDI_dhcpStopInd
26849(
26850 WDI_DHCPInd *wdiDHCPInd
26851)
26852{
26853 WDI_EventInfoType wdiEventData;
26854
26855 /*------------------------------------------------------------------------
26856 Sanity Check
26857 ------------------------------------------------------------------------*/
26858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26859 {
26860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26861 "WDI API call before module is initialized - Fail request");
26862
26863 return WDI_STATUS_E_NOT_ALLOWED;
26864 }
26865
26866 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26867 wdiEventData.pEventData = wdiDHCPInd;
26868 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26869 wdiEventData.pCBfnc = NULL;
26870 wdiEventData.pUserData = NULL;
26871
26872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26873}
26874
26875
26876/**
26877 @brief Process DHCP Start Indication message and post it to HAL
26878
26879 @param pWDICtx: pointer to the WLAN DAL context
26880 pEventData: pointer to the event information structure
26881
26882 @see
26883 @return Result of the function call
26884*/
26885WDI_Status
26886WDI_ProcessDHCPStartInd
26887(
26888 WDI_ControlBlockType* pWDICtx,
26889 WDI_EventInfoType* pEventData
26890)
26891{
26892 wpt_uint8* pSendBuffer = NULL;
26893 wpt_uint16 usDataOffset = 0;
26894 wpt_uint16 usSendSize = 0;
26895 wpt_uint16 usLen = 0;
26896 WDI_DHCPInd* pwdiDHCPInd = NULL;
26897 tDHCPInfo* pDHCPInfo;
26898
26899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26900
26901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26902 "%s", __func__);
26903
26904 /*-------------------------------------------------------------------------
26905 Sanity check
26906 -------------------------------------------------------------------------*/
26907 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26908 {
26909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26910 "%s: Invalid parameters", __func__);
26911 WDI_ASSERT(0);
26912 return WDI_STATUS_E_FAILURE;
26913 }
26914 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26915 /*-----------------------------------------------------------------------
26916 Get message buffer
26917 -----------------------------------------------------------------------*/
26918
26919 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26920 WDI_DHCP_START_IND,
26921 sizeof(tDHCPInfo),
26922 &pSendBuffer, &usDataOffset, &usSendSize))||
26923 ( usSendSize < (usDataOffset + usLen )))
26924 {
26925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26926 "Unable to get send buffer in DHCP Start req %p ",
26927 pEventData);
26928 WDI_ASSERT(0);
26929 return WDI_STATUS_E_FAILURE;
26930 }
26931
26932 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26933 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26934 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26935 WDI_MAC_ADDR_LEN);
26936
26937 pWDICtx->pReqStatusUserData = NULL;
26938 pWDICtx->pfncRspCB = NULL;
26939
26940 /*-------------------------------------------------------------------------
26941 Send DHCP Start Indication to HAL
26942 -------------------------------------------------------------------------*/
26943 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26944
26945}/*WDI_ProcessDHCPStartInd*/
26946
26947/**
26948 @brief Process DHCP Stop indication message and post it to HAL
26949
26950 @param pWDICtx: pointer to the WLAN DAL context
26951 pEventData: pointer to the event information structure
26952
26953 @see
26954 @return Result of the function call
26955*/
26956WDI_Status
26957WDI_ProcessDHCPStopInd
26958(
26959 WDI_ControlBlockType* pWDICtx,
26960 WDI_EventInfoType* pEventData
26961)
26962{
26963 wpt_uint8* pSendBuffer = NULL;
26964 wpt_uint16 usDataOffset = 0;
26965 wpt_uint16 usSendSize = 0;
26966 wpt_uint16 usLen = 0;
26967 WDI_DHCPInd* pwdiDHCPInd = NULL;
26968 tDHCPInfo* pDHCPInfo;
26969
26970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26971
26972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26973 "%s", __func__);
26974
26975 /*-------------------------------------------------------------------------
26976 Sanity check
26977 -------------------------------------------------------------------------*/
26978
26979 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26980 {
26981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26982 "%s: Invalid parameters", __func__);
26983 WDI_ASSERT(0);
26984 return WDI_STATUS_E_FAILURE;
26985 }
26986 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26987 /*-----------------------------------------------------------------------
26988 Get message buffer
26989 -----------------------------------------------------------------------*/
26990
26991 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26992 WDI_DHCP_STOP_IND,
26993 sizeof(tDHCPInfo),
26994 &pSendBuffer, &usDataOffset, &usSendSize))||
26995 ( usSendSize < (usDataOffset + usLen )))
26996 {
26997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26998 "Unable to get send buffer in DHCP Start req %p ",
26999 pEventData);
27000 WDI_ASSERT(0);
27001 return WDI_STATUS_E_FAILURE;
27002 }
27003
27004 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27005 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27006 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27007 WDI_MAC_ADDR_LEN);
27008
27009 pWDICtx->pReqStatusUserData = NULL;
27010 pWDICtx->pfncRspCB = NULL;
27011 /*-------------------------------------------------------------------------
27012 Send DHCP Stop indication to HAL
27013 -------------------------------------------------------------------------*/
27014 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27015
27016}/*WDI_ProcessDHCPStopInd*/
27017
27018
Jeff Johnson295189b2012-06-20 16:38:30 -070027019#ifdef WLAN_FEATURE_GTK_OFFLOAD
27020/**
27021 @brief WDI_GTKOffloadReq will be called when the upper MAC
27022 wants to set GTK Rekey Counter while in power save. Upon
27023 the call of this API the WLAN DAL will pack and send a
27024 HAL GTK offload request message to the lower RIVA
27025 sub-system if DAL is in state STARTED.
27026
27027 In state BUSY this request will be queued. Request won't
27028 be allowed in any other state.
27029
27030 WDI_PostAssocReq must have been called.
27031
27032 @param pwdiGtkOffloadParams: the GTK offload as specified
27033 by the Device Interface
27034
27035 wdiGtkOffloadCb: callback for passing back the response
27036 of the GTK offload operation received from the device
27037
27038 pUserData: user data will be passed back with the
27039 callback
27040
27041 @see WDI_PostAssocReq
27042 @return Result of the function call
27043*/
27044WDI_Status
27045WDI_GTKOffloadReq
27046(
27047 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27048 WDI_GtkOffloadCb wdiGtkOffloadCb,
27049 void* pUserData
27050)
27051{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027052 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27054
27055 /*------------------------------------------------------------------------
27056 Sanity Check
27057 ------------------------------------------------------------------------*/
27058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27059 {
27060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27061 "WDI API call before module is initialized - Fail request");
27062
27063 return WDI_STATUS_E_NOT_ALLOWED;
27064 }
27065
27066 /*------------------------------------------------------------------------
27067 Fill in Event data and post to the Main FSM
27068 ------------------------------------------------------------------------*/
27069 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27070 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027071 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027072 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27073 wdiEventData.pUserData = pUserData;
27074
27075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27076}
27077
27078
27079/**
27080 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27081 MAC wants to get GTK Rekey Counter while in power save.
27082 Upon the call of this API the WLAN DAL will pack and
27083 send a HAL GTK offload request message to the lower RIVA
27084 sub-system if DAL is in state STARTED.
27085
27086 In state BUSY this request will be queued. Request won't
27087 be allowed in any other state.
27088
27089 WDI_PostAssocReq must have been called.
27090
27091 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27092 Information Message as specified by the
27093 Device Interface
27094
27095 wdiGtkOffloadGetInfoCb: callback for passing back the
27096 response of the GTK offload operation received from the
27097 device
27098
27099 pUserData: user data will be passed back with the
27100 callback
27101
27102 @see WDI_PostAssocReq
27103 @return Result of the function call
27104*/
27105WDI_Status
27106WDI_GTKOffloadGetInfoReq
27107(
27108 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27109 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27110 void* pUserData
27111)
27112{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027113 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27115
27116 /*------------------------------------------------------------------------
27117 Sanity Check
27118 ------------------------------------------------------------------------*/
27119 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27120 {
27121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27122 "WDI API call before module is initialized - Fail request");
27123
27124 return WDI_STATUS_E_NOT_ALLOWED;
27125 }
27126
27127 /*------------------------------------------------------------------------
27128 Fill in Event data and post to the Main FSM
27129 ------------------------------------------------------------------------*/
27130 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27131 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27132 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27133 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27134 wdiEventData.pUserData = pUserData;
27135
27136 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27137}
27138
27139
27140/**
27141 @brief Process set GTK Offload Request function
27142
27143 @param pWDICtx: pointer to the WLAN DAL context
27144 pEventData: pointer to the event information structure
27145
27146 @see
27147 @return Result of the function call
27148*/
27149WDI_Status
27150WDI_ProcessGTKOffloadReq
27151(
27152 WDI_ControlBlockType* pWDICtx,
27153 WDI_EventInfoType* pEventData
27154)
27155{
27156 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27157 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27158 wpt_uint8* pSendBuffer = NULL;
27159 wpt_uint16 usDataOffset = 0;
27160 wpt_uint16 usSendSize = 0;
27161 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027162 wpt_uint8 ucCurrentSessionId = 0;
27163 WDI_BSSSessionType* pBSSSes = NULL;
27164
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27166
27167 /*-------------------------------------------------------------------------
27168 Sanity check
27169 -------------------------------------------------------------------------*/
27170 if (( NULL == pEventData ) ||
27171 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27172 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
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);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027177 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 }
27179
27180 /*-----------------------------------------------------------------------
27181 Get message buffer
27182 -----------------------------------------------------------------------*/
27183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27184 sizeof(gtkOffloadReqParams),
27185 &pSendBuffer, &usDataOffset, &usSendSize))||
27186 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27187 {
27188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027189 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027190 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27191 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027192 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027193 }
27194
27195 //
27196 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27197 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027198 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27199 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27200 &pBSSSes);
27201 if ( NULL == pBSSSes )
27202 {
27203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027204 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027205 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027206 }
27207
27208 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27209
Jeff Johnson295189b2012-06-20 16:38:30 -070027210 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27211 // Copy KCK
27212 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27213 // Copy KEK
27214 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27215 // Copy KeyReplayCounter
27216 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27217
27218 wpalMemoryCopy( pSendBuffer+usDataOffset,
27219 &gtkOffloadReqParams,
27220 sizeof(gtkOffloadReqParams));
27221
27222 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27223 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27224
27225 /*-------------------------------------------------------------------------
27226 Send Get STA Request to HAL
27227 -------------------------------------------------------------------------*/
27228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27229 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027230
27231fail:
27232 // Release the message buffer so we don't leak
27233 wpalMemoryFree(pSendBuffer);
27234
27235failRequest:
27236 //WDA should have failure check to avoid the memory leak
27237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027238}
27239
27240
27241/**
27242 @brief Process GTK Offload Get Information Request function
27243
27244 @param pWDICtx: pointer to the WLAN DAL context
27245 pEventData: pointer to the event information structure
27246
27247 @see
27248 @return Result of the function call
27249*/
27250WDI_Status
27251WDI_ProcessGTKOffloadGetInfoReq
27252(
27253 WDI_ControlBlockType* pWDICtx,
27254 WDI_EventInfoType* pEventData
27255)
27256{
27257 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27258 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27259 wpt_uint8* pSendBuffer = NULL;
27260 wpt_uint16 usDataOffset = 0;
27261 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027262 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27263 wpt_uint8 ucCurrentSessionId = 0;
27264 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027265
27266 /*-------------------------------------------------------------------------
27267 Sanity check
27268 -------------------------------------------------------------------------*/
27269 if (( NULL == pEventData ) ||
27270 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27271 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27272 {
27273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027276 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 }
27278
27279 /*-----------------------------------------------------------------------
27280 Get message buffer
27281 -----------------------------------------------------------------------*/
27282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027283 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027284 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027285 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 {
27287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027288 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027289 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27290 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027291 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027292 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027293 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27294 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27295 &pBSSSes);
27296 if ( NULL == pBSSSes )
27297 {
27298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027299 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027300 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027301 }
27302 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027303
27304 //
27305 // Don't need to fill send buffer other than header
27306 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027307 wpalMemoryCopy( pSendBuffer+usDataOffset,
27308 &halGtkOffloadGetInfoReqParams,
27309 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027310
27311 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27312 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27313
27314 /*-------------------------------------------------------------------------
27315 Send Get STA Request to HAL
27316 -------------------------------------------------------------------------*/
27317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27318 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027319fail:
27320 // Release the message buffer so we don't leak
27321 wpalMemoryFree(pSendBuffer);
27322
27323failRequest:
27324 //WDA should have failure check to avoid the memory leak
27325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027326}
27327
27328/**
27329 @brief Process host offload Rsp function (called when a
27330 response is being received over the bus from HAL)
27331
27332 @param pWDICtx: pointer to the WLAN DAL context
27333 pEventData: pointer to the event information structure
27334
27335 @see
27336 @return Result of the function call
27337*/
27338WDI_Status
27339WDI_ProcessGtkOffloadRsp
27340(
27341 WDI_ControlBlockType* pWDICtx,
27342 WDI_EventInfoType* pEventData
27343)
27344{
Jeff Johnson295189b2012-06-20 16:38:30 -070027345 eHalStatus halStatus;
27346 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027347 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27348 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027349
27350 /*-------------------------------------------------------------------------
27351 Sanity check
27352 -------------------------------------------------------------------------*/
27353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27354 ( NULL == pEventData->pEventData))
27355 {
27356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027358 WDI_ASSERT(0);
27359 return WDI_STATUS_E_FAILURE;
27360 }
27361
Wilson Yangcf2cf012013-10-10 23:13:38 -070027362 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27363
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 /*-------------------------------------------------------------------------
27365 Extract response and send it to UMAC
27366 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027367 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27368 {
27369 wpalMemoryCopy( &halGtkOffloadRspParams,
27370 pEventData->pEventData,
27371 sizeof(halGtkOffloadRspParams));
27372
27373 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027374 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027375 wdiGtkOffloadRsparams.bssIdx =
27376 halGtkOffloadRspParams.bssIdx;
27377 }
27378 else
27379 {
27380 halStatus = *((eHalStatus*)pEventData->pEventData);
27381 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27382 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027383
27384 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027385 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027386
27387 return WDI_STATUS_SUCCESS;
27388}
27389
27390/**
27391 @brief Process GTK Offload Get Information Response function
27392
27393 @param pWDICtx: pointer to the WLAN DAL context
27394 pEventData: pointer to the event information structure
27395
27396 @see
27397 @return Result of the function call
27398*/
27399WDI_Status
27400WDI_ProcessGTKOffloadGetInfoRsp
27401(
27402 WDI_ControlBlockType* pWDICtx,
27403 WDI_EventInfoType* pEventData
27404)
27405{
Jeff Johnson295189b2012-06-20 16:38:30 -070027406 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027407 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027408 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27409 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027410 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027411
Jeff Johnson295189b2012-06-20 16:38:30 -070027412
27413 /*-------------------------------------------------------------------------
27414 Sanity check
27415 -------------------------------------------------------------------------*/
27416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27417 ( NULL == pEventData->pEventData ))
27418 {
27419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027420 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027421 WDI_ASSERT(0);
27422 return WDI_STATUS_E_FAILURE;
27423 }
27424
Wilson Yangcf2cf012013-10-10 23:13:38 -070027425 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27426
27427 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027428 Extract response and send it to UMAC
27429 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027430 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27431 {
27432 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27433 pEventData->pEventData,
27434 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027435
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027436 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027437 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027438 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27439 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27440 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27441 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27442 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27443 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27444 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27445 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027446
27447 wpalMutexAcquire(&pWDICtx->wptMutex);
27448 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27449 &pBSSSes);
27450
27451 if ( NULL == pBSSSes )
27452 {
27453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27454 "Association sequence for this BSS does not exist or "
27455 "association no longer in progress - mysterious HAL response");
27456 wpalMutexRelease(&pWDICtx->wptMutex);
27457 return WDI_STATUS_E_NOT_ALLOWED;
27458 }
27459
27460 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27461 sizeof (wpt_macAddr));
27462 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027463 }
27464 else
27465 {
27466 halStatus = *((eHalStatus*)pEventData->pEventData);
27467 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27468 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027469 /*Notify UMAC*/
27470 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27471 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027472 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027473
27474 return WDI_STATUS_SUCCESS;
27475}
27476#endif // WLAN_FEATURE_GTK_OFFLOAD
27477
27478#ifdef WLAN_WAKEUP_EVENTS
27479WDI_Status
27480WDI_ProcessWakeReasonInd
27481(
27482 WDI_ControlBlockType* pWDICtx,
27483 WDI_EventInfoType* pEventData
27484)
27485{
27486 WDI_LowLevelIndType *pWdiInd;
27487 tpWakeReasonParams pWakeReasonParams;
27488 wpt_uint32 allocSize = 0;
27489
27490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027491 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027492
27493 /*-------------------------------------------------------------------------
27494 Sanity check
27495 -------------------------------------------------------------------------*/
27496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27497 ( NULL == pEventData->pEventData ))
27498 {
27499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027501 WDI_ASSERT( 0 );
27502 return WDI_STATUS_E_FAILURE;
27503 }
27504
27505 /*-------------------------------------------------------------------------
27506 Extract indication and send it to UMAC
27507 -------------------------------------------------------------------------*/
27508 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27509
27510 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27511
27512 //Allocate memory for WDI_WakeReasonIndType structure
27513 pWdiInd = wpalMemoryAllocate(allocSize) ;
27514
27515 if(NULL == pWdiInd)
27516 {
27517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027518 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027519 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 WDI_ASSERT(0);
27521 return WDI_STATUS_E_FAILURE;
27522 }
27523
27524 wpalMemoryZero(pWdiInd, allocSize);
27525
27526 /* Fill in the indication parameters*/
27527 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27528 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27529 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27530 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27531 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27532 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27533 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27534 &(pWakeReasonParams->aDataStart[0]),
27535 pWakeReasonParams->ulStoredDataLen);
27536
ltimariu034f7d62013-01-24 18:54:33 -080027537
27538 if ( pWDICtx->wdiLowLevelIndCB )
27539 {
27540 /*Notify UMAC*/
27541 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27542 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027543
27544 //Free memory allocated for WDI_WakeReasonIndType structure
27545 wpalMemoryFree(pWdiInd);
27546
27547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027548 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027549
27550 return WDI_STATUS_SUCCESS;
27551}
27552#endif // WLAN_WAKEUP_EVENTS
27553
27554void WDI_GetWcnssCompiledApiVersion
27555(
27556 WDI_WlanVersionType *pWcnssApiVersion
27557)
27558{
27559 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27560 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27561 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27562 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27563}
27564
27565/**
27566 @brief Process Set TM Level Rsp function (called when a
27567 response is being received over the bus from HAL)
27568
27569 @param pWDICtx: pointer to the WLAN DAL context
27570 pEventData: pointer to the event information structure
27571
27572 @see
27573 @return Result of the function call
27574*/
27575WDI_Status
27576WDI_ProcessSetTmLevelRsp
27577(
27578 WDI_ControlBlockType* pWDICtx,
27579 WDI_EventInfoType* pEventData
27580)
27581{
27582 WDI_Status wdiStatus;
27583 eHalStatus halStatus;
27584 WDI_SetTmLevelCb wdiSetTmLevelCb;
27585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27586
27587 /*-------------------------------------------------------------------------
27588 Sanity check
27589 -------------------------------------------------------------------------*/
27590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27591 ( NULL == pEventData->pEventData ))
27592 {
27593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027595 WDI_ASSERT(0);
27596 return WDI_STATUS_E_FAILURE;
27597 }
27598
27599 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27600
27601 /*-------------------------------------------------------------------------
27602 Extract response and send it to UMAC
27603 -------------------------------------------------------------------------*/
27604 halStatus = *((eHalStatus*)pEventData->pEventData);
27605 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27606
27607 /*Notify UMAC*/
27608 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27609
27610 return WDI_STATUS_SUCCESS;
27611}/*WDI_ProcessSetTmLevelRsp*/
27612
27613/**
27614 @brief Process Set Thermal Mitigation level Changed request
27615
27616 @param pWDICtx: pointer to the WLAN DAL context
27617 pEventData: pointer to the event information structure
27618
27619 @see
27620 @return Result of the function call
27621*/
27622WDI_Status
27623WDI_ProcessSetTmLevelReq
27624(
27625 WDI_ControlBlockType* pWDICtx,
27626 WDI_EventInfoType* pEventData
27627)
27628{
27629 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27630 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27631 wpt_uint8* pSendBuffer = NULL;
27632 wpt_uint16 usDataOffset = 0;
27633 wpt_uint16 usSendSize = 0;
27634 tSetThermalMitgationType halTmMsg;
27635
27636 /*-------------------------------------------------------------------------
27637 Sanity check
27638 -------------------------------------------------------------------------*/
27639 if (( NULL == pEventData ) ||
27640 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27641 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27642 {
27643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027645 WDI_ASSERT(0);
27646 return WDI_STATUS_E_FAILURE;
27647 }
27648
27649 /*-----------------------------------------------------------------------
27650 Get message buffer
27651 -----------------------------------------------------------------------*/
27652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27653 sizeof(halTmMsg),
27654 &pSendBuffer, &usDataOffset, &usSendSize))||
27655 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27656 {
27657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027658 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027659 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27660 WDI_ASSERT(0);
27661 return WDI_STATUS_E_FAILURE;
27662 }
27663
27664 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27665 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27666
27667 wpalMemoryCopy( pSendBuffer+usDataOffset,
27668 &halTmMsg,
27669 sizeof(halTmMsg));
27670
27671 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27672 pWDICtx->pfncRspCB = NULL;
27673 /*-------------------------------------------------------------------------
27674 Send Get STA Request to HAL
27675 -------------------------------------------------------------------------*/
27676 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27677 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27678}
27679
27680/* Fill the value from the global features enabled array to the global capabilities
27681 * bitmap struct
27682 */
27683static void
27684FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27685{
27686 wpt_int8 i;
27687 for (i=0; i<len; i++)
27688 {
27689 setFeatCaps(fCaps, enabledFeat[i]);
27690 }
27691}
27692
27693/**
27694 @brief WDI_featureCapsExchangeReq
27695 Post feature capability bitmap exchange event.
27696 Host will send its own capability to FW in this req and
27697 expect FW to send its capability back as a bitmap in Response
27698
27699 @param
27700
27701 wdiFeatureCapsExchangeCb: callback called on getting the response.
27702 It is kept to mantain similarity between WDI reqs and if needed, can
27703 be used in future. Currently, It is set to NULL
27704
27705 pUserData: user data will be passed back with the
27706 callback
27707
27708 @see
27709 @return Result of the function call
27710*/
27711WDI_Status
27712WDI_featureCapsExchangeReq
27713(
27714 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27715 void* pUserData
27716)
27717{
27718 WDI_EventInfoType wdiEventData;
27719 wpt_int32 fCapsStructSize;
27720
27721 /*------------------------------------------------------------------------
27722 Sanity Check
27723 ------------------------------------------------------------------------*/
27724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27725 {
27726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27727 "WDI API call before module is initialized - Fail request");
27728
27729 return WDI_STATUS_E_NOT_ALLOWED;
27730 }
27731
27732 /* Allocate memory separately for global variable carrying FW caps */
27733 fCapsStructSize = sizeof(tWlanFeatCaps);
27734 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27735 if ( NULL == gpHostWlanFeatCaps )
27736 {
27737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027738 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 WDI_ASSERT(0);
27740 return WDI_STATUS_MEM_FAILURE;
27741 }
27742
27743 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27744
27745 /*------------------------------------------------------------------------
27746 Fill in Event data and post to the Main FSM
27747 ------------------------------------------------------------------------*/
27748 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27749 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027751 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027752 gpHostWlanFeatCaps->featCaps[0],
27753 gpHostWlanFeatCaps->featCaps[1],
27754 gpHostWlanFeatCaps->featCaps[2],
27755 gpHostWlanFeatCaps->featCaps[3]
27756 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27758 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027759 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27760 wdiEventData.pEventData = gpHostWlanFeatCaps;
27761 wdiEventData.uEventDataSize = fCapsStructSize;
27762 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27763 wdiEventData.pUserData = pUserData;
27764
27765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27766}
27767
27768/**
Yathishd8713192012-12-10 14:21:35 -080027769 @brief Disable Active mode offload in Host
27770
27771 @param void
27772 @see
27773 @return void
27774*/
27775void
27776WDI_disableCapablityFeature(wpt_uint8 feature_index)
27777{
27778 supportEnabledFeatures[feature_index] = 0;
27779 return;
27780}
27781
27782/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 @brief Process Host-FW Capability Exchange Request function
27784
27785 @param pWDICtx: pointer to the WLAN DAL context
27786 pEventData: pointer to the event information structure
27787
27788 @see
27789 @return Result of the function call
27790*/
27791WDI_Status
27792WDI_ProcessFeatureCapsExchangeReq
27793(
27794 WDI_ControlBlockType* pWDICtx,
27795 WDI_EventInfoType* pEventData
27796)
27797{
27798 wpt_uint8* pSendBuffer = NULL;
27799 wpt_uint16 usDataOffset = 0;
27800 wpt_uint16 usSendSize = 0;
27801 wpt_uint16 usLen = 0;
27802
27803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27804
27805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027806 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027807
27808 /*-------------------------------------------------------------------------
27809 Sanity check
27810 -------------------------------------------------------------------------*/
27811 /* Call back function is NULL since not required for cap exchange req */
27812 if (( NULL == pEventData ) ||
27813 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27814 {
27815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027817 WDI_ASSERT(0);
27818 return WDI_STATUS_E_FAILURE;
27819 }
27820
27821 /*-----------------------------------------------------------------------
27822 Get message buffer
27823 -----------------------------------------------------------------------*/
27824 usLen = sizeof(tWlanFeatCaps);
27825
27826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27827 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27828 usLen,
27829 &pSendBuffer, &usDataOffset, &usSendSize))||
27830 ( usSendSize < (usDataOffset + usLen )))
27831 {
27832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027833 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027834 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27835 WDI_ASSERT(0);
27836 return WDI_STATUS_E_FAILURE;
27837 }
27838
27839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027840 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027841 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27842 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27843 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27844 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27845 );
27846
27847 /* Copy host caps after the offset in the send buffer */
27848 wpalMemoryCopy( pSendBuffer+usDataOffset,
27849 (tWlanFeatCaps *)pEventData->pEventData,
27850 usLen);
27851
27852 /*-------------------------------------------------------------------------
27853 Send Start Request to HAL
27854 -------------------------------------------------------------------------*/
27855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27856 (WDI_StartRspCb)pEventData->pCBfnc,
27857 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27858
27859}/*WDI_ProcessFeatureCapsExchangeReq*/
27860
27861/**
27862 @brief Process Host-FW Capability Exchange Response function
27863
27864 @param pWDICtx: pointer to the WLAN DAL context
27865 pEventData: pointer to the event information structure
27866
27867 @see
27868 @return Result of the function call
27869*/
27870WDI_Status
27871WDI_ProcessFeatureCapsExchangeRsp
27872(
27873 WDI_ControlBlockType* pWDICtx,
27874 WDI_EventInfoType* pEventData
27875)
27876{
27877 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27878 wpt_int32 fCapsStructSize;
27879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27880
27881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027882 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027883
27884 /*-------------------------------------------------------------------------
27885 Sanity check
27886 -------------------------------------------------------------------------*/
27887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27888 ( NULL == pEventData->pEventData ))
27889 {
27890 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027893 WDI_ASSERT(0);
27894 return WDI_STATUS_E_FAILURE;
27895 }
27896
27897 /* Allocate memory separately for global variable carrying FW caps */
27898 fCapsStructSize = sizeof(tWlanFeatCaps);
27899 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27900 if ( NULL == gpFwWlanFeatCaps )
27901 {
27902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027903 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027904 WDI_ASSERT(0);
27905 return WDI_STATUS_MEM_FAILURE;
27906 }
27907
27908 /*-------------------------------------------------------------------------
27909 Unpack HAL Response Message - the header was already extracted by the
27910 main Response Handling procedure
27911 -------------------------------------------------------------------------*/
27912 /*-------------------------------------------------------------------------
27913 Extract response and send it to UMAC
27914 -------------------------------------------------------------------------*/
27915
27916 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27917 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027919 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027920 gpFwWlanFeatCaps->featCaps[0],
27921 gpFwWlanFeatCaps->featCaps[1],
27922 gpFwWlanFeatCaps->featCaps[2],
27923 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027924 );
27925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27926 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027927 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27928
27929 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27930 if (wdiFeatureCapsExchangeCb != NULL)
27931 wdiFeatureCapsExchangeCb(NULL, NULL);
27932
27933 return WDI_STATUS_SUCCESS;
27934}
27935
Mohit Khanna4a70d262012-09-11 16:30:12 -070027936#ifdef WLAN_FEATURE_11AC
27937WDI_Status
27938WDI_ProcessUpdateVHTOpModeRsp
27939(
27940 WDI_ControlBlockType* pWDICtx,
27941 WDI_EventInfoType* pEventData
27942)
27943{
27944 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27945 WDI_Status wdiStatus;
27946 eHalStatus halStatus;
27947
27948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27949
27950 /*-------------------------------------------------------------------------
27951 Sanity check
27952 -------------------------------------------------------------------------*/
27953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27954 ( NULL == pEventData->pEventData))
27955 {
27956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027957 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027958 WDI_ASSERT(0);
27959 return WDI_STATUS_E_FAILURE;
27960 }
27961 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27962
27963 /*-------------------------------------------------------------------------
27964 Extract response and send it to UMAC
27965 -------------------------------------------------------------------------*/
27966 halStatus = *((eHalStatus*)pEventData->pEventData);
27967 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27968
27969 /*Notify UMAC*/
27970 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27971
27972 return WDI_STATUS_SUCCESS;
27973}
27974#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027975/**
27976 @brief WDI_getHostWlanFeatCaps
27977 WDI API that returns whether the feature passed to it as enum value in
27978 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27979 variable storing host capability bitmap to find this. This can be used by
27980 other moduels to decide certain things like call different APIs based on
27981 whether a particular feature is supported.
27982
27983 @param
27984
27985 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27986
27987 @see
27988 @return
27989 0 - if the feature is NOT supported in host
27990 any non-zero value - if the feature is SUPPORTED in host.
27991*/
27992wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27993{
27994 wpt_uint8 featSupported = 0;
27995 if (gpHostWlanFeatCaps != NULL)
27996 {
27997 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27998 }
27999 else
28000 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028002 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028003 }
28004 return featSupported;
28005}
28006
28007/**
28008 @brief WDI_getFwWlanFeatCaps
28009 WDI API that returns whether the feature passed to it as enum value in
28010 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28011 variable storing host capability bitmap to find this. This can be used by
28012 other moduels to decide certain things like call different APIs based on
28013 whether a particular feature is supported.
28014
28015 @param
28016
28017 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28018 in wlan_hal_msg.h.
28019
28020 @see
28021 @return
28022 0 - if the feature is NOT supported in FW
28023 any non-zero value - if the feature is SUPPORTED in FW.
28024*/
28025wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28026{
28027 wpt_uint8 featSupported = 0;
28028 if (gpFwWlanFeatCaps != NULL)
28029 {
28030 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28031 }
28032 else
28033 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028035 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028036 }
28037 return featSupported;
28038}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028039
28040#ifdef WLAN_FEATURE_11AC
28041WDI_Status
28042WDI_ProcessUpdateVHTOpModeReq
28043(
28044 WDI_ControlBlockType* pWDICtx,
28045 WDI_EventInfoType* pEventData
28046)
28047{
28048 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28049 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28050 wpt_uint8* pSendBuffer = NULL;
28051 wpt_uint16 usDataOffset = 0;
28052 wpt_uint16 usSendSize = 0;
28053
28054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28055
28056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028057 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028058
28059 /*-------------------------------------------------------------------------
28060 Sanity check
28061 -------------------------------------------------------------------------*/
28062 if (( NULL == pEventData ) ||
28063 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28064 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28065 {
28066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028067 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028068 WDI_ASSERT(0);
28069 return WDI_STATUS_E_FAILURE;
28070 }
28071
28072 /*-----------------------------------------------------------------------
28073 Get message buffer
28074 -----------------------------------------------------------------------*/
28075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28076 sizeof(WDI_UpdateVHTOpMode),
28077 &pSendBuffer, &usDataOffset, &usSendSize))||
28078 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28079 {
28080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28081 "Unable to get send buffer in update vht opMode req");
28082 WDI_ASSERT(0);
28083 return WDI_STATUS_E_FAILURE;
28084 }
28085
28086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028087 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028088
28089 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28090 sizeof(WDI_UpdateVHTOpMode));
28091
28092 /*-------------------------------------------------------------------------
28093 Send Start Request to HAL
28094 -------------------------------------------------------------------------*/
28095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28096 wdiVHTOpModeCb,
28097 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28098
28099}
28100
28101WDI_Status
28102WDI_UpdateVHTOpModeReq
28103(
28104 WDI_UpdateVHTOpMode *pData,
28105 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28106 void* pUserData
28107)
28108{
28109 WDI_EventInfoType wdiEventData;
28110
28111 /*------------------------------------------------------------------------
28112 Sanity Check
28113 ------------------------------------------------------------------------*/
28114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28115 {
28116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28117 "WDI API call before module is initialized - Fail request");
28118
28119 return WDI_STATUS_E_NOT_ALLOWED;
28120 }
28121
28122 /*------------------------------------------------------------------------
28123 Fill in Event data and post to the Main FSM
28124 ------------------------------------------------------------------------*/
28125 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28126 wdiEventData.pEventData = pData;
28127 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28128 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28129 wdiEventData.pUserData = pUserData;
28130
28131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028132 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028133
28134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28135
28136}
28137#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028138
28139/**
28140 @brief WDI_TransportChannelDebug -
28141 Display DXE Channel debugging information
28142 User may request to display DXE channel snapshot
28143 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028144
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080028145 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028146 @param enableStallDetect : Enable stall detect feature
28147 This feature will take effect to data performance
28148 Not integrate till fully verification
28149 @see
28150 @return none
28151*/
28152void WDI_TransportChannelDebug
28153(
28154 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028155 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028156)
28157{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028158 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028159 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028160}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028161/**
28162 @brief WDI_SsrTimerCB
28163 Callback function for SSR timer, if this is called then the graceful
28164 shutdown for Riva did not happen.
28165
28166 @param pUserData : user data to timer
28167
28168 @see
28169 @return none
28170*/
28171void
28172WDI_SsrTimerCB
28173(
28174 void *pUserData
28175)
28176{
28177 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28179
28180 if (NULL == pWDICtx )
28181 {
28182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028183 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028184 WDI_ASSERT(0);
28185 return;
28186 }
28187 wpalRivaSubystemRestart();
28188
28189 return;
28190
28191}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028192
28193/**
28194 @brief WDI_SetEnableSSR -
28195 This API is called to enable/disable SSR on WDI timeout.
28196
28197 @param enableSSR : enable/disable SSR
28198
28199 @see
28200 @return none
28201*/
28202void WDI_SetEnableSSR(wpt_boolean enableSSR)
28203{
28204 gWDICb.bEnableSSR = enableSSR;
28205}
Leo Chang00bc9132013-08-01 19:21:11 -070028206
28207
28208#ifdef FEATURE_WLAN_LPHB
28209/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028210 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028211 This function will be invoked when FW detects low power
28212 heart beat failure
28213
28214 @param pWDICtx : wdi context
28215 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028216 @see
28217 @return Result of the function call
28218*/
28219WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028220WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028221(
28222 WDI_ControlBlockType* pWDICtx,
28223 WDI_EventInfoType* pEventData
28224)
28225{
28226 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028227 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28229
28230 /*-------------------------------------------------------------------------
28231 Sanity check
28232 -------------------------------------------------------------------------*/
28233 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28234 (NULL == pEventData->pEventData))
28235 {
28236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28237 "%s: Invalid parameters", __func__);
28238 WDI_ASSERT(0);
28239 return WDI_STATUS_E_FAILURE;
28240 }
28241
28242 /*-------------------------------------------------------------------------
28243 Extract indication and send it to UMAC
28244 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028245 wpalMemoryCopy(&lphbIndicationParam,
28246 pEventData->pEventData,
28247 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028248
Leo Chang8d19a5f2013-09-26 13:32:26 -070028249 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028250 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028251 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028252 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028253 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028254 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028255 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028256 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028257 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028258 /*Notify UMAC*/
28259 if (pWDICtx->wdiLowLevelIndCB)
28260 {
28261 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28262 }
28263
28264 return WDI_STATUS_SUCCESS;
28265}
28266
28267/**
28268 @brief WDI_ProcessLphbCfgRsp -
28269 LPHB configuration response from FW
28270
28271 @param pWDICtx : wdi context
28272 pEventData : indication data
28273
28274 @see
28275 @return Result of the function call
28276*/
28277WDI_Status WDI_ProcessLphbCfgRsp
28278(
28279 WDI_ControlBlockType* pWDICtx,
28280 WDI_EventInfoType* pEventData
28281)
28282{
28283 WDI_Status wdiStatus;
28284 eHalStatus halStatus;
28285 WDI_LphbCfgCb wdiLphbCfgCb;
28286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28287
28288 /*-------------------------------------------------------------------------
28289 Sanity check
28290 -------------------------------------------------------------------------*/
28291 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28292 (NULL == pEventData->pEventData))
28293 {
28294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28295 "%s: Invalid parameters", __func__);
28296 WDI_ASSERT(0);
28297 return WDI_STATUS_E_FAILURE;
28298 }
28299
28300 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28301
28302 /*-------------------------------------------------------------------------
28303 Extract response and send it to UMAC
28304 -------------------------------------------------------------------------*/
28305 halStatus = *((eHalStatus*)pEventData->pEventData);
28306 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28307
28308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28309 "LPHB Cfg Rsp Return status %d", wdiStatus);
28310 /*Notify UMAC*/
28311 if (NULL != wdiLphbCfgCb)
28312 {
28313 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28314 }
28315
28316 return WDI_STATUS_SUCCESS;
28317}
28318
28319/**
28320 @brief WDI_ProcessLPHBConfReq -
28321 LPHB configuration request to FW
28322
28323 @param pWDICtx : wdi context
28324 pEventData : indication data
28325
28326 @see
28327 @return none
28328*/
28329WDI_Status WDI_ProcessLPHBConfReq
28330(
28331 WDI_ControlBlockType* pWDICtx,
28332 WDI_EventInfoType* pEventData
28333)
28334{
28335 WDI_LPHBReq *pLphbReqParams;
28336 WDI_Status wdiStatus;
28337 wpt_uint8* pSendBuffer = NULL;
28338 wpt_uint16 usDataOffset = 0;
28339 wpt_uint16 usSendSize = 0;
28340 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28342
28343 /*-------------------------------------------------------------------------
28344 Sanity check
28345 -------------------------------------------------------------------------*/
28346 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28347 {
28348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28349 "%s: Invalid parameters in Suspend ind",__func__);
28350 WDI_ASSERT(0);
28351 return WDI_STATUS_E_FAILURE;
28352 }
28353
28354 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28355
28356 /*-----------------------------------------------------------------------
28357 Get message buffer
28358 -----------------------------------------------------------------------*/
28359 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28360 WDI_LPHB_CFG_REQ,
28361 sizeof(tHalLowPowerHeartBeatReqMsg),
28362 &pSendBuffer, &usDataOffset, &usSendSize))||
28363 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28364 {
28365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28366 "Unable to get send buffer in LPHB Ind ");
28367 WDI_ASSERT(0);
28368 return WDI_STATUS_E_FAILURE;
28369 }
28370
28371 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28372 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28373
28374 halLphbReqRarams->lowPowerHeartBeatCmdType =
28375 (tANI_U16)(++pLphbReqParams->cmd);
28376 switch ((tANI_U16)pLphbReqParams->cmd)
28377 {
28378 case WDI_LPHB_SET_EN_PARAMS_INDID:
28379 halLphbReqRarams->sessionIdx =
28380 pLphbReqParams->params.lphbEnableReq.session;
28381 halLphbReqRarams->options.control.heartBeatEnable =
28382 pLphbReqParams->params.lphbEnableReq.enable;
28383 halLphbReqRarams->options.control.heartBeatType =
28384 pLphbReqParams->params.lphbEnableReq.item;
28385 break;
28386
28387 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28388 halLphbReqRarams->sessionIdx =
28389 pLphbReqParams->params.lphbTcpParamReq.session;
28390 halLphbReqRarams->options.tcpParams.timeOutSec =
28391 pLphbReqParams->params.lphbTcpParamReq.timeout;
28392 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28393 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28394 sizeof(v_U32_t));
28395 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28396 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28397 sizeof(v_U32_t));
28398
28399 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28400 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28401 WDI_MAC_ADDR_LEN);
28402
28403 halLphbReqRarams->options.tcpParams.hostPort =
28404 pLphbReqParams->params.lphbTcpParamReq.src_port;
28405 halLphbReqRarams->options.tcpParams.destPort =
28406 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028407 halLphbReqRarams->options.tcpParams.timePeriodSec =
28408 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28409 halLphbReqRarams->options.tcpParams.tcpSn =
28410 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028411 break;
28412
28413 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28414 halLphbReqRarams->sessionIdx =
28415 pLphbReqParams->params.lphbTcpFilterReq.session;
28416 halLphbReqRarams->options.tcpUdpFilter.offset =
28417 pLphbReqParams->params.lphbTcpFilterReq.offset;
28418 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28419 pLphbReqParams->params.lphbTcpFilterReq.length;
28420 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28421 pLphbReqParams->params.lphbTcpFilterReq.filter,
28422 WDI_LPHB_FILTER_LEN);
28423 break;
28424
28425 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28426 halLphbReqRarams->sessionIdx =
28427 pLphbReqParams->params.lphbUdpParamReq.session;
28428 halLphbReqRarams->options.udpParams.timeOutSec =
28429 pLphbReqParams->params.lphbUdpParamReq.timeout;
28430 halLphbReqRarams->options.udpParams.timePeriodSec =
28431 pLphbReqParams->params.lphbUdpParamReq.interval;
28432 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28433 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28434 sizeof(v_U32_t));
28435 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28436 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28437 sizeof(v_U32_t));
28438
28439 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28440 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28441 WDI_MAC_ADDR_LEN);
28442
28443 halLphbReqRarams->options.udpParams.hostPort =
28444 pLphbReqParams->params.lphbUdpParamReq.src_port;
28445 halLphbReqRarams->options.udpParams.destPort =
28446 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28447 break;
28448
28449 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28450 halLphbReqRarams->sessionIdx =
28451 pLphbReqParams->params.lphbUdpFilterReq.session;
28452 halLphbReqRarams->options.tcpUdpFilter.offset =
28453 pLphbReqParams->params.lphbUdpFilterReq.offset;
28454 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28455 pLphbReqParams->params.lphbUdpFilterReq.length;
28456 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28457 pLphbReqParams->params.lphbUdpFilterReq.filter,
28458 WDI_LPHB_FILTER_LEN);
28459 break;
28460
28461 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28462 /* NA */
28463 break;
28464
28465 default:
28466 break;
28467 }
28468
28469 /*-------------------------------------------------------------------------
28470 Send Suspend Request to HAL
28471 -------------------------------------------------------------------------*/
28472 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28473 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28474
28475 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28476 usSendSize, pWDICtx->pfncRspCB,
28477 pWDICtx->pReqStatusUserData,
28478 WDI_LPHB_CFG_RESP);
28479
28480 return wdiStatus;
28481}
28482
28483/**
28484 @brief WDI_LPHBConfReq -
28485 LPHB configuration request API
28486
28487 @param lphbconfParam : configuration parameter
28488 usrData : client context
28489 lphbCfgCb : callback function pointer
28490
28491 @see
28492 @return Success or fail status code
28493*/
28494WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28495 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28496{
28497 WDI_EventInfoType wdiEventData;
28498
28499 /*------------------------------------------------------------------------
28500 Sanity Check
28501 ------------------------------------------------------------------------*/
28502 if (eWLAN_PAL_FALSE == gWDIInitialized)
28503 {
28504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28505 "WDI API call before module is initialized - Fail request");
28506
28507 return WDI_STATUS_E_NOT_ALLOWED;
28508 }
28509
28510 /*------------------------------------------------------------------------
28511 Fill in Event data and post to the Main FSM
28512 ------------------------------------------------------------------------*/
28513 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28514 wdiEventData.pEventData = lphbconfParam;
28515 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28516 wdiEventData.pCBfnc = lphbCfgCb;
28517 wdiEventData.pUserData = usrData;
28518
28519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28520}
28521#endif /* FEATURE_WLAN_LPHB */
28522
Ravi Joshi96d77342013-07-23 08:37:49 -070028523/**
28524 @brief WDI_ProcessIbssPeerInactivityInd
28525 Process peer inactivity indication coming from HAL
28526
28527 @param pWDICtx: pointer to the WLAN DAL context
28528 pEventData: pointer to the event information structure
28529 @see
28530 @return Result of the function call
28531*/
28532WDI_Status
28533WDI_ProcessIbssPeerInactivityInd
28534(
28535 WDI_ControlBlockType* pWDICtx,
28536 WDI_EventInfoType* pEventData
28537)
28538{
28539 WDI_LowLevelIndType wdiInd;
28540 tIbssPeerInactivityIndMsg halIbssIndMsg;
28541
28542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28543
28544 /*-------------------------------------------------------------------------
28545 Sanity check
28546 -------------------------------------------------------------------------*/
28547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28548 ( NULL == pEventData->pEventData ))
28549 {
28550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28551 "%s: Invalid parameters", __func__);
28552 WDI_ASSERT( 0 );
28553 return WDI_STATUS_E_FAILURE;
28554 }
28555
28556 /*-------------------------------------------------------------------------
28557 Extract indication and send it to UMAC
28558 -------------------------------------------------------------------------*/
28559 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28560 pEventData->pEventData,
28561 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28562
28563 /*Fill in the indication parameters*/
28564 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28565
28566 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28567 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28568
28569 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28570 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28571
28572 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28573 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28574 sizeof(tSirMacAddr));
28575
28576 /*Notify UMAC*/
28577 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28578
28579 return WDI_STATUS_SUCCESS;
28580
28581} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028582
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028583/**
28584*@brief WDI_RateUpdateInd will be called when the upper MAC
28585 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028586
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028587
28588 @param wdiRateUpdateIndParams:
28589
28590
28591 @see
28592 @return Result of the function call
28593*/
28594WDI_Status
28595WDI_RateUpdateInd
28596(
28597 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28598)
28599{
28600 WDI_EventInfoType wdiEventData;
28601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28602
28603 /*------------------------------------------------------------------------
28604 Sanity Check
28605 ------------------------------------------------------------------------*/
28606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28607 {
28608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28609 "WDI API call before module is initialized - Fail request");
28610
28611 return WDI_STATUS_E_NOT_ALLOWED;
28612 }
28613
28614 /*------------------------------------------------------------------------
28615 Fill in Event data and post to the Main FSM
28616 ------------------------------------------------------------------------*/
28617 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28618 wdiEventData.pEventData = wdiRateUpdateIndParams;
28619 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28620 wdiEventData.pCBfnc = NULL;
28621 wdiEventData.pUserData = NULL;
28622
28623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28624
28625}/* WDI_RateUpdateInd */
28626
28627/**
28628 @brief Process Rate Update Indication and post it to HAL
28629
28630 @param pWDICtx: pointer to the WLAN DAL context
28631 pEventData: pointer to the event information structure
28632
28633 @see
28634 @return Result of the function call
28635*/
28636WDI_Status
28637WDI_ProcessRateUpdateInd
28638(
28639 WDI_ControlBlockType* pWDICtx,
28640 WDI_EventInfoType* pEventData
28641)
28642{
28643 wpt_uint8* pSendBuffer = NULL;
28644 wpt_uint16 usDataOffset = 0;
28645 wpt_uint16 usSendSize = 0;
28646 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28647 tHalRateUpdateInd *pRateUpdateInd;
28648 WDI_Status wdiStatus;
28649
28650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28651
28652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28653 "%s", __func__);
28654
28655 /*-------------------------------------------------------------------------
28656 Sanity check
28657 -------------------------------------------------------------------------*/
28658 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28659 {
28660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28661 "%s: Invalid parameters", __func__);
28662 WDI_ASSERT(0);
28663 return WDI_STATUS_E_FAILURE;
28664 }
28665 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28666 /*-----------------------------------------------------------------------
28667 Get message buffer
28668 -----------------------------------------------------------------------*/
28669
28670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28671 WDI_RATE_UPDATE_IND,
28672 sizeof(tHalRateUpdateParams),
28673 &pSendBuffer, &usDataOffset, &usSendSize))||
28674 ( usSendSize < (usDataOffset +
28675 sizeof(tHalRateUpdateParams) )))
28676 {
28677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28678 "Unable to get send buffer in Rate Update Indication %p ",
28679 pEventData);
28680 WDI_ASSERT(0);
28681 return WDI_STATUS_E_FAILURE;
28682 }
28683
28684 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28685
28686 /* Copy the bssid */
28687 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28688 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28689
28690 /* Copy the tx flags */
28691 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28692 pwdiRateUpdateInd->ucastDataRateTxFlag;
28693 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28694 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28695 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28696 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28697 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28698 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28699
28700 /* Copy the tx rates */
28701 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28702 pwdiRateUpdateInd->ucastDataRate;
28703 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28704 pwdiRateUpdateInd->reliableMcastDataRate;
28705 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28706 pwdiRateUpdateInd->mcastDataRate24GHz;
28707 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28708 pwdiRateUpdateInd->mcastDataRate5GHz;
28709
28710 /*-------------------------------------------------------------------------
28711 Send Rate Update Indication to HAL
28712 -------------------------------------------------------------------------*/
28713 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28714 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28715
28716 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28717
28718 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28719 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28720
28721} /* WDI_ProcessRateUpdateInd */
28722
28723#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028724/**
28725 @brief Process stop batch indication from WDA
28726
28727 @param pWDICtx: pointer to the WLAN DAL context
28728 pEventData: pointer to the event information structure
28729
28730 @see
28731 @return Result of the function call
28732*/
28733WDI_Status
28734WDI_ProcessStopBatchScanInd
28735(
28736 WDI_ControlBlockType* pWDICtx,
28737 WDI_EventInfoType* pEventData
28738)
28739{
28740 wpt_uint8* pSendBuffer = NULL;
28741 wpt_uint16 usDataOffset = 0;
28742 wpt_uint16 usSendSize = 0;
28743 WDI_Status wdiStatus;
28744 tHalBatchScanStopIndParam *pHalInd = NULL;
28745 WDI_StopBatchScanIndType *pWdiInd = NULL;
28746
28747
28748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28749
28750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28751 "%s", __func__);
28752
28753 /*-------------------------------------------------------------------------
28754 Sanity check
28755 -------------------------------------------------------------------------*/
28756
28757 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28758 {
28759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28760 "%s: Invalid parameters", __func__);
28761 WDI_ASSERT(0);
28762 return WDI_STATUS_E_FAILURE;
28763 }
28764 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28765 /*-----------------------------------------------------------------------
28766 Get message buffer
28767 -----------------------------------------------------------------------*/
28768
28769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28770 WDI_STOP_BATCH_SCAN_IND,
28771 sizeof(tHalBatchScanStopIndParam),
28772 &pSendBuffer, &usDataOffset, &usSendSize))||
28773 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28774 {
28775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28776 "Unable to get send buffer in stop batch scan ind %p ",
28777 pEventData);
28778 WDI_ASSERT(0);
28779 return WDI_STATUS_E_FAILURE;
28780 }
28781
28782 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28783 pHalInd->param = pWdiInd->param;
28784
28785 pWDICtx->pReqStatusUserData = NULL;
28786 pWDICtx->pfncRspCB = NULL;
28787 /*-------------------------------------------------------------------------
28788 Send Stop batch scan indication to HAL
28789 -------------------------------------------------------------------------*/
28790 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28791 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28792}
28793
28794/**
28795 @brief This API is called to trigger batch scan results from FW
28796
28797 @param pWDICtx: pointer to the WLAN DAL context
28798 pEventData: pointer to the event information structure
28799
28800 @see
28801 @return Result of the function call
28802*/
28803WDI_Status
28804WDI_ProcessTriggerBatchScanResultInd
28805(
28806 WDI_ControlBlockType* pWDICtx,
28807 WDI_EventInfoType* pEventData
28808)
28809{
28810 WDI_Status wdiStatus;
28811 wpt_uint8* pSendBuffer = NULL;
28812 wpt_uint16 usDataOffset = 0;
28813 wpt_uint16 usSendSize = 0;
28814 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28815 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28816
28817
28818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28819
28820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28821 "%s", __func__);
28822
28823 /*-------------------------------------------------------------------------
28824 Sanity check
28825 -------------------------------------------------------------------------*/
28826
28827 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28828 {
28829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28830 "%s: Invalid parameters", __func__);
28831 WDI_ASSERT(0);
28832 return WDI_STATUS_E_FAILURE;
28833 }
28834 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28835 /*-----------------------------------------------------------------------
28836 Get message buffer
28837 -----------------------------------------------------------------------*/
28838
28839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28840 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28841 sizeof(tHalBatchScanTriggerResultParam),
28842 &pSendBuffer, &usDataOffset, &usSendSize))||
28843 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28844 {
28845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28846 "Unable to get send buffer in stop batch scan ind %p ",
28847 pEventData);
28848 WDI_ASSERT(0);
28849 return WDI_STATUS_E_FAILURE;
28850 }
28851
28852 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28853 pHalInd->param = pWdiInd->param;
28854
28855 pWDICtx->pReqStatusUserData = NULL;
28856 pWDICtx->pfncRspCB = NULL;
28857 /*-------------------------------------------------------------------------
28858 Send trigger batch scan result indication to HAL
28859 -------------------------------------------------------------------------*/
28860 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28861 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28862}
28863
28864
28865/**
28866 @brief Process set batch scan response from FW
28867
28868 @param pWDICtx: pointer to the WLAN DAL context
28869 pEventData: pointer to the event information structure
28870
28871 @see
28872 @return Result of the function call
28873*/
28874WDI_Status
28875WDI_ProcessSetBatchScanRsp
28876(
28877 WDI_ControlBlockType* pWDICtx,
28878 WDI_EventInfoType* pEventData
28879)
28880{
28881 WDI_SetBatchScanCb wdiSetBatchScanCb;
28882 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28883
28884 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28886
28887 /*sanity check*/
28888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28889 ( NULL == pEventData->pEventData))
28890 {
28891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28892 "%s: Invalid parameters", __func__);
28893 WDI_ASSERT(0);
28894 return WDI_STATUS_E_FAILURE;
28895 }
28896
28897 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28898 if ( NULL == wdiSetBatchScanCb)
28899 {
28900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28901 "%s: call back function is NULL", __func__);
28902 WDI_ASSERT(0);
28903 return WDI_STATUS_E_FAILURE;
28904 }
28905
28906 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28907
28908 if (NULL == pSetBatchScanRsp)
28909 {
28910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028911 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028912 pWDICtx, pEventData, pEventData->pEventData);
28913 WDI_ASSERT(0);
28914 return WDI_STATUS_E_FAILURE;
28915 }
28916
28917 /*extract response and send it to UMAC*/
28918 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28919
28920 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28921
28922 /*Notify UMAC*/
28923 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28924
28925 wpalMemoryFree(pSetBatchScanRsp);
28926
28927 return WDI_STATUS_SUCCESS;
28928}/*WDI_ProcessSetBatchScanRsp*/
28929
28930/**
28931 @brief Process batch scan result indication from FW
28932
28933 @param pWDICtx: pointer to the WLAN DAL context
28934 pEventData: pointer to the event information structure
28935
28936 @see
28937 @return Result of the function call
28938*/
28939WDI_Status
28940WDI_ProcessBatchScanResultInd
28941(
28942 WDI_ControlBlockType* pWDICtx,
28943 WDI_EventInfoType* pEventData
28944)
28945{
28946 void *pBatchScanResultInd;
28947 WDI_LowLevelIndType wdiInd;
28948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28949
28950 /*sanity check*/
28951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28952 ( NULL == pEventData->pEventData))
28953 {
28954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28955 "%s: Invalid parameters", __func__);
28956 WDI_ASSERT(0);
28957 return WDI_STATUS_E_FAILURE;
28958 }
28959
28960 /*extract response and send it to UMAC*/
28961 pBatchScanResultInd = (void *)pEventData->pEventData;
28962
28963 /*Fill in the indication parameters*/
28964 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28965
28966 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28967
28968 /*Notify UMAC*/
28969 if (pWDICtx->wdiLowLevelIndCB)
28970 {
28971 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28972 }
28973 else
28974 {
28975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28976 "%s: WDILowLevelIndCb is null", __func__);
28977 WDI_ASSERT(0);
28978 return WDI_STATUS_E_FAILURE;
28979 }
28980
28981 return WDI_STATUS_SUCCESS;
28982} /*End of WDI_ProcessBatchScanResultInd*/
28983
28984/**
28985 @brief WDI_ProcessSetBatchScanReq -
28986 Set batch scan request to FW
28987
28988 @param pWDICtx : wdi context
28989 pEventData : indication data
28990
28991 @see
28992 @return none
28993*/
28994WDI_Status WDI_ProcessSetBatchScanReq
28995(
28996 WDI_ControlBlockType* pWDICtx,
28997 WDI_EventInfoType* pEventData
28998)
28999{
29000 WDI_SetBatchScanReqType *pWdiReq;
29001 WDI_Status wdiStatus;
29002 wpt_uint8* pSendBuffer = NULL;
29003 wpt_uint16 usDataOffset = 0;
29004 wpt_uint16 usSendSize = 0;
29005 tHalBatchScanSetParams *pHalReq;
29006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29007
29008 /*sanity check*/
29009 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29010 {
29011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29012 "%s: Invalid parameters in set batch scan request", __func__);
29013 WDI_ASSERT(0);
29014 return WDI_STATUS_E_FAILURE;
29015 }
29016
29017
29018 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29019
29020
29021 /*get message buffer*/
29022 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29023 WDI_SET_BATCH_SCAN_REQ,
29024 sizeof(tHalBatchScanSetParams),
29025 &pSendBuffer, &usDataOffset, &usSendSize))||
29026 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29027 {
29028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29029 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29030 WDI_ASSERT(0);
29031 return WDI_STATUS_E_FAILURE;
29032 }
29033
29034 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29035
29036 pHalReq->rtt = pWdiReq->rtt;
29037 pHalReq->rfBand = pWdiReq->rfBand;
29038 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29039 pHalReq->scanInterval = pWdiReq->scanFrequency;
29040 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29041
29042 /*send set batch scan request to fw*/
29043 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29044 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29045
29046 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29047 usSendSize, pWDICtx->pfncRspCB,
29048 pWDICtx->pReqStatusUserData,
29049 WDI_SET_BATCH_SCAN_RESP);
29050
29051 return wdiStatus;
29052}
29053
29054/**
29055 @brief WDI_SetBatchScanReq
29056 This API is called to set batch scan request in FW
29057
29058 @param pBatchScanReqParam : pointer to set batch scan re param
29059 usrData : Client context
29060 setBatchScanRspCb : set batch scan resp callback
29061 @see
29062 @return SUCCESS or FAIL
29063*/
29064WDI_Status WDI_SetBatchScanReq
29065(
29066 void *pBatchScanReqParam,
29067 void *usrData,
29068 WDI_SetBatchScanCb setBatchScanRspCb
29069)
29070{
29071 WDI_EventInfoType wdiEventData;
29072
29073 /*sanity check*/
29074 if (eWLAN_PAL_FALSE == gWDIInitialized)
29075 {
29076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29077 "WDI API call before module is initialized - Fail request");
29078
29079 return WDI_STATUS_E_NOT_ALLOWED;
29080 }
29081
29082 /* fill in event data and post to the main FSM */
29083 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29084 wdiEventData.pEventData = pBatchScanReqParam;
29085 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29086 wdiEventData.pCBfnc = setBatchScanRspCb;
29087 wdiEventData.pUserData = usrData;
29088
29089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29090}
29091
29092/**
29093 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29094
29095 @param None
29096
29097 @see
29098
29099 @return Status of the request
29100*/
29101WDI_Status
29102WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29103{
29104 WDI_EventInfoType wdiEventData;
29105
29106 /*-------------------------------------------------------------------------
29107 Sanity Check
29108 ------------------------------------------------------------------------*/
29109 if (eWLAN_PAL_FALSE == gWDIInitialized)
29110 {
29111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29112 "WDI API call before module is initialized - Fail request!");
29113
29114 return WDI_STATUS_E_NOT_ALLOWED;
29115 }
29116
29117 /*-------------------------------------------------------------------------
29118 Fill in Event data and post to the Main FSM
29119 ------------------------------------------------------------------------*/
29120 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29121 wdiEventData.pEventData = pWdiReq;
29122 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29123 wdiEventData.pCBfnc = NULL;
29124 wdiEventData.pUserData = NULL;
29125
29126 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29127}
29128
29129/**
29130 @brief WDI_TriggerBatchScanResultInd
29131 This API is called to pull batch scan result from FW
29132
29133 @param pWdiReq : pointer to get batch scan ind param
29134 @see
29135 @return SUCCESS or FAIL
29136*/
29137WDI_Status WDI_TriggerBatchScanResultInd
29138(
29139 WDI_TriggerBatchScanResultIndType *pWdiReq
29140)
29141{
29142 WDI_EventInfoType wdiEventData;
29143 /*-------------------------------------------------------------------------
29144 Sanity Check
29145 ------------------------------------------------------------------------*/
29146 if (eWLAN_PAL_FALSE == gWDIInitialized)
29147 {
29148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29149 "WDI API call before module is initialized - Fail request!");
29150
29151 return WDI_STATUS_E_NOT_ALLOWED;
29152 }
29153
29154 /*-------------------------------------------------------------------------
29155 Fill in Event data and post to the Main FSM
29156 ------------------------------------------------------------------------*/
29157 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29158 wdiEventData.pEventData = pWdiReq;
29159 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29160 wdiEventData.pCBfnc = NULL;
29161 wdiEventData.pUserData = NULL;
29162
29163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29164}
29165
29166#endif /*FEATURE_WLAN_BATCH_SCAN*/