blob: 5bebc565f93acd8e9110082e8c77edde7070fc20 [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,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014279 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014280
14281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014282 "Process keep alive req time period %d",
14283 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014284
14285 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014286 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014287
14288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14289 "Sending keep alive req to HAL");
14290
14291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14295 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014296
14297fail:
14298 // Release the message buffer so we don't leak
14299 wpalMemoryFree(pSendBuffer);
14300
14301failRequest:
14302 //WDA should have failure check to avoid the memory leak
14303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014304}/*WDI_ProcessKeepAliveReq*/
14305
14306
14307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014308 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014310
14311 @param pWDICtx: pointer to the WLAN DAL context
14312 pEventData: pointer to the event information structure
14313
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 @see
14315 @return Result of the function call
14316*/
14317WDI_Status
14318WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014319(
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 WDI_ControlBlockType* pWDICtx,
14321 WDI_EventInfoType* pEventData
14322)
14323{
14324 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14325 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 wpt_uint16 usDataOffset = 0;
14328 wpt_uint16 usSendSize = 0;
14329 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014330 wpt_uint8 ucCurrentBSSSesIdx = 0;
14331 WDI_BSSSessionType* pBSSSes = NULL;
14332
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14334
14335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 -------------------------------------------------------------------------*/
14338 if (( NULL == pEventData ) ||
14339 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14340 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14341 {
14342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014344 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014345 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 }
14347
14348 /*-----------------------------------------------------------------------
14349 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014353 sizeof(wowlAddBcPtrnReq),
14354 &pSendBuffer, &usDataOffset, &usSendSize))||
14355 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14356 {
14357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014358 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14360 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014361 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 }
14363
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014364 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14365 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14366 &pBSSSes);
14367 if ( NULL == pBSSSes )
14368 {
14369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014370 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014371 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014372 }
14373
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14382
14383 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14384 {
14385 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14386 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14388 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14389 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14390 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14391 }
14392 else
14393 {
14394 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14395 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14396 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14397 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14398 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14399 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14400
14401 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14402 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14403 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14404 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14405 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14406 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14407 }
14408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014409 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14410
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 wpalMemoryCopy( pSendBuffer+usDataOffset,
14412 &wowlAddBcPtrnReq,
14413 sizeof(wowlAddBcPtrnReq));
14414
14415 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014417
14418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14422 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014423fail:
14424 // Release the message buffer so we don't leak
14425 wpalMemoryFree(pSendBuffer);
14426
14427failRequest:
14428 //WDA should have failure check to avoid the memory leak
14429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014430}/*WDI_ProcessWowlAddBcPtrnReq*/
14431
14432/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014435
14436 @param pWDICtx: pointer to the WLAN DAL context
14437 pEventData: pointer to the event information structure
14438
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 @see
14440 @return Result of the function call
14441*/
14442WDI_Status
14443WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014444(
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 WDI_ControlBlockType* pWDICtx,
14446 WDI_EventInfoType* pEventData
14447)
14448{
14449 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14450 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 wpt_uint16 usDataOffset = 0;
14453 wpt_uint16 usSendSize = 0;
14454 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014455 wpt_uint8 ucCurrentBSSSesIdx = 0;
14456 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14458
14459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 -------------------------------------------------------------------------*/
14462 if (( NULL == pEventData ) ||
14463 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14464 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14465 {
14466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014469 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 }
14471
14472 /*-----------------------------------------------------------------------
14473 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 sizeof(wowlDelBcPtrnReq),
14478 &pSendBuffer, &usDataOffset, &usSendSize))||
14479 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14480 {
14481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014482 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14484 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014485 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 }
14487
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014488 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14489 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14490 &pBSSSes);
14491 if ( NULL == pBSSSes )
14492 {
14493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014494 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014495 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014496 }
14497
Jeff Johnsone7245742012-09-05 17:12:55 -070014498 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014500
14501 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14502
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 wpalMemoryCopy( pSendBuffer+usDataOffset,
14504 &wowlDelBcPtrnReq,
14505 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014506
14507 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014508 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014509
14510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14514 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014515
14516fail:
14517 // Release the message buffer so we don't leak
14518 wpalMemoryFree(pSendBuffer);
14519
14520failRequest:
14521 //WDA should have failure check to avoid the memory leak
14522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014523}/*WDI_ProcessWowlDelBcPtrnReq*/
14524
14525/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014528
14529 @param pWDICtx: pointer to the WLAN DAL context
14530 pEventData: pointer to the event information structure
14531
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 @see
14533 @return Result of the function call
14534*/
14535WDI_Status
14536WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014537(
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 WDI_ControlBlockType* pWDICtx,
14539 WDI_EventInfoType* pEventData
14540)
14541{
14542 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14543 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014544 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 wpt_uint16 usDataOffset = 0;
14546 wpt_uint16 usSendSize = 0;
14547 tHalWowlEnterParams wowlEnterReq;
14548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14549
14550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 -------------------------------------------------------------------------*/
14553 if (( NULL == pEventData ) ||
14554 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14555 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14556 {
14557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 }
14562
14563 /*-----------------------------------------------------------------------
14564 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 sizeof(wowlEnterReq),
14569 &pSendBuffer, &usDataOffset, &usSendSize))||
14570 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14571 {
14572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014573 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 }
14578
Kumar Anand21a26022013-07-22 14:35:34 -070014579 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14580
Jeff Johnsone7245742012-09-05 17:12:55 -070014581 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014583 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14597
14598#ifdef WLAN_WAKEUP_EVENTS
14599 wowlEnterReq.ucWoWEAPIDRequestEnable =
14600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14601
14602 wowlEnterReq.ucWoWEAPOL4WayEnable =
14603 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14604
14605 wowlEnterReq.ucWowNetScanOffloadMatch =
14606 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14607
14608 wowlEnterReq.ucWowGTKRekeyError =
14609 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14610
14611 wowlEnterReq.ucWoWBSSConnLoss =
14612 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14613#endif // WLAN_WAKEUP_EVENTS
14614
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014615 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14616
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14618 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14619 sizeof(tSirMacAddr));
14620
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 wpalMemoryCopy( pSendBuffer+usDataOffset,
14622 &wowlEnterReq,
14623 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014624
14625 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014627
14628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14632 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014633}/*WDI_ProcessWowlEnterReq*/
14634
14635/**
14636 @brief Process Wowl exit Request function (called when Main FSM
14637 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014638
14639 @param pWDICtx: pointer to the WLAN DAL context
14640 pEventData: pointer to the event information structure
14641
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 @see
14643 @return Result of the function call
14644*/
14645WDI_Status
14646WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014647(
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 WDI_ControlBlockType* pWDICtx,
14649 WDI_EventInfoType* pEventData
14650)
14651{
14652 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014653 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014654 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 wpt_uint16 usDataOffset = 0;
14656 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014657 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14659
14660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 -------------------------------------------------------------------------*/
14663 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014664 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
14673 /*-----------------------------------------------------------------------
14674 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014678 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014680 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 {
14682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014683 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 pEventData, wdiWowlExitCb);
14685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 }
14688
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014689 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14690
14691 wpalMemoryCopy( pSendBuffer+usDataOffset,
14692 &wowlExitparams,
14693 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14698 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014699}/*WDI_ProcessWowlExitReq*/
14700
14701/**
14702 @brief Process Configure Apps Cpu Wakeup State Request function
14703 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014704
14705 @param pWDICtx: pointer to the WLAN DAL context
14706 pEventData: pointer to the event information structure
14707
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 @see
14709 @return Result of the function call
14710*/
14711WDI_Status
14712WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014713(
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 WDI_ControlBlockType* pWDICtx,
14715 WDI_EventInfoType* pEventData
14716)
14717{
14718 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14719 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 wpt_uint16 usDataOffset = 0;
14722 wpt_uint16 usSendSize = 0;
14723 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14725
14726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 -------------------------------------------------------------------------*/
14729 if (( NULL == pEventData ) ||
14730 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14731 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14732 {
14733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 }
14738
14739 /*-----------------------------------------------------------------------
14740 Get message buffer
14741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 sizeof(halCfgAppsCpuWakeupStateReqParams),
14744 &pSendBuffer, &usDataOffset, &usSendSize))||
14745 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14746 {
14747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014748 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 }
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14756
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 wpalMemoryCopy( pSendBuffer+usDataOffset,
14758 &halCfgAppsCpuWakeupStateReqParams,
14759 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014760
14761 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014763
14764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14768 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14769 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014770}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14771
14772#ifdef WLAN_FEATURE_VOWIFI_11R
14773/**
14774 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14775 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014776
14777 @param pWDICtx: pointer to the WLAN DAL context
14778 pEventData: pointer to the event information structure
14779
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 @see
14781 @return Result of the function call
14782*/
14783WDI_Status
14784WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014785(
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 WDI_ControlBlockType* pWDICtx,
14787 WDI_EventInfoType* pEventData
14788)
14789{
14790 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14791 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 wpt_uint16 usDataOffset = 0;
14796 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 wpt_macAddr macBSSID;
14799 tAggrAddTsReq halAggrAddTsReq;
14800 int i;
14801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14802
14803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 -------------------------------------------------------------------------*/
14806 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14807 ( NULL == pEventData->pCBfnc ))
14808 {
14809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014813 }
14814 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14815 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14816 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14817 /*-------------------------------------------------------------------------
14818 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014819 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014820 -------------------------------------------------------------------------*/
14821 wpalMutexAcquire(&pWDICtx->wptMutex);
14822
14823 /*------------------------------------------------------------------------
14824 Find the BSS for which the request is made and identify WDI session
14825 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14827 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 &macBSSID))
14829 {
14830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014831 "This station does not exist in the WDI Station Table %d",
14832 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 }
14836
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14838 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14841 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14842 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014843
14844 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014847
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 /*------------------------------------------------------------------------
14849 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 ------------------------------------------------------------------------*/
14852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14853 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14855 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14856 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014857
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 }
14862
14863 wpalMutexRelease(&pWDICtx->wptMutex);
14864 /*-----------------------------------------------------------------------
14865 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 sizeof(tAggrAddTsParams),
14870 &pSendBuffer, &usDataOffset, &usSendSize))||
14871 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14872 {
14873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014874 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 }
14879
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14884
14885 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14886 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14893 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14896 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14899 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14902 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14905 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14908 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14911 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14914 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014919
14920
14921 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14951 }
14952
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 wpalMemoryCopy( pSendBuffer+usDataOffset,
14954 &halAggrAddTsReq,
14955 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014956
14957 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014959
14960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014966}/*WDI_ProcessAggrAddTSpecReq*/
14967#endif /* WLAN_FEATURE_VOWIFI_11R */
14968
14969/**
14970 @brief Process Shutdown Request function (called when Main FSM
14971 allows it)
14972
14973 @param pWDICtx: pointer to the WLAN DAL context
14974 pEventData: pointer to the event information structure
14975
14976 @see
14977 @return Result of the function call
14978*/
14979WDI_Status
14980WDI_ProcessShutdownReq
14981(
14982 WDI_ControlBlockType* pWDICtx,
14983 WDI_EventInfoType* pEventData
14984 )
14985{
14986 wpt_status wptStatus;
14987
14988
14989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14990
14991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 -------------------------------------------------------------------------*/
14994 if ( NULL == pEventData )
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 WDI_ASSERT(0);
14999 return WDI_STATUS_E_FAILURE;
15000 }
15001
15002 wpalMutexAcquire(&pWDICtx->wptMutex);
15003
15004
15005 gWDIInitialized = eWLAN_PAL_FALSE;
15006 /*! TO DO: stop the data services */
15007 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15008 {
15009 /*Stop the STA Table !UT- check this logic again
15010 It is safer to do it here than on the response - because a stop is imminent*/
15011 WDI_STATableStop(pWDICtx);
15012
15013 /* Stop Transport Driver, DXE */
15014 WDTS_Stop(pWDICtx);
15015 }
15016
15017 /*Clear all pending request*/
15018 WDI_ClearPendingRequests(pWDICtx);
15019 /* Close Data transport*/
15020 /* FTM mode does not open Data Path */
15021 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15022 {
15023 WDTS_Close(pWDICtx);
15024 }
15025 /*Close the STA Table !UT- check this logic again*/
15026 WDI_STATableClose(pWDICtx);
15027 /*close the PAL */
15028 wptStatus = wpalClose(pWDICtx->pPALContext);
15029 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15030 {
15031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15032 "Failed to wpal Close %d", wptStatus);
15033 WDI_ASSERT(0);
15034 }
15035
15036 /*Transition back to init state*/
15037 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15038
15039 wpalMutexRelease(&pWDICtx->wptMutex);
15040
15041 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043
15044
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015046}/*WDI_ProcessShutdownReq*/
15047
15048/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015050========================================================================*/
15051
15052/**
15053 @brief Process Start Response function (called when a response
15054 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015055
15056 @param pWDICtx: pointer to the WLAN DAL context
15057 pEventData: pointer to the event information structure
15058
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 @see
15060 @return Result of the function call
15061*/
15062WDI_Status
15063WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015064(
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 WDI_ControlBlockType* pWDICtx,
15066 WDI_EventInfoType* pEventData
15067)
15068{
15069 WDI_StartRspParamsType wdiRspParams;
15070 WDI_StartRspCb wdiStartRspCb = NULL;
15071
15072 tHalMacStartRspParams* startRspParams;
15073
15074#ifndef HAL_SELF_STA_PER_BSS
15075 WDI_AddStaParams wdiAddSTAParam = {0};
15076#endif
15077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15078
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 -------------------------------------------------------------------------*/
15083 if (( NULL == pEventData ) ||
15084 ( NULL == pEventData->pEventData) ||
15085 ( NULL == wdiStartRspCb ))
15086 {
15087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 }
15092
15093 /*-------------------------------------------------------------------------
15094 Extract response and send it to UMAC
15095 -------------------------------------------------------------------------*/
15096 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15097 {
15098 // not enough data was received
15099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson27c67c82013-11-22 16:44:20 -080015100 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 }
15105
15106 /*-------------------------------------------------------------------------
15107 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015108 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 -------------------------------------------------------------------------*/
15110 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15111
15112 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15113 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15114 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15115 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15116 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15117 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15118 wdiRspParams.wlanReportedVersion.major =
15119 startRspParams->wcnssWlanVersion.major;
15120 wdiRspParams.wlanReportedVersion.minor =
15121 startRspParams->wcnssWlanVersion.minor;
15122 wdiRspParams.wlanReportedVersion.version =
15123 startRspParams->wcnssWlanVersion.version;
15124 wdiRspParams.wlanReportedVersion.revision =
15125 startRspParams->wcnssWlanVersion.revision;
15126 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15127 startRspParams->wcnssCrmVersionString,
15128 sizeof(wdiRspParams.wcnssSoftwareVersion));
15129 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15130 startRspParams->wcnssWlanVersionString,
15131 sizeof(wdiRspParams.wcnssHardwareVersion));
15132 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15133
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015134 /*Save the HAL Version*/
15135 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15136
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 wpalMutexAcquire(&pWDICtx->wptMutex);
15138 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15139 {
15140 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15141
15142 /*Cache the start response for further use*/
15143 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 sizeof(pWDICtx->wdiCachedStartRspParams));
15146
15147 }
15148 else
15149 {
15150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15151 "Failed to start device with status %s(%d)",
15152 WDI_getHALStatusMsgString(startRspParams->status),
15153 startRspParams->status);
15154
15155 /*Set the expected state transition to stopped - because the start has
15156 failed*/
15157 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15158
15159 wpalMutexRelease(&pWDICtx->wptMutex);
15160
15161 /*Notify UMAC*/
15162 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015163
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15165
15166 /*Although the response is an error - it was processed by our function
15167 so as far as the caller is concerned this is a succesful reponse processing*/
15168 return WDI_STATUS_SUCCESS;
15169 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015170
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 wpalMutexRelease(&pWDICtx->wptMutex);
15172
15173 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15174 {
15175 /* FTM mode does not need to execute below */
15176 /* Notify UMAC */
15177 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15178 return WDI_STATUS_SUCCESS;
15179 }
15180
15181 /* START the Data transport */
15182 WDTS_startTransport(pWDICtx);
15183
15184 /*Start the STA Table !- check this logic again*/
15185 WDI_STATableStart(pWDICtx);
15186
15187#ifndef HAL_SELF_STA_PER_BSS
15188 /* Store the Self STA Index */
15189 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15190
15191 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15192 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15193 WDI_MAC_ADDR_LEN);
15194
15195 /* At this point add the self-STA */
15196
15197 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15198 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15199 /*! TO DO: wdiAddSTAParam.dpuSig */
15200 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15201 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15202 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15203
15204 //all DPU indices are the same for self STA
15205 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15206 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015207 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15209 WDI_MAC_ADDR_LEN);
15210 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15211 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15212
15213 /* Note: Since we don't get an explicit config STA request for self STA, we
15214 add the self STA upon receiving the Start response message. But the
15215 self STA entry in the table is deleted when WDI gets an explicit delete STA
15216 request */
15217 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15218#endif
15219
15220 /*Notify UMAC*/
15221 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15222
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015224}/*WDI_ProcessStartRsp*/
15225
15226
15227/**
15228 @brief Process Stop Response function (called when a response
15229 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015230
15231 @param pWDICtx: pointer to the WLAN DAL context
15232 pEventData: pointer to the event information structure
15233
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 @see
15235 @return Result of the function call
15236*/
15237WDI_Status
15238WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015239(
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 WDI_ControlBlockType* pWDICtx,
15241 WDI_EventInfoType* pEventData
15242)
15243{
15244 WDI_Status wdiStatus;
15245 WDI_StopRspCb wdiStopRspCb = NULL;
15246
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15249
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 -------------------------------------------------------------------------*/
15254 if (( NULL == pEventData ) ||
15255 ( NULL == pEventData->pEventData) ||
15256 ( NULL == wdiStopRspCb ))
15257 {
15258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015262 }
15263
15264 /*-------------------------------------------------------------------------
15265 Extract response and send it to UMAC
15266 -------------------------------------------------------------------------*/
15267 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15268 {
15269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015270 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 pEventData->uEventDataSize);
15272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 }
15275
15276 /*-------------------------------------------------------------------------
15277 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15281 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 sizeof(halMacStopRspMsg.stopRspParams));
15283
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015285
15286 wpalMutexAcquire(&pWDICtx->wptMutex);
15287
15288 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 --------------------------------------------------------------------------*/
15291 if ( WDI_STATUS_SUCCESS != wdiStatus )
15292 {
15293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15294 "Failed to stop the device with status %s (%d)",
15295 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15296 halMacStopRspMsg.stopRspParams.status);
15297
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15299
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015303
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15305
15306 /*Transition now as WDI may get preempted imediately after it sends
15307 up the Stop Response and it will not get to process the state transition
15308 from Main Rsp function*/
15309 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15310 wpalMutexRelease(&pWDICtx->wptMutex);
15311
15312 /*! TO DO: - STOP the Data transport */
15313
15314 /*Notify UMAC*/
15315 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15316
Jeff Johnsone7245742012-09-05 17:12:55 -070015317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015318}/*WDI_ProcessStopRsp*/
15319
15320/**
15321 @brief Process Close Rsp function (called when a response
15322 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015323
15324 @param pWDICtx: pointer to the WLAN DAL context
15325 pEventData: pointer to the event information structure
15326
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 @see
15328 @return Result of the function call
15329*/
15330WDI_Status
15331WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015332(
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 WDI_ControlBlockType* pWDICtx,
15334 WDI_EventInfoType* pEventData
15335)
15336{
15337 /*There is no close response comming from HAL - function just kept for
15338 simmetry */
15339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015341}/*WDI_ProcessCloseRsp*/
15342
15343
15344/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015346============================================================================*/
15347
15348/**
15349 @brief Process Init Scan Rsp function (called when a response
15350 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015351
15352 @param pWDICtx: pointer to the WLAN DAL context
15353 pEventData: pointer to the event information structure
15354
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 @see
15356 @return Result of the function call
15357*/
15358WDI_Status
15359WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015360(
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 WDI_ControlBlockType* pWDICtx,
15362 WDI_EventInfoType* pEventData
15363)
15364{
15365 WDI_Status wdiStatus;
15366 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015368 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15370
15371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 -------------------------------------------------------------------------*/
15374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15375 ( NULL == pEventData->pEventData))
15376 {
15377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 }
15382
15383 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15384 if( NULL == wdiInitScanRspCb)
15385 {
15386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015387 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 }
15391
15392 /*-------------------------------------------------------------------------
15393 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15397 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 sizeof(halInitScanRspMsg.initScanRspParams));
15399
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015401
15402 if ( pWDICtx->bInBmps )
15403 {
15404 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015405 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15406 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080015408 "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 -080015409 WDI_ASSERT(0);
15410 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 }
15412
15413 /*Notify UMAC*/
15414 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15415
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015417}/*WDI_ProcessInitScanRsp*/
15418
15419
15420/**
15421 @brief Process Start Scan Rsp function (called when a response
15422 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015423
15424 @param pWDICtx: pointer to the WLAN DAL context
15425 pEventData: pointer to the event information structure
15426
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 @see
15428 @return Result of the function call
15429*/
15430WDI_Status
15431WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015432(
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 WDI_ControlBlockType* pWDICtx,
15434 WDI_EventInfoType* pEventData
15435)
15436{
15437 WDI_StartScanRspParamsType wdiStartScanParams;
15438 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015439
15440 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15442
15443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 -------------------------------------------------------------------------*/
15446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15447 ( NULL == pEventData->pEventData))
15448 {
15449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 }
15454
15455 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15456 if( NULL == wdiStartScanRspCb)
15457 {
15458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015459 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 }
15463
15464 /*-------------------------------------------------------------------------
15465 Extract response and send it to UMAC
15466 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15468 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 sizeof(halStartScanRspMsg.startScanRspParams));
15470
15471 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15472 halStartScanRspMsg.startScanRspParams.status);
15473#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015475 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015476 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 halStartScanRspMsg.startScanRspParams.startTSF,
15478 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015479#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015480
15481 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15482 {
15483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15484 "Start scan failed with status %s (%d)",
15485 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15486 halStartScanRspMsg.startScanRspParams.status);
15487 /* send the status to UMAC, don't return from here*/
15488 }
15489
15490 /*Notify UMAC*/
15491 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15492
Jeff Johnsone7245742012-09-05 17:12:55 -070015493 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015494
15495}/*WDI_ProcessStartScanRsp*/
15496
15497
15498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015501
15502 @param pWDICtx: pointer to the WLAN DAL context
15503 pEventData: pointer to the event information structure
15504
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 @see
15506 @return Result of the function call
15507*/
15508WDI_Status
15509WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015510(
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 WDI_ControlBlockType* pWDICtx,
15512 WDI_EventInfoType* pEventData
15513)
15514{
15515 WDI_Status wdiStatus;
15516 tHalEndScanRspMsg halEndScanRspMsg;
15517 WDI_EndScanRspCb wdiEndScanRspCb;
15518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15519
15520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015522 -------------------------------------------------------------------------*/
15523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15524 ( NULL == pEventData->pEventData))
15525 {
15526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 }
15531
15532 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15533
15534 /*-------------------------------------------------------------------------
15535 Extract response and send it to UMAC
15536 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15538 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 sizeof(halEndScanRspMsg.endScanRspParams));
15540
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542
15543 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15544 {
15545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15546 "End Scan failed with status %s (%d )",
15547 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15548 halEndScanRspMsg.endScanRspParams.status);
15549 /* send the status to UMAC, don't return from here*/
15550 }
15551
15552 /*Notify UMAC*/
15553 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15554
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015556}/*WDI_ProcessEndScanRsp*/
15557
15558
15559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015562
15563 @param pWDICtx: pointer to the WLAN DAL context
15564 pEventData: pointer to the event information structure
15565
Jeff Johnson295189b2012-06-20 16:38:30 -070015566 @see
15567 @return Result of the function call
15568*/
15569WDI_Status
15570WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015571(
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 WDI_ControlBlockType* pWDICtx,
15573 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015574)
Jeff Johnson295189b2012-06-20 16:38:30 -070015575{
15576 WDI_Status wdiStatus;
15577 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015578
15579 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15581
15582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 -------------------------------------------------------------------------*/
15585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15586 ( NULL == pEventData->pEventData))
15587 {
15588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 }
15593
15594 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15595
15596 /*-------------------------------------------------------------------------
15597 Extract response and send it to UMAC
15598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15600 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15602
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015604
15605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 halFinishScanRspMsg.finishScanRspParams.status);
15608
15609 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15610 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15611 {
15612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15613 "Finish Scan failed with status %s (%d)",
15614 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15615 halFinishScanRspMsg.finishScanRspParams.status);
15616 /* send the status to UMAC, don't return from here*/
15617 }
15618
15619 /*Notify UMAC*/
15620 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15621
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015623}/*WDI_ProcessFinishScanRsp*/
15624
15625/**
15626 @brief Process Join Response function (called when a response
15627 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015628
15629 @param pWDICtx: pointer to the WLAN DAL context
15630 pEventData: pointer to the event information structure
15631
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 @see
15633 @return Result of the function call
15634*/
15635WDI_Status
15636WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015637(
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 WDI_ControlBlockType* pWDICtx,
15639 WDI_EventInfoType* pEventData
15640)
15641{
15642 WDI_Status wdiStatus;
15643 WDI_JoinRspCb wdiJoinRspCb;
15644 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645
15646 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15648
15649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 -------------------------------------------------------------------------*/
15652 if (( NULL == pWDICtx ) ||
15653 ( NULL == pWDICtx->pfncRspCB ) ||
15654 ( NULL == pEventData ) ||
15655 ( NULL == pEventData->pEventData))
15656 {
15657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 }
15662
15663 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15664
15665 /*-------------------------------------------------------------------------
15666 Extract response and send it to UMAC
15667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15669 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 sizeof(halJoinRspMsg.joinRspParams));
15671
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015673
15674 wpalMutexAcquire(&pWDICtx->wptMutex);
15675
15676 /*-----------------------------------------------------------------------
15677 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15682 {
15683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15685 "association no longer in progress %d - mysterious HAL response",
15686 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015687
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015690 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 }
15692
15693 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15694
15695 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015696 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 -----------------------------------------------------------------------*/
15698 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15699 {
15700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15701 "Join only allowed in Joining state - failure state is %d "
15702 "strange HAL response", pBSSSes->wdiAssocState);
15703
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15705
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 }
15709
15710
15711 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015712 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015713 -----------------------------------------------------------------------*/
15714 if ( WDI_STATUS_SUCCESS != wdiStatus )
15715 {
15716 /*Association was failed by HAL - remove session*/
15717 WDI_DeleteSession(pWDICtx, pBSSSes);
15718
15719 /*Association no longer in progress */
15720 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15721
15722 /*Association no longer in progress - prepare pending assoc for processing*/
15723 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015724
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 }
15726 else
15727 {
15728 /*Transition to state Joining - this may be redundant as we are supposed
15729 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 }
15732
15733 wpalMutexRelease(&pWDICtx->wptMutex);
15734
15735 /*Notify UMAC*/
15736 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15737
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015739}/*WDI_ProcessJoinRsp*/
15740
15741
15742/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015745
15746 @param pWDICtx: pointer to the WLAN DAL context
15747 pEventData: pointer to the event information structure
15748
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 @see
15750 @return Result of the function call
15751*/
15752WDI_Status
15753WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015754(
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 WDI_ControlBlockType* pWDICtx,
15756 WDI_EventInfoType* pEventData
15757)
15758{
15759 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15760 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 WDI_BSSSessionType* pBSSSes = NULL;
15763
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15766 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015767
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15769
15770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 -------------------------------------------------------------------------*/
15773 if (( NULL == pEventData ) ||
15774 ( NULL == pEventData->pEventData))
15775 {
15776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 }
15781
15782 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15783
15784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15788 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 sizeof(halConfigBssRspMsg.configBssRspParams));
15790
15791 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15792 halConfigBssRspMsg.configBssRspParams.status);
15793 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15794 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15797 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015798
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
15804 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015806
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015808
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15812 #endif
15813 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15814 halConfigBssRspMsg.configBssRspParams.staMac,
15815 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015816
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 wpalMutexAcquire(&pWDICtx->wptMutex);
15818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15822 wdiConfigBSSParams.macBSSID,
15823 &pBSSSes);
15824
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 /*-----------------------------------------------------------------------
15826 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 -----------------------------------------------------------------------*/
15829 if ( NULL == pBSSSes )
15830 {
15831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15832 "Association sequence for this BSS does not yet exist "
15833 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015834
15835 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15836
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015840
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 /*Save data for this BSS*/
15842 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15843 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15854 pBSSSes->bcastStaIdx =
15855 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015856
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015858
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 /*-------------------------------------------------------------------------
15860 Add Peer STA
15861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15864 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015865
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015869 wdiAddSTAParam.ucHTCapable =
15870 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15871 wdiAddSTAParam.ucStaType =
15872 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15873
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15876 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015878
15879 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15880 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15881 WDI_MAC_ADDR_LEN);
15882
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15898 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015899
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15901 /*-------------------------------------------------------------------------
15902 Add Broadcast STA only in AP mode
15903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015905 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 {
15907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15908 "Add BCAST STA to table for index: %d",
15909 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015910
15911 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015913
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15915 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15916 }
15917 wpalMutexRelease(&pWDICtx->wptMutex);
15918 }
15919 else
15920 {
15921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15922 "Config BSS RSP failed with status : %s(%d)",
15923 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 halConfigBssRspMsg.configBssRspParams.status);
15926
Jeff Johnsone7245742012-09-05 17:12:55 -070015927
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 /*Association was failed by HAL - remove session*/
15929 WDI_DeleteSession(pWDICtx, pBSSSes);
15930
15931 /*Association no longer in progress */
15932 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15933
15934 /*Association no longer in progress - prepare pending assoc for processing*/
15935 WDI_DequeueAssocRequest(pWDICtx);
15936
15937 }
15938
15939 /*Notify UMAC*/
15940 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15941
Jeff Johnsone7245742012-09-05 17:12:55 -070015942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015943}/*WDI_ProcessConfigBSSRsp*/
15944
15945
15946/**
15947 @brief Process Del BSS Response function (called when a response
15948 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015949
15950 @param pWDICtx: pointer to the WLAN DAL context
15951 pEventData: pointer to the event information structure
15952
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 @see
15954 @return Result of the function call
15955*/
15956WDI_Status
15957WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015958(
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 WDI_ControlBlockType* pWDICtx,
15960 WDI_EventInfoType* pEventData
15961)
15962{
15963 WDI_DelBSSRspParamsType wdiDelBSSParams;
15964 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 WDI_BSSSessionType* pBSSSes = NULL;
15967
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15970
15971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015973 -------------------------------------------------------------------------*/
15974 if (( NULL == pEventData ) ||
15975 ( NULL == pEventData->pEventData))
15976 {
15977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 }
15982
15983 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15984
15985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15989 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 sizeof(halDelBssRspMsg.deleteBssRspParams));
15991
15992
15993 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015995
15996 wpalMutexAcquire(&pWDICtx->wptMutex);
15997
15998 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16002 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16003 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016004
16005 /*-----------------------------------------------------------------------
16006 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 -----------------------------------------------------------------------*/
16009 if ( NULL == pBSSSes )
16010 {
16011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16012 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016013 "association no longer in progress - mysterious HAL response");
16014
16015 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16016
16017 wpalMutexRelease(&pWDICtx->wptMutex);
16018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016020
16021 /*Extract BSSID for the response to UMAC*/
16022 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16023 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16024
16025 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16026
16027 /*-----------------------------------------------------------------------
16028 The current session will be deleted
16029 -----------------------------------------------------------------------*/
16030 WDI_DeleteSession(pWDICtx, pBSSSes);
16031
16032
16033 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070016034 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16035 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016037 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016038 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016039
16040 /* Delete the STA's in this BSS */
16041 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16042
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 wpalMutexRelease(&pWDICtx->wptMutex);
16044
16045 /*Notify UMAC*/
16046 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16047
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016049}/*WDI_ProcessDelBSSRsp*/
16050
16051/**
16052 @brief Process Post Assoc Rsp function (called when a response
16053 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016054
16055 @param pWDICtx: pointer to the WLAN DAL context
16056 pEventData: pointer to the event information structure
16057
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 @see
16059 @return Result of the function call
16060*/
16061WDI_Status
16062WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016063(
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 WDI_ControlBlockType* pWDICtx,
16065 WDI_EventInfoType* pEventData
16066)
16067{
16068 WDI_PostAssocRspParamsType wdiPostAssocParams;
16069 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016072 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16074
16075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 -------------------------------------------------------------------------*/
16078 if (( NULL == pEventData ) ||
16079 ( NULL == pEventData->pEventData))
16080 {
16081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 }
16086
16087 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16088
16089 /*-------------------------------------------------------------------------
16090 Extract response and send it to UMAC
16091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16093 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 sizeof(halPostAssocRspMsg.postAssocRspParams));
16095
16096 /*Extract the Post Assoc STA Params */
16097
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16104
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 wdiPostAssocParams.wdiStatus =
16106 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016107
16108 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16109 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16111 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 WDI_MAC_ADDR_LEN);
16113
16114 /* Extract Post Assoc BSS Params */
16115
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16117 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16118 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016119
16120 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16121 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16124 .macSTA, WDI_MAC_ADDR_LEN);
16125
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16128
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16131
16132 wdiPostAssocParams.bssParams.ucBSSIdx =
16133 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16137
16138 wpalMutexAcquire(&pWDICtx->wptMutex);
16139
16140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016145 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016146
16147 /*-----------------------------------------------------------------------
16148 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 -----------------------------------------------------------------------*/
16151 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16154 {
16155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16156 "Association sequence for this BSS does not yet exist or "
16157 "association no longer in progress - mysterious HAL response");
16158
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16160
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016163 }
16164
16165 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016166 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 -----------------------------------------------------------------------*/
16168 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16169 {
16170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16171 "Post Assoc not allowed before JOIN - failing request "
16172 "strange HAL response");
16173
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16175
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 }
16179
16180 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 -----------------------------------------------------------------------*/
16183 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16184 {
16185 /*Association was failed by HAL - remove session*/
16186 WDI_DeleteSession(pWDICtx, pBSSSes);
16187 }
16188 else
16189 {
16190 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192
16193 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016194 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16202
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16205 }
16206
16207 /*Association no longer in progress */
16208 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16209
16210 /*Association no longer in progress - prepare pending assoc for processing*/
16211 WDI_DequeueAssocRequest(pWDICtx);
16212
16213 wpalMutexRelease(&pWDICtx->wptMutex);
16214
16215 /*Notify UMAC*/
16216 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16217
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016219}/*WDI_ProcessPostAssocRsp*/
16220
16221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
16225 @param pWDICtx: pointer to the WLAN DAL context
16226 pEventData: pointer to the event information structure
16227
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 @see
16229 @return Result of the function call
16230*/
16231WDI_Status
16232WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016233(
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 WDI_ControlBlockType* pWDICtx,
16235 WDI_EventInfoType* pEventData
16236)
16237{
16238 WDI_DelSTARspParamsType wdiDelSTARsp;
16239 WDI_DelSTARspCb wdiDelSTARspCb;
16240 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16243
16244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 -------------------------------------------------------------------------*/
16247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16248 ( NULL == pEventData->pEventData))
16249 {
16250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 }
16255
16256 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16257
16258 /*-------------------------------------------------------------------------
16259 Extract response and send it to UMAC
16260 -------------------------------------------------------------------------*/
16261 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 sizeof(halDelStaRspMsg.delStaRspParams));
16264
16265 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 wdiDelSTARsp.wdiStatus =
16267 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016268
16269 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16270
16271 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16272 if(staType == WDI_STA_ENTRY_SELF)
16273 {
16274 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16275
16276 /* At this point add the self-STA */
16277
16278 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16279 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16280 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16281
16282#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16283#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16284
16285 //all DPU indices are the same for self STA
16286 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16287 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16288 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16289 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16290 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16291 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016292
16293 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 }
16295 else
16296 {
16297 //Delete the station in the table
16298 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16299 }
16300
16301 /*Notify UMAC*/
16302 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16303
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016305}/*WDI_ProcessDelSTARsp*/
16306
16307
16308/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016309 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016310==========================================================================*/
16311
16312/**
16313 @brief Process Set BSS Key Rsp function (called when a response
16314 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016315
16316 @param pWDICtx: pointer to the WLAN DAL context
16317 pEventData: pointer to the event information structure
16318
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 @see
16320 @return Result of the function call
16321*/
16322WDI_Status
16323WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016324(
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 WDI_ControlBlockType* pWDICtx,
16326 WDI_EventInfoType* pEventData
16327)
16328{
16329 WDI_Status wdiStatus;
16330 eHalStatus halStatus;
16331 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16333
16334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016335 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016336 -------------------------------------------------------------------------*/
16337 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16338 ( NULL == pEventData->pEventData))
16339 {
16340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016341 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016344 }
16345
16346 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16347
16348 /*-------------------------------------------------------------------------
16349 Extract response and send it to UMAC
16350 -------------------------------------------------------------------------*/
16351 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016353
16354 if ( eHAL_STATUS_SUCCESS != halStatus )
16355 {
16356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16357 "Set BSS Key failed with status %s (%d)",
16358 WDI_getHALStatusMsgString(halStatus),
16359 halStatus);
16360 /* send the status to UMAC, don't return from here*/
16361 }
16362
16363 /*Notify UMAC*/
16364 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16365
Jeff Johnsone7245742012-09-05 17:12:55 -070016366 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016367}/*WDI_ProcessSetBssKeyRsp*/
16368
16369/**
16370 @brief Process Remove BSS Key Rsp function (called when a response
16371 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016372
16373 @param pWDICtx: pointer to the WLAN DAL context
16374 pEventData: pointer to the event information structure
16375
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 @see
16377 @return Result of the function call
16378*/
16379WDI_Status
16380WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016381(
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 WDI_ControlBlockType* pWDICtx,
16383 WDI_EventInfoType* pEventData
16384)
16385{
16386 WDI_Status wdiStatus;
16387 eHalStatus halStatus;
16388 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16390
16391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 -------------------------------------------------------------------------*/
16394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16395 ( NULL == pEventData->pEventData))
16396 {
16397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 }
16402
16403 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16404
16405 /*-------------------------------------------------------------------------
16406 Extract response and send it to UMAC
16407 -------------------------------------------------------------------------*/
16408 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016410
16411 if ( eHAL_STATUS_SUCCESS != halStatus )
16412 {
16413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16414 "Remove BSS Key failed with status %s (%d )",
16415 WDI_getHALStatusMsgString(halStatus),
16416 halStatus);
16417 /* send the status to UMAC, don't return from here*/
16418 }
16419
16420 /*Notify UMAC*/
16421 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16422
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016424}/*WDI_ProcessSetBssKeyRsp*/
16425
16426
16427/**
16428 @brief Process Set STA Key Rsp function (called when a response
16429 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016430
16431 @param pWDICtx: pointer to the WLAN DAL context
16432 pEventData: pointer to the event information structure
16433
Jeff Johnson295189b2012-06-20 16:38:30 -070016434 @see
16435 @return Result of the function call
16436*/
16437WDI_Status
16438WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016439(
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 WDI_ControlBlockType* pWDICtx,
16441 WDI_EventInfoType* pEventData
16442)
16443{
16444 WDI_Status wdiStatus;
16445 eHalStatus halStatus;
16446 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16448
16449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016450 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016451 -------------------------------------------------------------------------*/
16452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16453 ( NULL == pEventData->pEventData))
16454 {
16455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016456 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 }
16460
16461 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16462
16463 /*-------------------------------------------------------------------------
16464 Extract response and send it to UMAC
16465 -------------------------------------------------------------------------*/
16466 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016468
16469 if ( eHAL_STATUS_SUCCESS != halStatus )
16470 {
16471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16472 "Set STA Key failed with status %s (%d)",
16473 WDI_getHALStatusMsgString(halStatus),
16474 halStatus);
16475 /* send the status to UMAC, don't return from here*/
16476 }
16477
16478 /*Notify UMAC*/
16479 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16480
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482}/*WDI_ProcessSetSTAKeyRsp*/
16483
16484/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016487
16488 @param pWDICtx: pointer to the WLAN DAL context
16489 pEventData: pointer to the event information structure
16490
Jeff Johnson295189b2012-06-20 16:38:30 -070016491 @see
16492 @return Result of the function call
16493*/
16494WDI_Status
16495WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016496(
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 WDI_ControlBlockType* pWDICtx,
16498 WDI_EventInfoType* pEventData
16499)
16500{
16501 WDI_Status wdiStatus;
16502 eHalStatus halStatus;
16503 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16505
16506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 -------------------------------------------------------------------------*/
16509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16510 ( NULL == pEventData->pEventData))
16511 {
16512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 }
16517
16518 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16519
16520 /*-------------------------------------------------------------------------
16521 Extract response and send it to UMAC
16522 -------------------------------------------------------------------------*/
16523 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
16526 if ( eHAL_STATUS_SUCCESS != halStatus )
16527 {
16528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16529 "Remove STA Key failed with status %s (%d)",
16530 WDI_getHALStatusMsgString(halStatus),
16531 halStatus);
16532 /* send the status to UMAC, don't return from here*/
16533 }
16534
16535 /*Notify UMAC*/
16536 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16537
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016539}/*WDI_ProcessRemoveStaKeyRsp*/
16540
16541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016544
16545 @param pWDICtx: pointer to the WLAN DAL context
16546 pEventData: pointer to the event information structure
16547
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 @see
16549 @return Result of the function call
16550*/
16551WDI_Status
16552WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016553(
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 WDI_ControlBlockType* pWDICtx,
16555 WDI_EventInfoType* pEventData
16556)
16557{
16558 WDI_Status wdiStatus;
16559 eHalStatus halStatus;
16560 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16562
16563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 -------------------------------------------------------------------------*/
16566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16567 ( NULL == pEventData->pEventData))
16568 {
16569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 }
16574
16575 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16576
16577 /*-------------------------------------------------------------------------
16578 Extract response and send it to UMAC
16579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 wpalMemoryCopy( &halStatus,
16581 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 sizeof(halStatus));
16583
Jeff Johnsone7245742012-09-05 17:12:55 -070016584 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016585
16586 if ( eHAL_STATUS_SUCCESS != halStatus )
16587 {
16588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16589 "Set STA Key failed with status %s (%d)",
16590 WDI_getHALStatusMsgString(halStatus),
16591 halStatus);
16592 /* send the status to UMAC, don't return from here*/
16593 }
16594
16595 /*Notify UMAC*/
16596 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16597
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016599}/*WDI_ProcessSetSTABcastKeyRsp*/
16600
16601/**
16602 @brief Process Remove STA Bcast Key Rsp function (called when a
16603 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016604
16605 @param pWDICtx: pointer to the WLAN DAL context
16606 pEventData: pointer to the event information structure
16607
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 @see
16609 @return Result of the function call
16610*/
16611WDI_Status
16612WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016613(
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 WDI_ControlBlockType* pWDICtx,
16615 WDI_EventInfoType* pEventData
16616)
16617{
16618 WDI_Status wdiStatus;
16619 eHalStatus halStatus;
16620 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16622
16623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 -------------------------------------------------------------------------*/
16626 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16627 ( NULL == pEventData->pEventData))
16628 {
16629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016633 }
16634
16635 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16636
16637 /*-------------------------------------------------------------------------
16638 Extract response and send it to UMAC
16639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 wpalMemoryCopy( &halStatus,
16641 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 sizeof(halStatus));
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016645
16646 if ( eHAL_STATUS_SUCCESS != halStatus )
16647 {
16648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16649 "Remove STA Key failed with status %s (%d)",
16650 WDI_getHALStatusMsgString(halStatus),
16651 halStatus);
16652 /* send the status to UMAC, don't return from here*/
16653 }
16654
16655 /*Notify UMAC*/
16656 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16657
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016659}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16660
16661
16662/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016664==========================================================================*/
16665
16666/**
16667 @brief Process Add TSpec Rsp function (called when a response
16668 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016669
16670 @param pWDICtx: pointer to the WLAN DAL context
16671 pEventData: pointer to the event information structure
16672
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 @see
16674 @return Result of the function call
16675*/
16676WDI_Status
16677WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016678(
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 WDI_ControlBlockType* pWDICtx,
16680 WDI_EventInfoType* pEventData
16681)
16682{
16683 WDI_Status wdiStatus;
16684 eHalStatus halStatus;
16685 WDI_AddTsRspCb wdiAddTsRspCb;
16686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16687
16688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 -------------------------------------------------------------------------*/
16691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16692 ( NULL == pEventData->pEventData))
16693 {
16694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 }
16699
16700 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16701
16702 /*-------------------------------------------------------------------------
16703 Extract response and send it to UMAC
16704 -------------------------------------------------------------------------*/
16705 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016707
16708 /*Notify UMAC*/
16709 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16710
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016712}/*WDI_ProcessAddTSpecRsp*/
16713
16714
16715/**
16716 @brief Process Del TSpec Rsp function (called when a response
16717 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016718
16719 @param pWDICtx: pointer to the WLAN DAL context
16720 pEventData: pointer to the event information structure
16721
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 @see
16723 @return Result of the function call
16724*/
16725WDI_Status
16726WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016727(
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 WDI_ControlBlockType* pWDICtx,
16729 WDI_EventInfoType* pEventData
16730)
16731{
16732 WDI_Status wdiStatus;
16733 eHalStatus halStatus;
16734 WDI_DelTsRspCb wdiDelTsRspCb;
16735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16736
16737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016739 -------------------------------------------------------------------------*/
16740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16741 ( NULL == pEventData->pEventData))
16742 {
16743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 }
16748
16749 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16750
16751 /*-------------------------------------------------------------------------
16752 Extract response and send it to UMAC
16753 -------------------------------------------------------------------------*/
16754 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016756
16757 /*Notify UMAC*/
16758 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16759
Jeff Johnsone7245742012-09-05 17:12:55 -070016760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016761}/*WDI_ProcessDelTSpecRsp*/
16762
16763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016766
16767 @param pWDICtx: pointer to the WLAN DAL context
16768 pEventData: pointer to the event information structure
16769
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 @see
16771 @return Result of the function call
16772*/
16773WDI_Status
16774WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016775(
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 WDI_ControlBlockType* pWDICtx,
16777 WDI_EventInfoType* pEventData
16778)
16779{
16780 WDI_Status wdiStatus;
16781 eHalStatus halStatus;
16782 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16784
16785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 -------------------------------------------------------------------------*/
16788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16789 ( NULL == pEventData->pEventData))
16790 {
16791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 }
16796
16797 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16798
16799 /*-------------------------------------------------------------------------
16800 Extract response and send it to UMAC
16801 -------------------------------------------------------------------------*/
16802 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016804
16805 /*Notify UMAC*/
16806 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16807
Jeff Johnsone7245742012-09-05 17:12:55 -070016808 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016809}/*WDI_ProcessUpdateEDCAParamsRsp*/
16810
16811
16812/**
16813 @brief Process Add BA Rsp function (called when a response
16814 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016815
16816 @param pWDICtx: pointer to the WLAN DAL context
16817 pEventData: pointer to the event information structure
16818
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 @see
16820 @return Result of the function call
16821*/
16822WDI_Status
16823WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016824(
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 WDI_ControlBlockType* pWDICtx,
16826 WDI_EventInfoType* pEventData
16827)
16828{
16829 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16830
16831 tAddBASessionRspParams halBASessionRsp;
16832 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16833
Jeff Johnsone7245742012-09-05 17:12:55 -070016834
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16836
16837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 -------------------------------------------------------------------------*/
16840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16841 ( NULL == pEventData->pEventData))
16842 {
16843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 }
16848
16849 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16850
16851 /*-------------------------------------------------------------------------
16852 Extract response and send it to UMAC
16853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 wpalMemoryCopy( &halBASessionRsp,
16855 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 sizeof(halBASessionRsp));
16857
16858 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16859
Jeff Johnson43971f52012-07-17 12:26:56 -070016860 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 {
16862 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16863 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16864 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16865 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16866 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16867 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16868 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16869 }
16870
16871 /*Notify UMAC*/
16872 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16873
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016875}/*WDI_ProcessAddSessionBARsp*/
16876
16877
16878/**
16879 @brief Process Del BA Rsp function (called when a response
16880 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016881
16882 @param pWDICtx: pointer to the WLAN DAL context
16883 pEventData: pointer to the event information structure
16884
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 @see
16886 @return Result of the function call
16887*/
16888WDI_Status
16889WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016890(
Jeff Johnson295189b2012-06-20 16:38:30 -070016891 WDI_ControlBlockType* pWDICtx,
16892 WDI_EventInfoType* pEventData
16893)
16894{
16895 WDI_Status wdiStatus;
16896 eHalStatus halStatus;
16897 WDI_DelBARspCb wdiDelBARspCb;
16898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16899
16900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 -------------------------------------------------------------------------*/
16903 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16904 ( NULL == pEventData->pEventData))
16905 {
16906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 }
16911
16912 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16913
16914 /*-------------------------------------------------------------------------
16915 Extract response and send it to UMAC
16916 -------------------------------------------------------------------------*/
16917 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016918 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016919
16920 if ( eHAL_STATUS_SUCCESS == halStatus )
16921 {
16922 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16923 }
16924
16925 /*Notify UMAC*/
16926 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16927
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016929}/*WDI_ProcessDelBARsp*/
16930
16931#ifdef FEATURE_WLAN_CCX
16932/**
16933 @brief Process TSM Stats Rsp function (called when a response
16934 is being received over the bus from HAL)
16935
16936 @param pWDICtx: pointer to the WLAN DAL context
16937 pEventData: pointer to the event information structure
16938
16939 @see
16940 @return Result of the function call
16941*/
16942WDI_Status
16943WDI_ProcessTsmStatsRsp
16944(
16945 WDI_ControlBlockType* pWDICtx,
16946 WDI_EventInfoType* pEventData
16947)
16948{
16949 WDI_TsmRspCb wdiTsmStatsRspCb;
16950 tTsmStatsRspMsg halTsmStatsRspMsg;
16951 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16953
16954 /*-------------------------------------------------------------------------
16955 Sanity check
16956 -------------------------------------------------------------------------*/
16957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16958 ( NULL == pEventData->pEventData))
16959 {
16960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 WDI_ASSERT(0);
16963 return WDI_STATUS_E_FAILURE;
16964 }
16965
16966 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16967
16968 /*-------------------------------------------------------------------------
16969 Unpack HAL Response Message - the header was already extracted by the
16970 main Response Handling procedure
16971 -------------------------------------------------------------------------*/
16972 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16973 pEventData->pEventData,
16974 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16975
16976 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16977 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16978 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16979 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16980 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16981 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16982 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16983 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16984 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16985 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16986 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16987 halTsmStatsRspMsg.tsmStatsRspParams.status);
16988
16989 /*Notify UMAC*/
16990 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16991
16992 return WDI_STATUS_SUCCESS;
16993}/*WDI_ProcessTsmStatsRsp*/
16994
16995#endif
16996
16997
16998
16999/**
17000 @brief Process Flush AC Rsp function (called when a response
17001 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017002
17003 @param pWDICtx: pointer to the WLAN DAL context
17004 pEventData: pointer to the event information structure
17005
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 @see
17007 @return Result of the function call
17008*/
17009WDI_Status
17010WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017011(
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 WDI_ControlBlockType* pWDICtx,
17013 WDI_EventInfoType* pEventData
17014)
17015{
17016 WDI_Status wdiStatus;
17017 eHalStatus halStatus;
17018 WDI_FlushAcRspCb wdiFlushAcRspCb;
17019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17020
17021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 -------------------------------------------------------------------------*/
17024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17025 ( NULL == pEventData->pEventData))
17026 {
17027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 }
17032
17033 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17034
17035 /*-------------------------------------------------------------------------
17036 Extract response and send it to UMAC
17037 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 wpalMemoryCopy( &halStatus,
17039 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 sizeof(halStatus));
17041
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017043
17044 /*Notify UMAC*/
17045 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17046
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017048}/*WDI_ProcessFlushAcRsp*/
17049
17050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017053
17054 @param pWDICtx: pointer to the WLAN DAL context
17055 pEventData: pointer to the event information structure
17056
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 @see
17058 @return Result of the function call
17059*/
17060WDI_Status
17061WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017062(
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 WDI_ControlBlockType* pWDICtx,
17064 WDI_EventInfoType* pEventData
17065)
17066{
17067 WDI_Status wdiStatus;
17068 eHalStatus halStatus;
17069 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17071
17072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 -------------------------------------------------------------------------*/
17075 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17076 ( NULL == pEventData->pEventData))
17077 {
17078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 }
17083
17084 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17085
17086 /*-------------------------------------------------------------------------
17087 Extract response and send it to UMAC
17088 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 wpalMemoryCopy( &halStatus,
17090 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 sizeof(halStatus));
17092
Jeff Johnsone7245742012-09-05 17:12:55 -070017093 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017094
17095 /*Notify UMAC*/
17096 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17097
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017099}/*WDI_ProcessBtAmpEventRsp*/
17100
17101
17102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017105
17106 @param pWDICtx: pointer to the WLAN DAL context
17107 pEventData: pointer to the event information structure
17108
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 @see
17110 @return Result of the function call
17111*/
17112WDI_Status
17113WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017114(
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 WDI_ControlBlockType* pWDICtx,
17116 WDI_EventInfoType* pEventData
17117)
17118{
17119 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17120 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17121 tAddStaSelfRspMsg halAddStaSelfRsp;
17122 WDI_AddStaParams wdiAddSTAParam = {0};
17123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17124
17125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 -------------------------------------------------------------------------*/
17128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17129 ( NULL == pEventData->pEventData))
17130 {
17131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 }
17136
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17139
17140 /*-------------------------------------------------------------------------
17141 Extract response and send it to UMAC
17142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17144 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017145 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17146
17147
Jeff Johnsone7245742012-09-05 17:12:55 -070017148 wdiAddSTASelfParams.wdiStatus =
17149 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017150
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017155 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17157
17158 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17159 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17160 WDI_MAC_ADDR_LEN);
17161
17162
17163#ifdef HAL_SELF_STA_PER_BSS
17164
17165 /* At this point add the self-STA */
17166
17167 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17168 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17169 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17170
17171 //all DPU indices are the same for self STA
17172
17173 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17176 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17177 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17178 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17179 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17180
17181 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17182 WDI_MAC_ADDR_LEN);
17183
17184 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17185 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17186
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17189 {
17190 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17191 }
17192#endif
17193
17194 /*Notify UMAC*/
17195 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17196
Jeff Johnsone7245742012-09-05 17:12:55 -070017197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017198}/*WDI_ProcessAddSTASelfRsp*/
17199
17200
17201
17202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017205
17206 @param pWDICtx: pointer to the WLAN DAL context
17207 pEventData: pointer to the event information structure
17208
Jeff Johnson295189b2012-06-20 16:38:30 -070017209 @see
17210 @return Result of the function call
17211*/
17212WDI_Status
17213WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017214(
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 WDI_ControlBlockType* pWDICtx,
17216 WDI_EventInfoType* pEventData
17217)
17218{
17219 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17220 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17221 tDelStaSelfRspParams delStaSelfRspParams;
17222 wpt_uint8 ucStaIdx;
17223
17224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17225
17226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 -------------------------------------------------------------------------*/
17229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17230 ( NULL == pEventData->pEventData))
17231 {
17232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 }
17237
17238 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17239
17240 /*-------------------------------------------------------------------------
17241 Extract response and send it to UMAC
17242 -------------------------------------------------------------------------*/
17243
Jeff Johnsone7245742012-09-05 17:12:55 -070017244 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017245 (wpt_uint8*)pEventData->pEventData,
17246 sizeof(tDelStaSelfRspParams));
17247
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 wdiDelStaSelfRspParams.wdiStatus =
17249 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017250
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17253 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17254 {
17255 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 delStaSelfRspParams.selfMacAddr,
17258 &ucStaIdx);
17259 if(WDI_STATUS_E_FAILURE == wdiStatus)
17260 {
17261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017262 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 }
17266 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17267 }
17268
17269 /*Notify UMAC*/
17270 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17271
17272 return WDI_STATUS_SUCCESS;
17273}
17274
Jeff Johnsone7245742012-09-05 17:12:55 -070017275#ifdef FEATURE_OEM_DATA_SUPPORT
17276/**
17277 @brief Start Oem Data Rsp function (called when a
17278 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017279
Jeff Johnsone7245742012-09-05 17:12:55 -070017280 @param pWDICtx: pointer to the WLAN DAL context
17281 pEventData: pointer to the event information structure
17282
17283 @see
17284 @return Result of the function call
17285*/
17286#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17287
17288WDI_Status
17289WDI_ProcessStartOemDataRsp
17290(
17291 WDI_ControlBlockType* pWDICtx,
17292 WDI_EventInfoType* pEventData
17293)
17294{
17295 WDI_oemDataRspCb wdiOemDataRspCb;
17296 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17297 tStartOemDataRspParams* halStartOemDataRspParams;
17298
17299 /*-------------------------------------------------------------------------
17300 Sanity check
17301 -------------------------------------------------------------------------*/
17302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17303 ( NULL == pEventData->pEventData))
17304 {
17305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017306 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 WDI_ASSERT(0);
17308 return WDI_STATUS_E_FAILURE;
17309 }
17310
17311 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17312
17313 /*-------------------------------------------------------------------------
17314 Extract response and send it to UMAC
17315 -------------------------------------------------------------------------*/
17316 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17317
17318
17319 //It is the responsibility of the application code to check for failure
17320 //conditions!
17321
17322 //Allocate memory for WDI OEM DATA RSP structure
17323 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17324
17325 if(NULL == wdiOemDataRspParams)
17326 {
17327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017328 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017329 pWDICtx, pEventData, pEventData->pEventData);
17330 WDI_ASSERT(0);
17331 return WDI_STATUS_E_FAILURE;
17332 }
17333
17334 /* Populate WDI structure members */
17335 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17336
17337 /*Notify UMAC*/
17338 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17339
17340 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17341 wpalMemoryFree(wdiOemDataRspParams);
17342
17343 return WDI_STATUS_SUCCESS;
17344}/*WDI_PrcoessStartOemDataRsp*/
17345#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017346
17347/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017349===========================================================================*/
17350
17351/**
17352 @brief Process Channel Switch Rsp function (called when a response
17353 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017354
17355 @param pWDICtx: pointer to the WLAN DAL context
17356 pEventData: pointer to the event information structure
17357
Jeff Johnson295189b2012-06-20 16:38:30 -070017358 @see
17359 @return Result of the function call
17360*/
17361WDI_Status
17362WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017363(
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 WDI_ControlBlockType* pWDICtx,
17365 WDI_EventInfoType* pEventData
17366)
17367{
17368 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17369 WDI_SwitchChRspCb wdiChSwitchRspCb;
17370 tSwitchChannelRspParams halSwitchChannelRsp;
17371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17372
17373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 -------------------------------------------------------------------------*/
17376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17377 ( NULL == pEventData->pEventData))
17378 {
17379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 }
17384
17385 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17386
17387 /*-------------------------------------------------------------------------
17388 Extract response and send it to UMAC
17389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 (wpt_uint8*)pEventData->pEventData,
17392 sizeof(halSwitchChannelRsp));
17393
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 wdiSwitchChRsp.wdiStatus =
17395 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17397
17398#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017399 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017400#endif
17401
17402 /*Notify UMAC*/
17403 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17404
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017406}/*WDI_ProcessChannelSwitchRsp*/
17407
17408
17409/**
17410 @brief Process Config STA Rsp function (called when a response
17411 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017412
17413 @param pWDICtx: pointer to the WLAN DAL context
17414 pEventData: pointer to the event information structure
17415
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 @see
17417 @return Result of the function call
17418*/
17419WDI_Status
17420WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017421(
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 WDI_ControlBlockType* pWDICtx,
17423 WDI_EventInfoType* pEventData
17424)
17425{
17426 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17427 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17428 WDI_AddStaParams wdiAddSTAParam;
17429
17430 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017431 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017432
Jeff Johnsone7245742012-09-05 17:12:55 -070017433 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17435
17436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 -------------------------------------------------------------------------*/
17439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17440 ( NULL == pEventData->pEventData))
17441 {
17442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 }
17447
17448 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17449
17450 /*-------------------------------------------------------------------------
17451 Extract response and send it to UMAC
17452 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017453 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17454 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 sizeof(halConfigStaRsp.configStaRspParams));
17456
17457
17458 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17459 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17460 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17461 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17462 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17463
17464 /* MAC Address of STA - take from cache as it does not come back in the
17465 response*/
17466 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017469
17470 wdiCfgSTAParams.wdiStatus =
17471 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017472
17473 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17474 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17475 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17476
17477 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17478 {
17479 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17480 {
17481 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017482 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17484 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017485
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017487 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017488 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017489 wdiAddSTAParam.ucHTCapable =
17490 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17491 wdiAddSTAParam.ucStaType =
17492 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017493 wdiAddSTAParam.ucRmfEnabled =
17494 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017495
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17498 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017500
17501 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17502 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17503 WDI_MAC_ADDR_LEN);
17504
17505 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17506 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17507 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017508
17509 if ( NULL == pBSSSes )
17510 {
17511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17512 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017513
Jeff Johnson295189b2012-06-20 16:38:30 -070017514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516 }
17517
17518 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017528
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17530 }
17531 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17532 {
17533 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17534
Jeff Johnsone7245742012-09-05 17:12:55 -070017535 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 halConfigStaRsp.configStaRspParams.ucUcastSig;
17549 }
17550 }
17551
17552 /*Notify UMAC*/
17553 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17554
Jeff Johnsone7245742012-09-05 17:12:55 -070017555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017556}/*WDI_ProcessConfigStaRsp*/
17557
17558
17559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017560 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017562
17563 @param pWDICtx: pointer to the WLAN DAL context
17564 pEventData: pointer to the event information structure
17565
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 @see
17567 @return Result of the function call
17568*/
17569WDI_Status
17570WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017571(
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 WDI_ControlBlockType* pWDICtx,
17573 WDI_EventInfoType* pEventData
17574)
17575{
17576 WDI_Status wdiStatus;
17577 eHalStatus halStatus;
17578 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17579
17580 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17583
17584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017586 -------------------------------------------------------------------------*/
17587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17588 ( NULL == pEventData->pEventData))
17589 {
17590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 }
17595
17596 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17597
17598 wpalMutexAcquire(&pWDICtx->wptMutex);
17599
17600 /*If the link is being transitioned to idle - the BSS is to be deleted
17601 - this type of ending a session is possible when UMAC has failed an
17602 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17605 {
17606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17610 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17611 &pBSSSes);
17612
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 /*-----------------------------------------------------------------------
17614 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 -----------------------------------------------------------------------*/
17617 if ( NULL == pBSSSes )
17618 {
17619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17620 "Set link response received outside association session");
17621 }
17622 else
17623 {
17624 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17625 will be del BSS coming after this to stop the beaconing & cleaning up the
17626 sessions*/
17627 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17628 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17629 {
17630 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 -----------------------------------------------------------------------*/
17633 WDI_DeleteSession(pWDICtx, pBSSSes);
17634
17635 /*-----------------------------------------------------------------------
17636 Check to see if this association is in progress - if so disable the
17637 flag as this has ended
17638 -----------------------------------------------------------------------*/
17639 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017640 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 /*Association no longer in progress */
17642 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17643 /*Association no longer in progress - prepare pending assoc for processing*/
17644 WDI_DequeueAssocRequest(pWDICtx);
17645 }
17646 }
17647 }
17648 }
17649 /* If the link state has been set to POST ASSOC, reset the "association in
17650 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017651 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17653 {
17654 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17655 WDI_DequeueAssocRequest(pWDICtx);
17656 }
17657
17658 wpalMutexRelease(&pWDICtx->wptMutex);
17659
17660 /*-------------------------------------------------------------------------
17661 Extract response and send it to UMAC
17662 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 wpalMemoryCopy( &halStatus,
17664 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 sizeof(halStatus));
17666
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017668
17669 /*Notify UMAC*/
17670 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17671
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017673}/*WDI_ProcessSetLinkStateRsp*/
17674
17675/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017676 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017678
17679 @param pWDICtx: pointer to the WLAN DAL context
17680 pEventData: pointer to the event information structure
17681
Jeff Johnson295189b2012-06-20 16:38:30 -070017682 @see
17683 @return Result of the function call
17684*/
17685WDI_Status
17686WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017687(
Jeff Johnson295189b2012-06-20 16:38:30 -070017688 WDI_ControlBlockType* pWDICtx,
17689 WDI_EventInfoType* pEventData
17690)
17691{
17692 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17693 WDI_GetStatsRspCb wdiGetStatsRspCb;
17694 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017695
Jeff Johnson295189b2012-06-20 16:38:30 -070017696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17697
17698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 -------------------------------------------------------------------------*/
17701 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17702 ( NULL == pEventData->pEventData))
17703 {
17704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017705 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 }
17709
17710 /*-------------------------------------------------------------------------
17711 Extract response and send it to UMAC
17712 -------------------------------------------------------------------------*/
17713 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17714
17715 /*allocate the stats response buffer */
17716 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17717 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17718 + sizeof(WDI_GetStatsRspParamsType));
17719
17720 if(NULL == wdiGetStatsRsp)
17721 {
17722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017723 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 pWDICtx, pEventData, pEventData->pEventData);
17725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 }
17728
17729 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17730
17731 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17732 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17733 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17734 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17735 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17736 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17737
17738 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17739 wpalMemoryCopy(wdiGetStatsRsp + 1,
17740 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17741 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17742
17743 /*Notify UMAC*/
17744 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17745
17746 wpalMemoryFree(wdiGetStatsRsp);
17747
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017749}/*WDI_ProcessGetStatsRsp*/
17750
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017751#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17752/**
17753 @brief Process Get Roam Rssi Rsp function (called when a response is
17754 being received over the bus from HAL)
17755
17756 @param pWDICtx: pointer to the WLAN DAL context
17757 pEventData: pointer to the event information structure
17758
17759 @see
17760 @return Result of the function call
17761*/
17762WDI_Status
17763WDI_ProcessGetRoamRssiRsp
17764(
17765 WDI_ControlBlockType* pWDICtx,
17766 WDI_EventInfoType* pEventData
17767)
17768{
17769 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17770 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17771 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17773
17774 /*-------------------------------------------------------------------------
17775 Sanity check
17776 -------------------------------------------------------------------------*/
17777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17778 ( NULL == pEventData->pEventData))
17779 {
17780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17781 "%s: Invalid parameters", __func__);
17782 WDI_ASSERT(0);
17783 return WDI_STATUS_E_FAILURE;
17784 }
17785
17786 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17787 if(NULL == wdiGetRoamRssiRspCb)
17788 {
17789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17790 "%s: call back function is NULL", __func__);
17791 WDI_ASSERT(0);
17792 return WDI_STATUS_E_FAILURE;
17793 }
17794
17795 /*-------------------------------------------------------------------------
17796 Extract response and send it to UMAC
17797 -------------------------------------------------------------------------*/
17798 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17799 pEventData->pEventData,
17800 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17801
17802 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17803 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17804 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17805
17806 /*Notify UMAC*/
17807 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17808
17809 return WDI_STATUS_SUCCESS;
17810}/*WDI_ProcessGetRoamRssiRsp*/
17811#endif
17812
Jeff Johnson295189b2012-06-20 16:38:30 -070017813
17814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017815 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017817
17818 @param pWDICtx: pointer to the WLAN DAL context
17819 pEventData: pointer to the event information structure
17820
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 @see
17822 @return Result of the function call
17823*/
17824WDI_Status
17825WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017826(
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 WDI_ControlBlockType* pWDICtx,
17828 WDI_EventInfoType* pEventData
17829)
17830{
17831 WDI_Status wdiStatus;
17832 eHalStatus halStatus;
17833 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17835
17836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017837 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017838 -------------------------------------------------------------------------*/
17839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17840 ( NULL == pEventData->pEventData))
17841 {
17842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017843 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 }
17847
17848 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17849
17850 /*-------------------------------------------------------------------------
17851 Extract response and send it to UMAC
17852 -------------------------------------------------------------------------*/
17853 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017854 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017855
17856 /*Notify UMAC*/
17857 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17858
Jeff Johnsone7245742012-09-05 17:12:55 -070017859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017860}/*WDI_ProcessUpdateCfgRsp*/
17861
17862
17863
17864/**
17865 @brief Process Add BA Rsp function (called when a response
17866 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017867
17868 @param pWDICtx: pointer to the WLAN DAL context
17869 pEventData: pointer to the event information structure
17870
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 @see
17872 @return Result of the function call
17873*/
17874WDI_Status
17875WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017876(
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 WDI_ControlBlockType* pWDICtx,
17878 WDI_EventInfoType* pEventData
17879)
17880{
17881 WDI_AddBARspCb wdiAddBARspCb;
17882
17883 tAddBARspParams halAddBARsp;
17884 WDI_AddBARspinfoType wdiAddBARsp;
17885
17886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17887
17888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 -------------------------------------------------------------------------*/
17891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17892 ( NULL == pEventData->pEventData))
17893 {
17894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017898 }
17899
17900 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17901
17902 /*-------------------------------------------------------------------------
17903 Extract response and send it to UMAC
17904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 wpalMemoryCopy( &halAddBARsp,
17906 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 sizeof(halAddBARsp));
17908
17909 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17910
Jeff Johnson43971f52012-07-17 12:26:56 -070017911 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 {
17913 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17914 }
17915
17916 /*Notify UMAC*/
17917 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17918
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017920}/*WDI_ProcessAddSessionBARsp*/
17921
17922/**
17923 @brief Process Add BA Rsp function (called when a response
17924 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017925
17926 @param pWDICtx: pointer to the WLAN DAL context
17927 pEventData: pointer to the event information structure
17928
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 @see
17930 @return Result of the function call
17931*/
17932WDI_Status
17933WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017934(
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 WDI_ControlBlockType* pWDICtx,
17936 WDI_EventInfoType* pEventData
17937)
17938{
17939 WDI_TriggerBARspCb wdiTriggerBARspCb;
17940
17941 tTriggerBARspParams* halTriggerBARsp;
17942 tTriggerBaRspCandidate* halBaCandidate;
17943 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17944 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17945 wpt_uint16 index;
17946 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017947 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17949
17950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 -------------------------------------------------------------------------*/
17953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17954 ( NULL == pEventData->pEventData))
17955 {
17956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 }
17961
17962 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17963
17964 /*-------------------------------------------------------------------------
17965 Extract response and send it to UMAC
17966 -------------------------------------------------------------------------*/
17967 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17968
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017969 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17970
17971 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17972 {
17973 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017976
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017977 if(NULL == wdiTriggerBARsp)
17978 {
17979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017980 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017981 pWDICtx, pEventData, pEventData->pEventData);
17982 WDI_ASSERT(0);
17983 return WDI_STATUS_E_FAILURE;
17984 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017985
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017986 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17987
Jeff Johnson295189b2012-06-20 16:38:30 -070017988 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17991
17992 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17993 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17994
17995 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17996 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017997 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17999 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18000 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018001 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18005 }
18006 wdiTriggerBARspCandidate++;
18007 halBaCandidate++;
18008 }
18009 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018010 else
18011 {
18012 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18013
18014 if(NULL == wdiTriggerBARsp)
18015 {
18016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080018017 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018018 pWDICtx, pEventData, pEventData->pEventData);
18019 WDI_ASSERT(0);
18020 return WDI_STATUS_E_FAILURE;
18021 }
18022
18023 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18024
18025 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018026
18027 /*Notify UMAC*/
18028 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18029
18030 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032}/*WDI_ProcessAddSessionBARsp*/
18033
18034/**
18035 @brief Process Update Beacon Params Rsp function (called when a response
18036 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018037
18038 @param pWDICtx: pointer to the WLAN DAL context
18039 pEventData: pointer to the event information structure
18040
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 @see
18042 @return Result of the function call
18043*/
18044WDI_Status
18045WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018046(
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 WDI_ControlBlockType* pWDICtx,
18048 WDI_EventInfoType* pEventData
18049)
18050{
18051 WDI_Status wdiStatus;
18052 eHalStatus halStatus;
18053 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18055
18056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018058 -------------------------------------------------------------------------*/
18059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18060 ( NULL == pEventData->pEventData))
18061 {
18062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 }
18067
18068 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18069
18070 /*-------------------------------------------------------------------------
18071 Extract response and send it to UMAC
18072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 wpalMemoryCopy( &halStatus,
18074 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018075 sizeof(halStatus));
18076
Jeff Johnsone7245742012-09-05 17:12:55 -070018077 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018078
18079 /*Notify UMAC*/
18080 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18081
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018083}/*WDI_ProcessUpdateBeaconParamsRsp*/
18084
18085/**
18086 @brief Process Send Beacon template Rsp function (called when a response
18087 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018088
18089 @param pWDICtx: pointer to the WLAN DAL context
18090 pEventData: pointer to the event information structure
18091
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 @see
18093 @return Result of the function call
18094*/
18095WDI_Status
18096WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018097(
Jeff Johnson295189b2012-06-20 16:38:30 -070018098 WDI_ControlBlockType* pWDICtx,
18099 WDI_EventInfoType* pEventData
18100)
18101{
18102 WDI_Status wdiStatus;
18103 eHalStatus halStatus;
18104 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18106
18107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018109 -------------------------------------------------------------------------*/
18110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18111 ( NULL == pEventData->pEventData))
18112 {
18113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018117 }
18118
18119 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18120
18121 /*-------------------------------------------------------------------------
18122 Extract response and send it to UMAC
18123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 wpalMemoryCopy( &halStatus,
18125 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018126 sizeof(halStatus));
18127
Jeff Johnsone7245742012-09-05 17:12:55 -070018128 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018129
18130 /*Notify UMAC*/
18131 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18132
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018134}/*WDI_ProcessSendBeaconParamsRsp*/
18135
Jeff Johnsone7245742012-09-05 17:12:55 -070018136
Jeff Johnson295189b2012-06-20 16:38:30 -070018137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018138 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018140
18141 @param pWDICtx: pointer to the WLAN DAL context
18142 pEventData: pointer to the event information structure
18143
Jeff Johnson295189b2012-06-20 16:38:30 -070018144 @see
18145 @return Result of the function call
18146*/
18147WDI_Status
18148WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018149(
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 WDI_ControlBlockType* pWDICtx,
18151 WDI_EventInfoType* pEventData
18152)
18153{
18154 WDI_Status wdiStatus;
18155 eHalStatus halStatus;
18156 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18158
18159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 -------------------------------------------------------------------------*/
18162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18163 ( NULL == pEventData->pEventData))
18164 {
18165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 }
18170
18171 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18172
18173 /*-------------------------------------------------------------------------
18174 Extract response and send it to UMAC
18175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018176 wpalMemoryCopy( &halStatus,
18177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 sizeof(halStatus));
18179
Jeff Johnsone7245742012-09-05 17:12:55 -070018180 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018181
18182 /*Notify UMAC*/
18183 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18184
Jeff Johnsone7245742012-09-05 17:12:55 -070018185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018186}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18187
18188 /**
18189 @brief Process Set Max Tx Power Rsp function (called when a response
18190 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018191
18192 @param pWDICtx: pointer to the WLAN DAL context
18193 pEventData: pointer to the event information structure
18194
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 @see
18196 @return Result of the function call
18197*/
18198WDI_Status
18199WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018200(
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 WDI_ControlBlockType* pWDICtx,
18202 WDI_EventInfoType* pEventData
18203)
18204{
18205 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018206
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018208
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18211
18212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 -------------------------------------------------------------------------*/
18215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18216 ( NULL == pEventData->pEventData))
18217 {
18218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018222 }
18223
18224 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18225
18226 /*-------------------------------------------------------------------------
18227 Extract response and send it to UMAC
18228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018229 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18230 pEventData->pEventData,
18231 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018232
18233 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18234 {
18235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18236 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 }
18239
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018242 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018243
18244 /*Notify UMAC*/
18245 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18246
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018248}
18249
schangd82195a2013-03-13 18:41:24 -070018250 /**
18251 @brief Process Set Tx Power Rsp function (called when a response
18252 is being received over the bus from HAL)
18253
18254 @param pWDICtx: pointer to the WLAN DAL context
18255 pEventData: pointer to the event information structure
18256
18257 @see
18258 @return Result of the function call
18259*/
18260WDI_Status
18261WDI_ProcessSetTxPowerRsp
18262(
18263 WDI_ControlBlockType* pWDICtx,
18264 WDI_EventInfoType* pEventData
18265)
18266{
18267 tSetTxPwrRspMsg halTxpowerrsp;
18268 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18269 WDA_SetTxPowerRspCb wdiReqStatusCb;
18270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18271
18272 /*-------------------------------------------------------------------------
18273 Sanity check
18274 -------------------------------------------------------------------------*/
18275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18276 ( NULL == pEventData->pEventData))
18277 {
18278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18279 "%s: Invalid parameters", __func__);
18280 WDI_ASSERT(0);
18281 return WDI_STATUS_E_FAILURE;
18282 }
18283
18284 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18285
18286 /*-------------------------------------------------------------------------
18287 Extract response and send it to UMAC
18288 -------------------------------------------------------------------------*/
18289 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18290 pEventData->pEventData,
18291 sizeof(halTxpowerrsp.setTxPwrRspParams));
18292
18293 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18294 {
18295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18296 "Error status returned in Set Tx Power Response ");
18297 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18298 return WDI_STATUS_E_FAILURE;
18299 }
18300
18301 wdiSetTxPowerRspMsg.wdiStatus =
18302 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18303
18304 /*Notify UMAC*/
18305 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18306
18307 return WDI_STATUS_SUCCESS;
18308}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018309#ifdef FEATURE_WLAN_TDLS
18310/**
18311 @brief Process TDLS Link Establish Rsp function (called
18312 when a response is being received over the bus from HAL)
18313
18314 @param pWDICtx: pointer to the WLAN DAL context
18315 pEventData: pointer to the event information structure
18316
18317 @see
18318 @return Result of the function call
18319*/
18320WDI_Status
18321WDI_ProcessLinkEstablishReqRsp
18322(
18323 WDI_ControlBlockType* pWDICtx,
18324 WDI_EventInfoType* pEventData
18325)
18326{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018327 eHalStatus halStatus;
18328 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018329 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18330 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18331
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18333
18334 /*-------------------------------------------------------------------------
18335 Sanity check
18336 -------------------------------------------------------------------------*/
18337 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18338 ( NULL == pEventData->pEventData))
18339 {
18340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18341 "%s: Invalid parameters", __func__);
18342 WDI_ASSERT(0);
18343 return WDI_STATUS_E_FAILURE;
18344 }
18345
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018346 /*-------------------------------------------------------------------------
18347 Extract indication and send it to UMAC
18348 -------------------------------------------------------------------------*/
18349 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18350 pEventData->pEventData,
18351 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18352
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018353 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18354
18355 /*-------------------------------------------------------------------------
18356 Extract response and send it to UMAC
18357 -------------------------------------------------------------------------*/
18358 wpalMemoryCopy( &halStatus,
18359 pEventData->pEventData,
18360 sizeof(halStatus));
18361
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018362 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18363 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018364
18365 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018366 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018367
18368 return WDI_STATUS_SUCCESS;
18369}/*WDI_ProcessLinkEstablishReqRsp*/
18370#endif
schangd82195a2013-03-13 18:41:24 -070018371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018373 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018375
18376 @param pWDICtx: pointer to the WLAN DAL context
18377 pEventData: pointer to the event information structure
18378
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 @see
18380 @return Result of the function call
18381*/
18382WDI_Status
18383WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018384(
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 WDI_ControlBlockType* pWDICtx,
18386 WDI_EventInfoType* pEventData
18387)
18388{
18389 WDI_Status wdiStatus;
18390 eHalStatus halStatus;
18391 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18393
18394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 -------------------------------------------------------------------------*/
18397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18398 ( NULL == pEventData->pEventData))
18399 {
18400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 }
18405
18406 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18407
18408 /*-------------------------------------------------------------------------
18409 Extract response and send it to UMAC
18410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018411 wpalMemoryCopy( &halStatus,
18412 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 sizeof(halStatus));
18414
Jeff Johnsone7245742012-09-05 17:12:55 -070018415 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018416
18417 /*Notify UMAC*/
18418 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18419
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018421}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018425
18426 @param pWDICtx: pointer to the WLAN DAL context
18427 pEventData: pointer to the event information structure
18428
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 @see
18430 @return Result of the function call
18431*/
18432WDI_Status
18433WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018434(
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 WDI_ControlBlockType* pWDICtx,
18436 WDI_EventInfoType* pEventData
18437)
18438{
18439 WDI_Status wdiStatus;
18440 eHalStatus halStatus;
18441 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018442 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18444
18445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 -------------------------------------------------------------------------*/
18448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18449 ( NULL == pEventData->pEventData))
18450 {
18451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 }
18456
18457 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18458
18459 /*-------------------------------------------------------------------------
18460 Extract response and send it to UMAC
18461 -------------------------------------------------------------------------*/
18462 halStatus = *((eHalStatus*)pEventData->pEventData);
18463
Jeff Johnsone7245742012-09-05 17:12:55 -070018464 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018465
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018466 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18467 * Other module states are taken care by PMC.
18468 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18469 */
18470 if (wdiStatus != WDI_STATUS_SUCCESS) {
18471
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18473 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18474 halStatus);
18475 /* Call Back is not required as we are putting the DXE in FULL
18476 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018477 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18478
18479 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018481 "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 -080018482 WDI_ASSERT(0);
18483 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018484 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018485 /*Notify UMAC*/
18486 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18487
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018489}/*WDI_ProcessEnterImpsRsp*/
18490
18491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018492 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018494
18495 @param pWDICtx: pointer to the WLAN DAL context
18496 pEventData: pointer to the event information structure
18497
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 @see
18499 @return Result of the function call
18500*/
18501WDI_Status
18502WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018503(
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 WDI_ControlBlockType* pWDICtx,
18505 WDI_EventInfoType* pEventData
18506)
18507{
18508 WDI_Status wdiStatus;
18509 eHalStatus halStatus;
18510 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018511 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18513
18514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 -------------------------------------------------------------------------*/
18517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18518 ( NULL == pEventData->pEventData))
18519 {
18520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 }
18525
18526 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18527
18528 /*-------------------------------------------------------------------------
18529 Extract response and send it to UMAC
18530 -------------------------------------------------------------------------*/
18531 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018532 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018533
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018534 if (halStatus != eHAL_STATUS_SUCCESS)
18535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18536 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18537
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018539 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18540 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18541 {
18542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018543 "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 -080018544 WDI_ASSERT(0);
18545 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 /*Notify UMAC*/
18547 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18548
Jeff Johnsone7245742012-09-05 17:12:55 -070018549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018550}/*WDI_ProcessExitImpsRsp*/
18551
18552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018555
18556 @param pWDICtx: pointer to the WLAN DAL context
18557 pEventData: pointer to the event information structure
18558
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 @see
18560 @return Result of the function call
18561*/
18562WDI_Status
18563WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018564(
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 WDI_ControlBlockType* pWDICtx,
18566 WDI_EventInfoType* pEventData
18567)
18568{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018569 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18570 tHalEnterBmpsRspParams halEnterBmpsRsp;
18571 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18572 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018573 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18575
18576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 -------------------------------------------------------------------------*/
18579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18580 ( NULL == pEventData->pEventData))
18581 {
18582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 }
18587
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018589 Extract response and send it to UMAC
18590 -------------------------------------------------------------------------*/
18591 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18592 {
18593 wpalMemoryCopy( &halEnterBmpsRsp,
18594 pEventData->pEventData,
18595 sizeof(halEnterBmpsRsp));
18596
18597 //Used to print debug message
18598 halStatus = halEnterBmpsRsp.status;
18599 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18600 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18601 }
18602 else
18603 {
18604 halStatus = *((eHalStatus*)pEventData->pEventData);
18605 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18606 }
18607
18608 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018609
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018610 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18611 * Other module states are taken care by PMC.
18612 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18613 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018614 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18615 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018616
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018618 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18619 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018620 /* Call Back is not required as we are putting the DXE in FULL
18621 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018622 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18623 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18624 {
18625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018626 "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 -080018627 WDI_ASSERT(0);
18628 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018629 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018630 }
18631
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018633 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018634
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636}/*WDI_ProcessEnterBmpsRsp*/
18637
18638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018639 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018640 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018641
18642 @param pWDICtx: pointer to the WLAN DAL context
18643 pEventData: pointer to the event information structure
18644
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 @see
18646 @return Result of the function call
18647*/
18648WDI_Status
18649WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018650(
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 WDI_ControlBlockType* pWDICtx,
18652 WDI_EventInfoType* pEventData
18653)
18654{
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 eHalStatus halStatus;
18656 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018657 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018658 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18659 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18661
18662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018664 -------------------------------------------------------------------------*/
18665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18666 ( NULL == pEventData->pEventData))
18667 {
18668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 }
18673
18674 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18675
18676 /*-------------------------------------------------------------------------
18677 Extract response and send it to UMAC
18678 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018679
18680 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18681 {
18682 wpalMemoryCopy( &halExitBmpsRsp,
18683 pEventData->pEventData,
18684 sizeof(halExitBmpsRsp));
18685
18686 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18687 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18688 }
18689 else
18690 {
18691 halStatus = *((eHalStatus*)pEventData->pEventData);
18692 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18693 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018694
18695 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018696 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18697 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18698 {
18699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018700 "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 -080018701 WDI_ASSERT(0);
18702 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18704
18705 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018706 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018707
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018709}/*WDI_ProcessExitBmpsRsp*/
18710
18711/**
18712 @brief Process Enter UAPSD Rsp function (called when a response
18713 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018714
18715 @param pWDICtx: pointer to the WLAN DAL context
18716 pEventData: pointer to the event information structure
18717
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 @see
18719 @return Result of the function call
18720*/
18721WDI_Status
18722WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018723(
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 WDI_ControlBlockType* pWDICtx,
18725 WDI_EventInfoType* pEventData
18726)
18727{
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018729 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018731 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18732
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18734
18735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 -------------------------------------------------------------------------*/
18738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18739 ( NULL == pEventData->pEventData))
18740 {
18741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 }
18746
18747 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18748
18749 /*-------------------------------------------------------------------------
18750 Extract response and send it to UMAC
18751 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018752 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18753 {
18754 wpalMemoryCopy( &halEnterUapsdRsp,
18755 pEventData->pEventData,
18756 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018757
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018758 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18759 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18760 }
18761 else
18762 {
18763 halStatus = *((eHalStatus*)pEventData->pEventData);
18764 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18765 }
18766
18767 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018768 {
18769 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18770 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18771 // the traffic to decide when to suspend the trigger frames when there is no traffic
18772 // activity on the trigger enabled ACs
18773 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18774
18775#ifdef WLAN_PERF
18776 // Increment the BD signature to refresh the fast path BD utilization
18777 pWDICtx->uBdSigSerialNum++;
18778#endif
18779 }
18780
18781 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018782 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018783
Jeff Johnsone7245742012-09-05 17:12:55 -070018784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018785}/*WDI_ProcessEnterUapsdRsp*/
18786
18787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018788 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018790
18791 @param pWDICtx: pointer to the WLAN DAL context
18792 pEventData: pointer to the event information structure
18793
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 @see
18795 @return Result of the function call
18796*/
18797WDI_Status
18798WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018799(
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 WDI_ControlBlockType* pWDICtx,
18801 WDI_EventInfoType* pEventData
18802)
18803{
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 eHalStatus halStatus;
18805 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018806 tHalExitUapsdRspParams halExitUapsdRsp;
18807 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18809
18810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018812 -------------------------------------------------------------------------*/
18813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18814 ( NULL == pEventData->pEventData))
18815 {
18816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 }
18821
18822 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18823
18824 /*-------------------------------------------------------------------------
18825 Extract response and send it to UMAC
18826 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018827 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18828 {
18829 wpalMemoryCopy( &halExitUapsdRsp,
18830 pEventData->pEventData,
18831 sizeof(halExitUapsdRsp));
18832
18833 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18834 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18835 }
18836 else
18837 {
18838 halStatus = *((eHalStatus*)pEventData->pEventData);
18839 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18840 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18842 // directly instead of the FW WQ.
18843 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18844
18845#ifdef WLAN_PERF
18846 // Increment the BD signature to refresh the fast path BD utilization
18847 pWDICtx->uBdSigSerialNum++;
18848#endif
18849
18850 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018851 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018852
Jeff Johnsone7245742012-09-05 17:12:55 -070018853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018854}/*WDI_ProcessExitUapsdRsp*/
18855
18856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018857 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018858 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018859
18860 @param pWDICtx: pointer to the WLAN DAL context
18861 pEventData: pointer to the event information structure
18862
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 @see
18864 @return Result of the function call
18865*/
18866WDI_Status
18867WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018868(
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 WDI_ControlBlockType* pWDICtx,
18870 WDI_EventInfoType* pEventData
18871)
18872{
18873 WDI_Status wdiStatus;
18874 eHalStatus halStatus;
18875 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18877
18878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 -------------------------------------------------------------------------*/
18881 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18882 ( NULL == pEventData->pEventData))
18883 {
18884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018888 }
18889
18890 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18891
18892 /*-------------------------------------------------------------------------
18893 Extract response and send it to UMAC
18894 -------------------------------------------------------------------------*/
18895 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018896 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018897
18898 /*Notify UMAC*/
18899 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18900
Jeff Johnsone7245742012-09-05 17:12:55 -070018901 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018902}/*WDI_ProcessSetUapsdAcParamsRsp*/
18903
18904/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018905 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018907
18908 @param pWDICtx: pointer to the WLAN DAL context
18909 pEventData: pointer to the event information structure
18910
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 @see
18912 @return Result of the function call
18913*/
18914WDI_Status
18915WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018916(
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 WDI_ControlBlockType* pWDICtx,
18918 WDI_EventInfoType* pEventData
18919)
18920{
18921 WDI_Status wdiStatus;
18922 eHalStatus halStatus;
18923 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18925
18926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 -------------------------------------------------------------------------*/
18929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18930 ( NULL == pEventData->pEventData))
18931 {
18932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 }
18937
18938 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18939
18940 /*-------------------------------------------------------------------------
18941 Extract response and send it to UMAC
18942 -------------------------------------------------------------------------*/
18943 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018945
18946 /*Notify UMAC*/
18947 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18948
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018950}/*WDI_ProcessUpdateUapsdParamsRsp*/
18951
18952/**
18953 @brief Process Configure RXP filter Rsp function (called when a
18954 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018955
18956 @param pWDICtx: pointer to the WLAN DAL context
18957 pEventData: pointer to the event information structure
18958
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 @see
18960 @return Result of the function call
18961*/
18962WDI_Status
18963WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018964(
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 WDI_ControlBlockType* pWDICtx,
18966 WDI_EventInfoType* pEventData
18967)
18968{
18969 WDI_Status wdiStatus;
18970 eHalStatus halStatus;
18971 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18973
18974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 -------------------------------------------------------------------------*/
18977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18978 ( NULL == pEventData->pEventData))
18979 {
18980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 }
18985
18986 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18987
18988 /*-------------------------------------------------------------------------
18989 Extract response and send it to UMAC
18990 -------------------------------------------------------------------------*/
18991 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018993
18994 /*Notify UMAC*/
18995 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18996
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018998}/*WDI_ProcessConfigureRxpFilterRsp*/
18999
19000/**
19001 @brief Process Set beacon filter Rsp function (called when a
19002 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019003
19004 @param pWDICtx: pointer to the WLAN DAL context
19005 pEventData: pointer to the event information structure
19006
Jeff Johnson295189b2012-06-20 16:38:30 -070019007 @see
19008 @return Result of the function call
19009*/
19010WDI_Status
19011WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019012(
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 WDI_ControlBlockType* pWDICtx,
19014 WDI_EventInfoType* pEventData
19015)
19016{
19017 WDI_Status wdiStatus;
19018 eHalStatus halStatus;
19019 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19021
19022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 -------------------------------------------------------------------------*/
19025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19026 ( NULL == pEventData->pEventData))
19027 {
19028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 }
19033
19034 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19035
19036 /*-------------------------------------------------------------------------
19037 Extract response and send it to UMAC
19038 -------------------------------------------------------------------------*/
19039 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019041
19042 /*Notify UMAC*/
19043 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19044
Jeff Johnsone7245742012-09-05 17:12:55 -070019045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019046}/*WDI_ProcessSetBeaconFilterRsp*/
19047
19048/**
19049 @brief Process remove beacon filter Rsp function (called when a
19050 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019051
19052 @param pWDICtx: pointer to the WLAN DAL context
19053 pEventData: pointer to the event information structure
19054
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 @see
19056 @return Result of the function call
19057*/
19058WDI_Status
19059WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019060(
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 WDI_ControlBlockType* pWDICtx,
19062 WDI_EventInfoType* pEventData
19063)
19064{
19065 WDI_Status wdiStatus;
19066 eHalStatus halStatus;
19067 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19069
19070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 -------------------------------------------------------------------------*/
19073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19074 ( NULL == pEventData->pEventData))
19075 {
19076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 }
19081
19082 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19083
19084 /*-------------------------------------------------------------------------
19085 Extract response and send it to UMAC
19086 -------------------------------------------------------------------------*/
19087 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019089
19090 /*Notify UMAC*/
19091 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19092
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019094}/*WDI_ProcessRemBeaconFilterRsp*/
19095
19096/**
19097 @brief Process set RSSI thresholds Rsp function (called when a
19098 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019099
19100 @param pWDICtx: pointer to the WLAN DAL context
19101 pEventData: pointer to the event information structure
19102
Jeff Johnson295189b2012-06-20 16:38:30 -070019103 @see
19104 @return Result of the function call
19105*/
19106WDI_Status
19107WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019108(
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 WDI_ControlBlockType* pWDICtx,
19110 WDI_EventInfoType* pEventData
19111)
19112{
19113 WDI_Status wdiStatus;
19114 eHalStatus halStatus;
19115 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19117
19118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 -------------------------------------------------------------------------*/
19121 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19122 ( NULL == pEventData->pEventData))
19123 {
19124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019125 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 }
19129
19130 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19131
19132 /*-------------------------------------------------------------------------
19133 Extract response and send it to UMAC
19134 -------------------------------------------------------------------------*/
19135 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019137
19138 /*Notify UMAC*/
19139 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19140
Jeff Johnsone7245742012-09-05 17:12:55 -070019141 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019142}/*WDI_ProcessSetRSSIThresoldsRsp*/
19143
19144/**
19145 @brief Process host offload Rsp function (called when a
19146 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019147
19148 @param pWDICtx: pointer to the WLAN DAL context
19149 pEventData: pointer to the event information structure
19150
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 @see
19152 @return Result of the function call
19153*/
19154WDI_Status
19155WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019156(
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 WDI_ControlBlockType* pWDICtx,
19158 WDI_EventInfoType* pEventData
19159)
19160{
19161 WDI_Status wdiStatus;
19162 eHalStatus halStatus;
19163 WDI_HostOffloadCb wdiHostOffloadCb;
19164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19165
19166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 -------------------------------------------------------------------------*/
19169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19170 ( NULL == pEventData->pEventData))
19171 {
19172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 }
19177
19178 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19179
19180 /*-------------------------------------------------------------------------
19181 Extract response and send it to UMAC
19182 -------------------------------------------------------------------------*/
19183 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019185
19186 /*Notify UMAC*/
19187 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19188
Jeff Johnsone7245742012-09-05 17:12:55 -070019189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019190}/*WDI_ProcessHostOffloadRsp*/
19191
19192/**
19193 @brief Process keep alive Rsp function (called when a
19194 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019195
19196 @param pWDICtx: pointer to the WLAN DAL context
19197 pEventData: pointer to the event information structure
19198
Jeff Johnson295189b2012-06-20 16:38:30 -070019199 @see
19200 @return Result of the function call
19201*/
19202WDI_Status
19203WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019204(
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 WDI_ControlBlockType* pWDICtx,
19206 WDI_EventInfoType* pEventData
19207)
19208{
19209 WDI_Status wdiStatus;
19210 eHalStatus halStatus;
19211 WDI_KeepAliveCb wdiKeepAliveCb;
19212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19214 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19215
19216
19217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 -------------------------------------------------------------------------*/
19220 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19221 ( NULL == pEventData->pEventData))
19222 {
19223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 }
19228
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19230
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 /*-------------------------------------------------------------------------
19232 Extract response and send it to UMAC
19233 -------------------------------------------------------------------------*/
19234 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019235 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019236
19237 /*Notify UMAC*/
19238 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19239
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019241}/*WDI_ProcessKeepAliveRsp*/
19242
19243/**
19244 @brief Process wowl add ptrn Rsp function (called when a
19245 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019246
19247 @param pWDICtx: pointer to the WLAN DAL context
19248 pEventData: pointer to the event information structure
19249
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 @see
19251 @return Result of the function call
19252*/
19253WDI_Status
19254WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019255(
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 WDI_ControlBlockType* pWDICtx,
19257 WDI_EventInfoType* pEventData
19258)
19259{
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 eHalStatus halStatus;
19261 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019262 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19263 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19264
Jeff Johnson295189b2012-06-20 16:38:30 -070019265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19266
19267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 -------------------------------------------------------------------------*/
19270 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19271 ( NULL == pEventData->pEventData))
19272 {
19273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 }
19278
19279 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19280
19281 /*-------------------------------------------------------------------------
19282 Extract response and send it to UMAC
19283 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019284 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19285 {
19286 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19287 pEventData->pEventData,
19288 sizeof(halAddWowlBcastPtrRsp));
19289
19290 wdiWowlAddBcPtrRsp.wdiStatus =
19291 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19292 }
19293 else
19294 {
19295 halStatus = *((eHalStatus*)pEventData->pEventData);
19296 wdiWowlAddBcPtrRsp.wdiStatus =
19297 WDI_HAL_2_WDI_STATUS(halStatus);
19298 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019299
19300 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019301 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019302
Jeff Johnsone7245742012-09-05 17:12:55 -070019303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019304}/*WDI_ProcessWowlAddBcPtrnRsp*/
19305
19306/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019307 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019309
19310 @param pWDICtx: pointer to the WLAN DAL context
19311 pEventData: pointer to the event information structure
19312
Jeff Johnson295189b2012-06-20 16:38:30 -070019313 @see
19314 @return Result of the function call
19315*/
19316WDI_Status
19317WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019318(
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 WDI_ControlBlockType* pWDICtx,
19320 WDI_EventInfoType* pEventData
19321)
19322{
Jeff Johnson295189b2012-06-20 16:38:30 -070019323 eHalStatus halStatus;
19324 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019325 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19326 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19328
19329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019330 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019331 -------------------------------------------------------------------------*/
19332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19333 ( NULL == pEventData->pEventData))
19334 {
19335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019336 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 }
19340
19341 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19342
19343 /*-------------------------------------------------------------------------
19344 Extract response and send it to UMAC
19345 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019346 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19347 {
19348 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19349 pEventData->pEventData,
19350 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019351
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019352 wdiWowlDelBcstPtrRsp.wdiStatus =
19353 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19354 }
19355 else
19356 {
19357 halStatus = *((eHalStatus*)pEventData->pEventData);
19358 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19359 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019361 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019362
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019364}/*WDI_ProcessWowlDelBcPtrnRsp*/
19365
19366/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019369
19370 @param pWDICtx: pointer to the WLAN DAL context
19371 pEventData: pointer to the event information structure
19372
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 @see
19374 @return Result of the function call
19375*/
19376WDI_Status
19377WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019378(
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 WDI_ControlBlockType* pWDICtx,
19380 WDI_EventInfoType* pEventData
19381)
19382{
Jeff Johnson295189b2012-06-20 16:38:30 -070019383 eHalStatus halStatus;
19384 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019385 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19386 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19388
19389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 -------------------------------------------------------------------------*/
19392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19393 ( NULL == pEventData->pEventData))
19394 {
19395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 }
19400
19401 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19402
19403 /*-------------------------------------------------------------------------
19404 Extract response and send it to UMAC
19405 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019406 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19407 {
19408 wpalMemoryCopy( &halEnterWowlRspParams,
19409 (wpt_uint8*)pEventData->pEventData,
19410 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019411
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019412 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19413 wdiwowlEnterRsp.status =
19414 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19415 }
19416 else
19417 {
19418 halStatus = *((eHalStatus*)pEventData->pEventData);
19419 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19420 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019422 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019423
Jeff Johnsone7245742012-09-05 17:12:55 -070019424 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019425}/*WDI_ProcessWowlEnterRsp*/
19426
19427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019430
19431 @param pWDICtx: pointer to the WLAN DAL context
19432 pEventData: pointer to the event information structure
19433
Jeff Johnson295189b2012-06-20 16:38:30 -070019434 @see
19435 @return Result of the function call
19436*/
19437WDI_Status
19438WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019439(
Jeff Johnson295189b2012-06-20 16:38:30 -070019440 WDI_ControlBlockType* pWDICtx,
19441 WDI_EventInfoType* pEventData
19442)
19443{
Jeff Johnson295189b2012-06-20 16:38:30 -070019444 eHalStatus halStatus;
19445 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019446 tHalExitWowlRspParams halExitWowlRspParams;
19447 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19448
Jeff Johnson295189b2012-06-20 16:38:30 -070019449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19450
19451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 -------------------------------------------------------------------------*/
19454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19455 ( NULL == pEventData->pEventData))
19456 {
19457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 }
19462
19463 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19464
19465 /*-------------------------------------------------------------------------
19466 Extract response and send it to UMAC
19467 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019468 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19469 {
19470 wpalMemoryCopy( &halExitWowlRspParams,
19471 pEventData->pEventData,
19472 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019473
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019474 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19475 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19476
19477 }
19478 else
19479 {
19480 halStatus = *((eHalStatus*)pEventData->pEventData);
19481 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19482 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019484 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019485
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019487}/*WDI_ProcessWowlExitRsp*/
19488
19489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 (called when a response is being received over the bus
19492 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019493
19494 @param pWDICtx: pointer to the WLAN DAL context
19495 pEventData: pointer to the event information structure
19496
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 @see
19498 @return Result of the function call
19499*/
19500WDI_Status
19501WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019502(
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 WDI_ControlBlockType* pWDICtx,
19504 WDI_EventInfoType* pEventData
19505)
19506{
19507 WDI_Status wdiStatus;
19508 eHalStatus halStatus;
19509 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19511
19512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 -------------------------------------------------------------------------*/
19515 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19516 ( NULL == pEventData->pEventData))
19517 {
19518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 }
19523
19524 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19525
19526 /*-------------------------------------------------------------------------
19527 Extract response and send it to UMAC
19528 -------------------------------------------------------------------------*/
19529 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019530 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019531
19532 /*Notify UMAC*/
19533 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19534
Jeff Johnsone7245742012-09-05 17:12:55 -070019535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019536}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19537
19538
19539/**
19540 @brief Process Nv download(called when a response
19541 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019542
19543 @param pWDICtx: pointer to the WLAN DAL context
19544 pEventData: pointer to the event information structure
19545
Jeff Johnson295189b2012-06-20 16:38:30 -070019546 @see
19547 @return Result of the function call
19548*/
19549WDI_Status
19550WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019551(
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 WDI_ControlBlockType* pWDICtx,
19553 WDI_EventInfoType* pEventData
19554)
19555{
19556
19557 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19558 tHalNvImgDownloadRspParams halNvDownloadRsp;
19559 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19560
19561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019563 -------------------------------------------------------------------------*/
19564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19565 ( NULL == pEventData->pEventData))
19566 {
19567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 }
19572
19573 /*-------------------------------------------------------------------------
19574 Extract response and send it to UMAC
19575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 wpalMemoryCopy( &halNvDownloadRsp,
19577 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 sizeof(halNvDownloadRsp));
19579
19580 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19581
19582 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019583 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19584 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 {
19586 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 }
19589 else
19590 {
19591 /*Reset the Nv related global information in WDI context information */
19592 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19593 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19594 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19595 /*call WDA callback function for last fragment */
19596 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19597 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19598 }
19599
Jeff Johnsone7245742012-09-05 17:12:55 -070019600 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019601}
19602#ifdef WLAN_FEATURE_VOWIFI_11R
19603/**
19604 @brief Process Add TSpec Rsp function (called when a response
19605 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019606
19607 @param pWDICtx: pointer to the WLAN DAL context
19608 pEventData: pointer to the event information structure
19609
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 @see
19611 @return Result of the function call
19612*/
19613WDI_Status
19614WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019615(
Jeff Johnson295189b2012-06-20 16:38:30 -070019616 WDI_ControlBlockType* pWDICtx,
19617 WDI_EventInfoType* pEventData
19618)
19619{
19620 WDI_Status wdiStatus;
19621 tAggrAddTsRspParams aggrAddTsRsp;
19622 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19624
19625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019627 -------------------------------------------------------------------------*/
19628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19629 ( NULL == pEventData->pEventData))
19630 {
19631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019635 }
19636
19637 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19638
19639 /*-------------------------------------------------------------------------
19640 Extract response and send it to UMAC
19641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019642 wpalMemoryCopy( &aggrAddTsRsp,
19643 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 sizeof(aggrAddTsRsp));
19645
19646 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019648
19649 /*Notify UMAC*/
19650 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19651
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019653}/*WDI_ProcessAddTSpecRsp*/
19654#endif /* WLAN_FEATURE_VOWIFI_11R */
19655
19656/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019657 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019658 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019659
19660 @param pWDICtx: pointer to the WLAN DAL context
19661 pEventData: pointer to the event information structure
19662
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 @see
19664 @return Result of the function call
19665*/
19666WDI_Status
19667WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019668(
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 WDI_ControlBlockType* pWDICtx,
19670 WDI_EventInfoType* pEventData
19671)
19672{
19673 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19674 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19675 tHalHostResumeRspParams hostResumeRspMsg;
19676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19677
19678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 -------------------------------------------------------------------------*/
19681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19682 ( NULL == pEventData->pEventData))
19683 {
19684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019688 }
19689
19690 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19691
19692 /*-------------------------------------------------------------------------
19693 Extract response and send it to UMAC
19694 -------------------------------------------------------------------------*/
19695
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 (wpt_uint8*)pEventData->pEventData,
19698 sizeof(hostResumeRspMsg));
19699
Jeff Johnsone7245742012-09-05 17:12:55 -070019700 wdiResumeRspParams.wdiStatus =
19701 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019702
19703 /*Notify UMAC*/
19704 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19705
19706 return WDI_STATUS_SUCCESS;
19707}
19708
19709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019712
19713 @param pWDICtx: pointer to the WLAN DAL context
19714 pEventData: pointer to the event information structure
19715
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 @see
19717 @return Result of the function call
19718*/
19719WDI_Status
19720WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019721(
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 WDI_ControlBlockType* pWDICtx,
19723 WDI_EventInfoType* pEventData
19724)
19725{
19726 WDI_Status wdiStatus;
19727 eHalStatus halStatus;
19728 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19730
19731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019733 -------------------------------------------------------------------------*/
19734 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19735 ( NULL == pEventData->pEventData))
19736 {
19737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019742
19743 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019744
19745 /*-------------------------------------------------------------------------
19746 Extract response and send it to UMAC
19747 -------------------------------------------------------------------------*/
19748 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019749 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019750
19751 /*Notify UMAC*/
19752 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19753
Jeff Johnsone7245742012-09-05 17:12:55 -070019754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019755}/*WDI_ProcessSetTxPerTrackingRsp*/
19756
19757/*==========================================================================
19758 Indications from HAL
19759 ==========================================================================*/
19760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 indication of this kind is being received over the bus
19763 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019764
19765 @param pWDICtx: pointer to the WLAN DAL context
19766 pEventData: pointer to the event information structure
19767
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 @see
19769 @return Result of the function call
19770*/
19771WDI_Status
19772WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019773(
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 WDI_ControlBlockType* pWDICtx,
19775 WDI_EventInfoType* pEventData
19776)
19777{
19778 WDI_LowLevelIndType wdiInd;
19779 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19781
19782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019784 -------------------------------------------------------------------------*/
19785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19786 ( NULL == pEventData->pEventData))
19787 {
19788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 }
19793
19794 /*-------------------------------------------------------------------------
19795 Extract indication and send it to UMAC
19796 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019797 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19798 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 sizeof(tHalRSSINotification));
19800
19801 /*Fill in the indication parameters*/
19802 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19803 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19804 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19805 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19806 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19807 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19808 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19809 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19810 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19811 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19812 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19813 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19814 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019815 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19816 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817
ltimariu034f7d62013-01-24 18:54:33 -080019818 if ( pWDICtx->wdiLowLevelIndCB )
19819 {
19820 /*Notify UMAC of indication*/
19821 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19822 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019823
19824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019825}/*WDI_ProcessLowRSSIInd*/
19826
19827
19828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 an indication of this kind is being received over the
19831 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019832
19833 @param pWDICtx: pointer to the WLAN DAL context
19834 pEventData: pointer to the event information structure
19835
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 @see
19837 @return Result of the function call
19838*/
19839WDI_Status
19840WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019841(
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 WDI_ControlBlockType* pWDICtx,
19843 WDI_EventInfoType* pEventData
19844)
19845{
19846 WDI_Status wdiStatus;
19847 eHalStatus halStatus;
19848 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019849 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19851
19852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019854 -------------------------------------------------------------------------*/
19855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19856 ( NULL == pEventData->pEventData))
19857 {
19858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019863 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 /*-------------------------------------------------------------------------
19865 Extract indication and send it to UMAC
19866 -------------------------------------------------------------------------*/
19867 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19868 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019869 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019870
19871 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019872 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019873 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19874 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019875 if ( pWDICtx->wdiLowLevelIndCB )
19876 {
19877 /*Notify UMAC*/
19878 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19879 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019880
19881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019882}/*WDI_ProcessMissedBeaconInd*/
19883
19884
19885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019886 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 an indication of this kind is being received over the
19888 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019889
19890 @param pWDICtx: pointer to the WLAN DAL context
19891 pEventData: pointer to the event information structure
19892
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 @see
19894 @return Result of the function call
19895*/
19896WDI_Status
19897WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019898(
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 WDI_ControlBlockType* pWDICtx,
19900 WDI_EventInfoType* pEventData
19901)
19902{
19903 WDI_Status wdiStatus;
19904 eHalStatus halStatus;
19905 WDI_LowLevelIndType wdiInd;
19906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19907
19908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 -------------------------------------------------------------------------*/
19911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19912 ( NULL == pEventData->pEventData))
19913 {
19914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 }
19919
19920 /*-------------------------------------------------------------------------
19921 Extract indication and send it to UMAC
19922 -------------------------------------------------------------------------*/
19923 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19924 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019925 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019926
19927 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 /* ! TO DO - fill in from HAL struct:
19930 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19931
ltimariu034f7d62013-01-24 18:54:33 -080019932 if ( pWDICtx->wdiLowLevelIndCB )
19933 {
19934 /*Notify UMAC*/
19935 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19936 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019937
19938 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019939}/*WDI_ProcessUnkAddrFrameInd*/
19940
19941
19942/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019943 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 indication of this kind is being received over the bus
19945 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019946
19947 @param pWDICtx: pointer to the WLAN DAL context
19948 pEventData: pointer to the event information structure
19949
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 @see
19951 @return Result of the function call
19952*/
19953WDI_Status
19954WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019955(
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 WDI_ControlBlockType* pWDICtx,
19957 WDI_EventInfoType* pEventData
19958)
19959{
19960 WDI_LowLevelIndType wdiInd;
19961 tpSirMicFailureInd pHalMicFailureInd;
19962
19963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19964
19965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 -------------------------------------------------------------------------*/
19968 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19969 ( NULL == pEventData->pEventData))
19970 {
19971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019976
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19978 /*-------------------------------------------------------------------------
19979 Extract indication and send it to UMAC
19980 -------------------------------------------------------------------------*/
19981
19982 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19985 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19986 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19987 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19988 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19989 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19990 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19991 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019994 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 pHalMicFailureInd->info.keyId;
19998 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19999 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20000 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20001 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080020002
20003 if ( pWDICtx->wdiLowLevelIndCB )
20004 {
20005 /*Notify UMAC*/
20006 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20007 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020008
20009 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020010}/*WDI_ProcessMicFailureInd*/
20011
20012
20013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020014 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 an indication of this kind is being received over the
20016 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020017
20018 @param pWDICtx: pointer to the WLAN DAL context
20019 pEventData: pointer to the event information structure
20020
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 @see
20022 @return Result of the function call
20023*/
20024WDI_Status
20025WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020026(
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 WDI_ControlBlockType* pWDICtx,
20028 WDI_EventInfoType* pEventData
20029)
20030{
20031 WDI_Status wdiStatus;
20032 eHalStatus halStatus;
20033 WDI_LowLevelIndType wdiInd;
20034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20035
20036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 -------------------------------------------------------------------------*/
20039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20040 ( NULL == pEventData->pEventData))
20041 {
20042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 }
20047
20048 /*-------------------------------------------------------------------------
20049 Extract indication and send it to UMAC
20050 -------------------------------------------------------------------------*/
20051
20052 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20053 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020055
20056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20057 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020058
Jeff Johnson295189b2012-06-20 16:38:30 -070020059 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020060 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20061 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062
ltimariu034f7d62013-01-24 18:54:33 -080020063 if ( pWDICtx->wdiLowLevelIndCB )
20064 {
20065 /*Notify UMAC*/
20066 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20067 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020068
20069 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020070}/*WDI_ProcessFatalErrorInd*/
20071
20072/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 an indication of this kind is being received over the
20075 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020076
20077 @param pWDICtx: pointer to the WLAN DAL context
20078 pEventData: pointer to the event information structure
20079
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 @see
20081 @return Result of the function call
20082*/
20083WDI_Status
20084WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020085(
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 WDI_ControlBlockType* pWDICtx,
20087 WDI_EventInfoType* pEventData
20088)
20089{
20090 tDeleteStaContextParams halDelSTACtx;
20091 WDI_LowLevelIndType wdiInd;
20092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20093
20094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 -------------------------------------------------------------------------*/
20097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20098 ( NULL == pEventData->pEventData))
20099 {
20100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 }
20105
20106 /*-------------------------------------------------------------------------
20107 Extract indication and send it to UMAC
20108 -------------------------------------------------------------------------*/
20109
20110 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 wpalMemoryCopy( &halDelSTACtx,
20112 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 sizeof(halDelSTACtx));
20114
20115 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020116 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020117
20118 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20119 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20120 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20121 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20122
Jeff Johnsone7245742012-09-05 17:12:55 -070020123 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020125 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020126 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20128 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020129
ltimariu034f7d62013-01-24 18:54:33 -080020130 if ( pWDICtx->wdiLowLevelIndCB )
20131 {
20132 /*Notify UMAC*/
20133 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20134 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020135
20136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020137}/*WDI_ProcessDelSTAInd*/
20138
20139/**
20140*@brief Process Coex Indication function (called when
20141 an indication of this kind is being received over the
20142 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020143
20144 @param pWDICtx: pointer to the WLAN DAL context
20145 pEventData: pointer to the event information structure
20146
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 @see
20148 @return Result of the function call
20149*/
20150WDI_Status
20151WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020152(
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 WDI_ControlBlockType* pWDICtx,
20154 WDI_EventInfoType* pEventData
20155)
20156{
20157 WDI_LowLevelIndType wdiInd;
20158 tCoexIndMsg halCoexIndMsg;
20159 wpt_uint32 index;
20160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20161
20162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 -------------------------------------------------------------------------*/
20165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20166 ( NULL == pEventData->pEventData ))
20167 {
20168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 }
20173
20174 /*-------------------------------------------------------------------------
20175 Extract indication and send it to UMAC
20176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20178 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 sizeof(halCoexIndMsg.coexIndParams) );
20180
20181 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 wdiInd.wdiIndicationType = WDI_COEX_IND;
20183 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20185 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020186 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020187 }
20188
20189 // DEBUG
20190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20191 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20193 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20194 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20195 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20196 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020197
ltimariu034f7d62013-01-24 18:54:33 -080020198 if ( pWDICtx->wdiLowLevelIndCB )
20199 {
20200 /*Notify UMAC*/
20201 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20202 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020203
20204 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020205}/*WDI_ProcessCoexInd*/
20206
20207/**
20208*@brief Process Tx Complete Indication function (called when
20209 an indication of this kind is being received over the
20210 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020211
20212 @param pWDICtx: pointer to the WLAN DAL context
20213 pEventData: pointer to the event information structure
20214
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 @see
20216 @return Result of the function call
20217*/
20218WDI_Status
20219WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020220(
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 WDI_ControlBlockType* pWDICtx,
20222 WDI_EventInfoType* pEventData
20223)
20224{
20225 WDI_LowLevelIndType wdiInd;
20226 tTxComplIndMsg halTxComplIndMsg;
20227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20228
20229 /*-------------------------------------------------------------------------
20230 Sanity check
20231 -------------------------------------------------------------------------*/
20232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20233 ( NULL == pEventData->pEventData ))
20234 {
20235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020236 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 WDI_ASSERT( 0 );
20238 return WDI_STATUS_E_FAILURE;
20239 }
20240
20241 /*-------------------------------------------------------------------------
20242 Extract indication and send it to UMAC
20243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020244 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20245 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 sizeof(halTxComplIndMsg.txComplParams) );
20247
20248 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20250 wdiInd.wdiIndicationData.tx_complete_status
20251 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020252
ltimariu034f7d62013-01-24 18:54:33 -080020253 if ( pWDICtx->wdiLowLevelIndCB )
20254 {
20255 /*Notify UMAC*/
20256 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20257 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020258
20259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020260}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020261#ifdef FEATURE_WLAN_TDLS
20262/**
20263*@brief Process TDLS Indication function (called when
20264 an indication of this kind is being received over the
20265 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020266
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020267 @param pWDICtx: pointer to the WLAN DAL context
20268 pEventData: pointer to the event information structure
20269
20270 @see
20271 @return Result of the function call
20272*/
20273WDI_Status
20274WDI_ProcessTdlsInd
20275(
20276 WDI_ControlBlockType* pWDICtx,
20277 WDI_EventInfoType* pEventData
20278)
20279{
20280 WDI_LowLevelIndType wdiInd;
20281 tTdlsIndMsg halTdlsIndMsg;
20282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20283
20284 /*-------------------------------------------------------------------------
20285 Sanity check
20286 -------------------------------------------------------------------------*/
20287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20288 ( NULL == pEventData->pEventData ))
20289 {
20290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20291 "%s: Invalid parameters", __func__);
20292 WDI_ASSERT( 0 );
20293 return WDI_STATUS_E_FAILURE;
20294 }
20295
20296 /*-------------------------------------------------------------------------
20297 Extract indication and send it to UMAC
20298 -------------------------------------------------------------------------*/
20299 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20300 pEventData->pEventData,
20301 sizeof(halTdlsIndMsg.tdlsIndParams) );
20302
20303 /*Fill in the indication parameters*/
20304 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20305
20306 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20307 = halTdlsIndMsg.tdlsIndParams.status;
20308
20309 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20310 = halTdlsIndMsg.tdlsIndParams.staIdx;
20311
20312 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20313 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20314
20315 /*Notify UMAC*/
20316 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20317
20318 return WDI_STATUS_SUCCESS;
20319}/*WDI_ProcessTdlsInd*/
20320#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020321/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020322*@brief Process Noa Start Indication function (called when
20323 an indication of this kind is being received over the
20324 bus from HAL)
20325
20326 @param pWDICtx: pointer to the WLAN DAL context
20327 pEventData: pointer to the event information structure
20328
20329 @see
20330 @return Result of the function call
20331*/
20332WDI_Status
20333WDI_ProcessP2pNoaStartInd
20334(
20335 WDI_ControlBlockType* pWDICtx,
20336 WDI_EventInfoType* pEventData
20337)
20338{
20339 WDI_LowLevelIndType wdiInd;
20340 tNoaStartIndMsg halNoaStartIndMsg;
20341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20342
20343 /*-------------------------------------------------------------------------
20344 Sanity check
20345 -------------------------------------------------------------------------*/
20346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20347 ( NULL == pEventData->pEventData ))
20348 {
20349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20350 "%s: Invalid parameters", __func__);
20351 WDI_ASSERT( 0 );
20352 return WDI_STATUS_E_FAILURE;
20353 }
20354
20355 /*-------------------------------------------------------------------------
20356 Extract indication and send it to UMAC
20357 -------------------------------------------------------------------------*/
20358 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20359 pEventData->pEventData,
20360 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20361
20362 /*Fill in the indication parameters*/
20363 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20364
20365 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20366 = halNoaStartIndMsg.noaStartIndParams.status;
20367
20368 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20369 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20370
20371 /*Notify UMAC*/
20372 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20373
20374 return WDI_STATUS_SUCCESS;
20375}/*WDI_ProcessNoaAttrInd*/
20376
20377/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020378*@brief Process Noa Attr Indication function (called when
20379 an indication of this kind is being received over the
20380 bus from HAL)
20381
20382 @param pWDICtx: pointer to the WLAN DAL context
20383 pEventData: pointer to the event information structure
20384
20385 @see
20386 @return Result of the function call
20387*/
20388WDI_Status
20389WDI_ProcessP2pNoaAttrInd
20390(
20391 WDI_ControlBlockType* pWDICtx,
20392 WDI_EventInfoType* pEventData
20393)
20394{
20395 WDI_LowLevelIndType wdiInd;
20396 tNoaAttrIndMsg halNoaAttrIndMsg;
20397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20398
20399 /*-------------------------------------------------------------------------
20400 Sanity check
20401 -------------------------------------------------------------------------*/
20402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20403 ( NULL == pEventData->pEventData ))
20404 {
20405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 WDI_ASSERT( 0 );
20408 return WDI_STATUS_E_FAILURE;
20409 }
20410
20411 /*-------------------------------------------------------------------------
20412 Extract indication and send it to UMAC
20413 -------------------------------------------------------------------------*/
20414 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20415 pEventData->pEventData,
20416 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20417
20418 /*Fill in the indication parameters*/
20419 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020420
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20422 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020423
Jeff Johnson295189b2012-06-20 16:38:30 -070020424 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20425 = halNoaAttrIndMsg.noaAttrIndParams.index;
20426 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20427 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20428 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20429 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020430
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20432 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20433 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20434 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20435 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20436 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20437 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20438 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020439
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20441 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20442 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20443 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20444 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20445 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20446 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20447 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20448
ltimariu034f7d62013-01-24 18:54:33 -080020449 if ( pWDICtx->wdiLowLevelIndCB )
20450 {
20451 /*Notify UMAC*/
20452 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20453 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020454
20455 return WDI_STATUS_SUCCESS;
20456}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020457
20458/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020459 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 an indication of this kind is being received over the
20461 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020462
20463 @param pWDICtx: pointer to the WLAN DAL context
20464 pEventData: pointer to the event information structure
20465
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 @see
20467 @return Result of the function call
20468*/
20469WDI_Status
20470WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020471(
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 WDI_ControlBlockType* pWDICtx,
20473 WDI_EventInfoType* pEventData
20474)
20475{
20476 WDI_LowLevelIndType wdiInd;
20477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020478
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 /*-------------------------------------------------------------------------
20480 Extract indication and send it to UMAC
20481 -------------------------------------------------------------------------*/
20482 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20484
ltimariu034f7d62013-01-24 18:54:33 -080020485 if ( pWDICtx->wdiLowLevelIndCB )
20486 {
20487 /*Notify UMAC*/
20488 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20489 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020490
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020492}/*WDI_ProcessTxPerHitInd*/
20493
Jeff Johnson295189b2012-06-20 16:38:30 -070020494/**
Yue Ma365933a2013-08-14 15:59:08 -070020495 @brief Process Periodic Tx Pattern Fw Indication function
20496
20497 @param pWDICtx: pointer to the WLAN DAL context
20498 pEventData: pointer to the event information structure
20499
20500 @see
20501 @return Result of the function call
20502*/
20503WDI_Status
20504WDI_ProcessPeriodicTxPtrnFwInd
20505(
20506 WDI_ControlBlockType* pWDICtx,
20507 WDI_EventInfoType* pEventData
20508)
20509{
20510 WDI_LowLevelIndType wdiInd;
20511
20512 /*-------------------------------------------------------------------------
20513 Sanity check
20514 -------------------------------------------------------------------------*/
20515 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20516 (NULL == pEventData->pEventData))
20517 {
20518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20519 "%s: Invalid parameters", __func__);
20520 WDI_ASSERT(0);
20521 return WDI_STATUS_E_FAILURE;
20522 }
20523
20524 /*-------------------------------------------------------------------------
20525 Extract indication and send it to UMAC
20526 -------------------------------------------------------------------------*/
20527 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20528 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20529 sizeof(tHalPeriodicTxPtrnFwInd));
20530
20531 if (pWDICtx->wdiLowLevelIndCB)
20532 {
20533 /*Notify UMAC*/
20534 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20535 }
20536
20537 return WDI_STATUS_SUCCESS;
20538}
20539
20540/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 @brief WDI_ProcessFTMCommandReq
20542 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020543
20544 @param pWDICtx: pointer to the WLAN DAL context
20545 pEventData: pointer to the event information structure
20546
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 @see
20548 @return Result of the function call
20549*/
20550WDI_Status
20551WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020552(
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 WDI_ControlBlockType* pWDICtx,
20554 WDI_EventInfoType* pEventData
20555)
20556{
20557 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20558 wpt_uint8 *ftmCommandBuffer = NULL;
20559 wpt_uint16 dataOffset;
20560 wpt_uint16 bufferSize;
20561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 -------------------------------------------------------------------------*/
20564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20565 ( NULL == pEventData->pEventData))
20566
20567 {
20568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 }
20573
20574 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20575
20576 /* Get MSG Buffer */
20577 WDI_GetMessageBuffer(pWDICtx,
20578 WDI_FTM_CMD_REQ,
20579 ftmCommandReq->bodyLength,
20580 &ftmCommandBuffer,
20581 &dataOffset,
20582 &bufferSize);
20583
20584 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20585 ftmCommandReq->FTMCommandBody,
20586 ftmCommandReq->bodyLength);
20587
20588 /* Send MSG */
20589 return WDI_SendMsg(pWDICtx,
20590 ftmCommandBuffer,
20591 bufferSize,
20592 pEventData->pCBfnc,
20593 pEventData->pUserData,
20594 WDI_FTM_CMD_RESP);
20595}
20596
20597/**
20598 @brief WDI_ProcessFTMCommandRsp
20599 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020600
20601 @param pWDICtx: pointer to the WLAN DAL context
20602 pEventData: pointer to the event information structure
20603
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 @see
20605 @return Result of the function call
20606*/
20607WDI_Status
20608WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020609(
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 WDI_ControlBlockType* pWDICtx,
20611 WDI_EventInfoType* pEventData
20612)
20613{
20614 WDI_FTMCommandRspCb ftmCMDRspCb;
20615 tProcessPttRspParams *ftmCMDRspData = NULL;
20616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20617
20618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 -------------------------------------------------------------------------*/
20621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20622 ( NULL == pEventData->pEventData))
20623 {
20624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 }
20629
20630 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20631
20632 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20633
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20635 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20637
20638 /*Notify UMAC*/
20639 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20640
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020642}
Jeff Johnson295189b2012-06-20 16:38:30 -070020643/**
20644 @brief WDI_ProcessHalDumpCmdReq
20645 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020646
20647 @param pWDICtx: pointer to the WLAN DAL context
20648 pEventData: pointer to the event information structure
20649
Jeff Johnson295189b2012-06-20 16:38:30 -070020650 @see
20651 @return Result of the function call
20652*/
20653WDI_Status
20654WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020655(
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 WDI_ControlBlockType* pWDICtx,
20657 WDI_EventInfoType* pEventData
20658)
20659{
20660 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20661 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20662 wpt_uint16 usDataOffset = 0;
20663 wpt_uint16 usSendSize = 0;
20664 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020666
20667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 -------------------------------------------------------------------------*/
20670 if (( NULL == pEventData ) ||
20671 ( NULL == pEventData->pEventData) ||
20672 ( NULL == pEventData->pCBfnc ))
20673 {
20674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020678 }
20679
20680 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20681 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20682
20683 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020694
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 /*-----------------------------------------------------------------------
20696 Get message buffer
20697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20700 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20703 {
20704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020705 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 }
20710
Jeff Johnsone7245742012-09-05 17:12:55 -070020711 wpalMemoryCopy( pSendBuffer+usDataOffset,
20712 &halDumpCmdReqMsg.dumpCmdReqParams,
20713 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020714
20715 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020716 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020717
20718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20722 wdiHALDumpCmdRspCb, pEventData->pUserData,
20723 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020724}
20725
20726/**
20727 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020728 Process hal Dump Command Response from HAL, simply route to HDD
20729
20730 @param pWDICtx: pointer to the WLAN DAL context
20731 pEventData: pointer to the event information structure
20732
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 @see
20734 @return Result of the function call
20735*/
20736WDI_Status
20737WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020738(
Jeff Johnson295189b2012-06-20 16:38:30 -070020739 WDI_ControlBlockType* pWDICtx,
20740 WDI_EventInfoType* pEventData
20741)
20742{
20743 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020744 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020745 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20746
20747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 -------------------------------------------------------------------------*/
20750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20751 ( NULL == pEventData->pEventData))
20752 {
20753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 }
20758
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020760
20761 /*Initialize the WDI Response structure */
20762 wdiHALDumpCmdRsp.usBufferLen = 0;
20763 wdiHALDumpCmdRsp.pBuffer = NULL;
20764
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020765 wpalMemoryCopy( &halDumpCmdRspParams,
20766 pEventData->pEventData,
20767 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020768
20769 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020770 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020771
20772 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020773 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020774 {
20775 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020776 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20777 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20778
20779 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20780 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020781 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020783
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 /*Notify UMAC*/
20785 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20786
20787 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20788 {
20789 /* Free the allocated buffer */
20790 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20791 }
20792 return WDI_STATUS_SUCCESS;
20793}
20794
20795/*==========================================================================
20796 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020797
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020800==========================================================================*/
20801/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 when it wishes to send up a notification like the ones
20804 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020805
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020807
20808 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 wctsNotifyCBData: the callback data of the user
20811
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020813
20814 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020815*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020816void
Jeff Johnson295189b2012-06-20 16:38:30 -070020817WDI_NotifyMsgCTSCB
20818(
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 WCTS_NotifyEventType wctsEvent,
20821 void* wctsNotifyCBData
20822)
20823{
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20826
20827 if (NULL == pWDICtx )
20828 {
20829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 }
20834
20835 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20836 {
20837 /* callback presumably occurred after close */
20838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020839 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020840 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 }
20842
20843 if ( WCTS_EVENT_OPEN == wctsEvent )
20844 {
20845 /*Flag must be set atomically as it is checked from incoming request
20846 functions*/
20847 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020849
20850 /*Nothing to do - so try to dequeue any pending request that may have
20851 occurred while we were trying to establish this*/
20852 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020856 {
20857 /*Flag must be set atomically as it is checked from incoming request
20858 functions*/
20859 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861
20862 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 wpalMutexRelease(&pWDICtx->wptMutex);
20865
20866 /*Notify that the Control Channel is closed */
20867 wpalEventSet(&pWDICtx->wctsActionEvent);
20868 }
20869
20870}/*WDI_NotifyMsgCTSCB*/
20871
20872
20873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 when it wishes to send up a packet received over the
20876 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020877
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020879
20880 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 pMsg: the packet
20882 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 wctsRxMsgCBData: the callback data of the user
20884
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020886
20887 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020888*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020889void
20890WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020891(
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 void* pMsg,
20894 wpt_uint32 uLen,
20895 void* wctsRxMsgCBData
20896)
20897{
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 tHalMsgHeader *pHalMsgHeader;
20899 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20902
20903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020906 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 ( uLen < sizeof(tHalMsgHeader)))
20908 {
20909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 }
20914
20915 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20916 {
20917 /* callback presumably occurred after close */
20918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020919 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 }
20922
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 context - so no serialization is necessary here
20925 ! - revisit this assumption */
20926
20927 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20928
20929 if ( uLen != pHalMsgHeader->msgLen )
20930 {
20931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20932 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020933 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20934 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 }
20936
20937 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20938
20939 /*The message itself starts after the header*/
20940 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20941 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20942 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20943 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20944
20945
20946 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20947 {
20948 /*Stop the timer as the response was received */
20949 /*!UT - check for potential race conditions between stop and response */
20950 wpalTimerStop(&pWDICtx->wptResponseTimer);
20951 }
20952 /* Check if we receive a response message which is not expected */
20953 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20954 {
20955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20956 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20957 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020958 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20960 pWDICtx->wdiExpectedResponse);
Sameer Thalappilad723582013-11-15 14:50:51 -080020961
20962 if (gWDICb.bEnableSSR == false)
20963 {
20964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20965 "SSR is not enabled on WDI timeout");
20966 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20967 return;
20968 }
20969 wpalWcnssResetIntr();
20970 /* if this timer fires, it means Riva did not receive the FIQ */
20971 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
20972
Jeff Johnson295189b2012-06-20 16:38:30 -070020973 return;
20974 }
20975
20976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20977 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20978
20979 /*Post response event to the state machine*/
20980 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20981
20982}/*WDI_RXMsgCTSCB*/
20983
20984
20985/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020987========================================================================*/
20988
20989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020992
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 @param pWDICtx - pointer to the control block
20994
20995 @return Result of the function call
20996*/
20997WPT_INLINE WDI_Status
20998WDI_CleanCB
20999(
21000 WDI_ControlBlockType* pWDICtx
21001)
21002{
21003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21004
21005 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021007
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21010 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21011
21012 WDI_ResetAssocSessions( pWDICtx );
21013
21014 return WDI_STATUS_SUCCESS;
21015}/*WDI_CleanCB*/
21016
21017
21018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021020
Jeff Johnsone7245742012-09-05 17:12:55 -070021021
21022 @param pWDICtx: pointer to the WLAN DAL context
21023 pEventData: pointer to the event information structure
21024
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 @see
21026 @return Result of the function call
21027*/
21028WPT_INLINE WDI_Status
21029WDI_ProcessRequest
21030(
21031 WDI_ControlBlockType* pWDICtx,
21032 WDI_EventInfoType* pEventData
21033)
21034{
21035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21036
Jeff Johnsone7245742012-09-05 17:12:55 -070021037 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 already checked these pointers*/
21039
21040 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21041 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021044 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 WDI_getReqMsgString(pEventData->wdiRequest),
21046 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21047 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21048 }
21049 else
21050 {
21051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 pEventData->wdiRequest);
21054 return WDI_STATUS_E_NOT_IMPLEMENT;
21055 }
21056}/*WDI_ProcessRequest*/
21057
21058
21059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021062 prefixes it with a send message header
21063
21064 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 wdiReqType: type of the request being sent
21066 uBufferLen: message buffer len
21067 pMsgBuffer: resulting allocated buffer
21068 pusDataOffset: offset in the buffer where the caller
21069 can start copying its message data
21070 puBufferSize: the resulting buffer size (offset+buff
21071 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021072
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 @see
21074 @return Result of the function call
21075*/
21076WDI_Status
21077WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021078(
21079 WDI_ControlBlockType* pWDICtx,
21080 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 wpt_uint8** pMsgBuffer,
21083 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 wpt_uint16* pusBufferSize
21085)
21086{
21087 tHalMsgHeader halMsgHeader;
21088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21089
Jeff Johnsone7245742012-09-05 17:12:55 -070021090 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 again*/
21092
21093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21098 if ( NULL == *pMsgBuffer )
21099 {
21100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21101 "Unable to allocate message buffer for req %s (%d)",
21102 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021103 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021105 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021106 }
21107
21108 /*-------------------------------------------------------------------------
21109 Fill in the message header
21110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21112 /* Fill msgVersion */
21113#ifdef WLAN_FEATURE_11AC
21114 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021115 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 else
21117#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021118 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021119
Jeff Johnsone7245742012-09-05 17:12:55 -070021120 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21121 *pusDataOffset = sizeof(halMsgHeader);
21122 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21123
21124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125}/*WDI_GetMessageBuffer*/
21126
21127
21128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 the CB
21132
21133 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021135
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 usSendSize size of the buffer to be sent
21137 pRspCb: response callback - save in the WDI
21138 CB
21139 pUserData: user data associated with the
21140 callback
21141 wdiExpectedResponse: the code of the response that is
21142 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021143
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 @see
21145 @return Result of the function call
21146*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021148WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021149(
21150 WDI_ControlBlockType* pWDICtx,
21151 wpt_uint8* pSendBuffer,
21152 wpt_uint32 usSendSize,
21153 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 void* pUserData,
21155 WDI_ResponseEnumType wdiExpectedResponse
21156)
21157{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021158 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021159 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21161
21162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 ------------------------------------------------------------------------*/
21165 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021166 pWDICtx->pfncRspCB = pRspCb;
21167 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021168
21169 /*-----------------------------------------------------------------------
21170 Call the CTS to send this message over - free message afterwards
21171 - notify transport failure
21172 Note: CTS is reponsible for freeing the message buffer.
21173 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021174 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21175 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21176 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 "Failed to send message over the bus - catastrophic failure");
21180
Jeff Johnsond13512a2012-07-17 11:42:19 -070021181 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021183 else
21184 {
21185 /* even when message was placed in CTS deferred Q, we will treat it
21186 success but log this info
21187 */
21188 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21189 {
21190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21191 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21192 "response %s (%d)",
21193 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21194 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021195 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021196 }
21197 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021198
Jeff Johnsond13512a2012-07-17 11:42:19 -070021199 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 if ( NULL != pWDICtx->wdiReqStatusCB )
21201 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021202 /*Inform originator whether request went through or not*/
21203 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21204 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 pWDICtx->wdiReqStatusCB = NULL;
21206 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021207 callback(wdiStatus, callbackContext);
21208
21209 /*For WDI requests which have registered a request callback,
21210 inform the WDA caller of the same via setting the return value
21211 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21212 end up repeating the functonality in the req callback for the
21213 WDI_STATUS_E_FAILURE case*/
21214 if (wdiStatus == WDI_STATUS_E_FAILURE)
21215 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 }
21217
Jeff Johnsond13512a2012-07-17 11:42:19 -070021218 if ( wdiStatus == WDI_STATUS_SUCCESS )
21219 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 /*Start timer for the expected response */
21221 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021222
21223 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021224 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021225 }
21226 else
21227 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021228 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021229 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21230 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021231
Jeff Johnsond13512a2012-07-17 11:42:19 -070021232 return wdiStatus;
21233
Jeff Johnson295189b2012-06-20 16:38:30 -070021234}/*WDI_SendMsg*/
21235
21236
21237
21238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021239 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 the bus using the control transport and saves some info
21241 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021242
21243 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021244 pSendBuffer: buffer to be sent
21245 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021246
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 @see
21248 @return Result of the function call
21249*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021250WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021251WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021252(
21253 WDI_ControlBlockType* pWDICtx,
21254 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 wpt_uint32 usSendSize
21256)
21257{
21258 wpt_uint32 uStatus ;
21259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21260
21261 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 Note: CTS is reponsible for freeing the message buffer.
21264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021265 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021266 (void*)pSendBuffer, usSendSize );
21267
21268 /*Inform Upper MAC about the outcome of the request*/
21269 if ( NULL != pWDICtx->wdiReqStatusCB )
21270 {
21271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21272 "Send indication status : %d", uStatus);
21273
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021274 /* even if CTS placed indication into its deferred Q, we treat it
21275 * as success and let CTS drain its queue as per smd interrupt to CTS
21276 */
21277 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 -070021278 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021279 }
21280
21281 /*If sending of the message failed - it is considered catastrophic and
21282 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021283 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21284 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21285
Jeff Johnson295189b2012-06-20 16:38:30 -070021286 {
21287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021289
21290 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21291 return WDI_STATUS_E_FAILURE;
21292 }
21293
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021295}/*WDI_SendIndication*/
21296
21297
21298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 @brief WDI_DetectedDeviceError - called internally by DAL when
21300 it has detected a failure in the device
21301
21302 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021303 usErrorCode: error code detected by WDI or received
21304 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021305
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021308*/
21309void
21310WDI_DetectedDeviceError
21311(
21312 WDI_ControlBlockType* pWDICtx,
21313 wpt_uint16 usErrorCode
21314)
21315{
21316 WDI_LowLevelIndType wdiInd;
21317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21318
21319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21320 "Device Error detected code: %d - transitioning to stopped state",
21321 usErrorCode);
21322
21323 wpalMutexAcquire(&pWDICtx->wptMutex);
21324
21325 WDI_STATableStop(pWDICtx);
21326
21327 WDI_ResetAssocSessions(pWDICtx);
21328
21329 /*Set the expected state transition to stopped - because the device
21330 experienced a failure*/
21331 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21332
21333 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021335
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021337
21338 /*TO DO: - there should be an attempt to reset the device here*/
21339
21340 wpalMutexRelease(&pWDICtx->wptMutex);
21341
21342 /*------------------------------------------------------------------------
21343 Notify UMAC if a handler is registered
21344 ------------------------------------------------------------------------*/
21345 if (pWDICtx->wdiLowLevelIndCB)
21346 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21348 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021349
21350 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21351 }
21352}/*WDI_DetectedDeviceError*/
21353
21354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 we started on send message has expire - this should
21357 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 reply - trigger catastrophic failure
21359 @param
21360
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021362
21363 @see
21364 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021365*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021366void
Jeff Johnson295189b2012-06-20 16:38:30 -070021367WDI_ResponseTimerCB
21368(
21369 void *pUserData
21370)
21371{
21372 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21374
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021375 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 }
21382
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021383 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021384 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021385
21386 /* If response timer is running at this time that means this timer
21387 * event is not for the last request but rather last-to-last request and
21388 * this timer event has come after we recevied respone for last-to-last
21389 * message
21390 */
21391 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21392 {
21393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21394 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021395 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021396 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21397 return;
21398 }
21399
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021400 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 {
21402
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021405 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021407 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21408 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021409
21410 /* WDI timeout means Riva is not responding or SMD communication to Riva
21411 * is not happening. The only possible way to recover from this error
21412 * is to initiate SSR from APPS.
21413 * There is also an option to re-enable wifi, which will eventually
21414 * trigger SSR
21415 */
21416 if (gWDICb.bEnableSSR == false)
21417 {
21418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21419 "SSR is not enabled on WDI timeout");
21420 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21421 return;
21422 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021423#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021424 wpalWcnssResetIntr();
21425 /* if this timer fires, it means Riva did not receive the FIQ */
21426 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021427#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021428 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21429 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021430#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 }
21432 else
21433 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021435 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021436 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021437 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21438 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 }
21440
21441 return;
21442
21443}/*WDI_ResponseTimerCB*/
21444
21445
21446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021448
Jeff Johnsone7245742012-09-05 17:12:55 -070021449
21450 @param pWDICtx: pointer to the WLAN DAL context
21451 pEventData: pointer to the event information structure
21452
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 @see
21454 @return Result of the function call
21455*/
21456WPT_INLINE WDI_Status
21457WDI_ProcessResponse
21458(
21459 WDI_ControlBlockType* pWDICtx,
21460 WDI_EventInfoType* pEventData
21461)
21462{
21463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21464
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 already checked these pointers
21467 ! - revisit this assumption */
21468 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21469 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021472 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 WDI_getRespMsgString(pEventData->wdiResponse),
21474 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21475 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21476 }
21477 else
21478 {
21479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 pEventData->wdiResponse);
21482 return WDI_STATUS_E_NOT_IMPLEMENT;
21483 }
21484}/*WDI_ProcessResponse*/
21485
21486
21487/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021489=========================================================================*/
21490
21491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021492 @brief Utility function used by the DAL Core to help queue a
21493 request that cannot be processed right away.
21494 @param
21495
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 pWDICtx: - pointer to the WDI control block
21497 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 queued
21499
21500 @see
21501 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021502*/
21503WDI_Status
21504WDI_QueuePendingReq
21505(
21506 WDI_ControlBlockType* pWDICtx,
21507 WDI_EventInfoType* pEventData
21508)
21509{
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21514
21515 if ( NULL == pEventDataQueue )
21516 {
21517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 WDI_ASSERT(0);
21520 return WDI_STATUS_MEM_FAILURE;
21521 }
21522
21523 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21524 pEventDataQueue->pUserData = pEventData->pUserData;
21525 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21526 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528
21529 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21530 {
21531 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021532
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 if ( NULL == pEventInfo )
21534 {
21535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 WDI_ASSERT(0);
21538 wpalMemoryFree(pEventDataQueue);
21539 return WDI_STATUS_MEM_FAILURE;
21540 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021541
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21543
21544 }
21545 pEventDataQueue->pEventData = pEventInfo;
21546
21547 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021551
21552 return WDI_STATUS_SUCCESS;
21553}/*WDI_QueuePendingReq*/
21554
21555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 @param
21559
21560 pMsg - pointer to the message
21561
21562 @see
21563 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021564*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021565void
Jeff Johnson295189b2012-06-20 16:38:30 -070021566WDI_PALCtrlMsgCB
21567(
21568 wpt_msg *pMsg
21569)
21570{
21571 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 WDI_ControlBlockType* pWDICtx = NULL;
21573 WDI_Status wdiStatus;
21574 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 void* pUserData;
21576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21577
21578 if (( NULL == pMsg )||
21579 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21580 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21581 {
21582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021585 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021586 }
21587
21588 /*Transition back to the state that we had before serialization
21589 - serialization transitions us to BUSY to stop any incomming requests
21590 ! TO DO L: possible race condition here if a request comes in between the
21591 state transition and the post function*/
21592
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021594
21595 /*-----------------------------------------------------------------------
21596 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021597 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 -----------------------------------------------------------------------*/
21599 switch ( pEventData->wdiRequest )
21600 {
21601
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21604 break;
21605
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 case WDI_NV_DOWNLOAD_REQ:
21607 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21608 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21609 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21610 {
21611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021612 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21614 }
21615 else
21616 {
21617 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21618 }
21619
21620 break;
21621
21622 default:
21623 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21624 break;
21625 }/*switch ( pEventData->wdiRequest )*/
21626
21627 if ( WDI_STATUS_SUCCESS != wdiStatus )
21628 {
21629 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21630
21631 if ( NULL != pfnReqStatusCB )
21632 {
21633 /*Fail the request*/
21634 pfnReqStatusCB( wdiStatus, pUserData);
21635 }
21636 }
21637
21638 /* Free data - that was allocated when queueing*/
21639 if( pEventData != NULL )
21640 {
21641 if( pEventData->pEventData != NULL )
21642 {
21643 wpalMemoryFree(pEventData->pEventData);
21644 }
21645 wpalMemoryFree(pEventData);
21646 }
21647
21648 if( pMsg != NULL )
21649 {
21650 wpalMemoryFree(pMsg);
21651 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021652
Jeff Johnson295189b2012-06-20 16:38:30 -070021653}/*WDI_PALCtrlMsgCB*/
21654
21655/**
21656 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 and schedule for execution a pending request
21658 @param
21659
Jeff Johnson295189b2012-06-20 16:38:30 -070021660 pWDICtx: - pointer to the WDI control block
21661 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 queued
21663
21664 @see
21665 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021666*/
21667WDI_Status
21668WDI_DequeuePendingReq
21669(
21670 WDI_ControlBlockType* pWDICtx
21671)
21672{
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21677
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021679
21680 if ( NULL == pNode )
21681 {
21682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021683 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021684 return WDI_STATUS_SUCCESS;
21685 }
21686
21687 /*The node actually points to the 1st element inside the Event Data struct -
21688 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021690
21691 /*Serialize processing in the control thread
21692 !TO DO: - check to see if these are all the messages params that need
21693 to be filled in*/
21694 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21695
21696 if ( NULL == palMsg )
21697 {
21698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021704 palMsg->callback = WDI_PALCtrlMsgCB;
21705 palMsg->ptr = pEventData;
21706
21707 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021708 palMsg->val = pWDICtx->uGlobalState;
Leo Chang6e358542013-12-17 13:35:00 -080021709 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 /*Transition back to BUSY as we need to handle a queued request*/
21712 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021713
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21715
21716 return WDI_STATUS_PENDING;
21717}/*WDI_DequeuePendingReq*/
21718
21719
21720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021723 away.- The assoc requests will be queued by BSSID
21724 @param
21725
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 pWDICtx: - pointer to the WDI control block
21727 pEventData: pointer to the evnt info that needs to be queued
21728 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021729
21730 @see
21731 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021732*/
21733WDI_Status
21734WDI_QueueNewAssocRequest
21735(
21736 WDI_ControlBlockType* pWDICtx,
21737 WDI_EventInfoType* pEventData,
21738 wpt_macAddr macBSSID
21739)
21740{
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 wpt_uint8 i;
21742 WDI_BSSSessionType* pSession = NULL;
21743 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 void* pEventInfo;
21746 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021748
Jeff Johnsone7245742012-09-05 17:12:55 -070021749
21750 /*------------------------------------------------------------------------
21751 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 ------------------------------------------------------------------------*/
21753 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21754 {
21755 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21756 {
21757 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021758 pSession = &pWDICtx->aBSSSessions[i];
21759 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 }
21761 }
21762
21763 if ( i >= WDI_MAX_BSS_SESSIONS )
21764 {
21765 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021768
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 /*------------------------------------------------------------------------
21770 Fill in the BSSID for this session and set the usage flag
21771 ------------------------------------------------------------------------*/
21772 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021773 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021774
21775 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021776 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 ------------------------------------------------------------------------*/
21778 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21779 if ( NULL == pEventDataQueue )
21780 {
21781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021782 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 WDI_ASSERT(0);
21784 return WDI_STATUS_MEM_FAILURE;
21785 }
21786
21787 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21788 if ( NULL == pSessionIdElement )
21789 {
21790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021791 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021792 WDI_ASSERT(0);
21793 wpalMemoryFree(pEventDataQueue);
21794 return WDI_STATUS_MEM_FAILURE;
21795 }
21796
21797 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21798 if ( NULL == pEventInfo )
21799 {
21800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021801 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021802 WDI_ASSERT(0);
21803 wpalMemoryFree(pSessionIdElement);
21804 wpalMemoryFree(pEventDataQueue);
21805 return WDI_STATUS_MEM_FAILURE;
21806 }
21807
21808 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21809 pEventDataQueue->pUserData = pEventData->pUserData;
21810 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21811 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021813
21814 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21815 pEventDataQueue->pEventData = pEventInfo;
21816
21817 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021819
21820 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021822
Jeff Johnsone7245742012-09-05 17:12:55 -070021823 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021824
21825 /*We need to maintain a separate list that keeps track of the order in which
21826 the new assoc requests are being queued such that we can start processing
21827 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 pSessionIdElement->ucIndex = i;
21829 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021830
21831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21832 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021834
21835 /*Return pending as this is what the status of the request is since it has
21836 been queued*/
21837 return WDI_STATUS_PENDING;
21838}/*WDI_QueueNewAssocRequest*/
21839
21840/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 away.- The assoc requests will be queued by BSSID
21844 @param
21845
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 pWDICtx: - pointer to the WDI control block
21847 pSession: - session in which to queue
21848 pEventData: pointer to the event info that needs to be
21849 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021850
21851 @see
21852 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021853*/
21854WDI_Status
21855WDI_QueueAssocRequest
21856(
21857 WDI_ControlBlockType* pWDICtx,
21858 WDI_BSSSessionType* pSession,
21859 WDI_EventInfoType* pEventData
21860)
21861{
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021863 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021864 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021866
21867 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021868 Sanity check
21869 ------------------------------------------------------------------------*/
21870 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21871 {
21872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021874
Jeff Johnsone7245742012-09-05 17:12:55 -070021875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021876 }
21877
21878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021879 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021880 ------------------------------------------------------------------------*/
21881 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21882 if ( NULL == pEventDataQueue )
21883 {
21884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021885 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 WDI_ASSERT(0);
21887 return WDI_STATUS_MEM_FAILURE;
21888 }
21889
21890 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21891 if ( NULL == pEventInfo )
21892 {
21893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21894 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021895 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 WDI_ASSERT(0);
21897 wpalMemoryFree(pEventDataQueue);
21898 return WDI_STATUS_MEM_FAILURE;
21899 }
21900
21901 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21902 pEventDataQueue->pUserData = pEventData->pUserData;
21903 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21904 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 pEventDataQueue->pEventData = pEventInfo;
21907
21908 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21909
21910 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021912
21913 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021915
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021917
21918 /*The result of this operation is pending because the request has been
21919 queued and it will be processed at a later moment in time */
21920 return WDI_STATUS_PENDING;
21921}/*WDI_QueueAssocRequest*/
21922
21923/**
21924 @brief Utility function used by the DAL Core to help dequeue
21925 an association request that was pending
21926 The request will be queued up in front of the main
21927 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 @param
21929
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021931
21932
21933 @see
21934 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021935*/
21936WDI_Status
21937WDI_DequeueAssocRequest
21938(
21939 WDI_ControlBlockType* pWDICtx
21940)
21941{
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 wpt_list_node* pNode = NULL;
21943 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021944 WDI_BSSSessionType* pSession;
21945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021946
21947 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 Sanity check
21949 ------------------------------------------------------------------------*/
21950 if ( NULL == pWDICtx )
21951 {
21952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021954
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 }
21957
21958 /*------------------------------------------------------------------------
21959 An association has been completed => a new association can occur
21960 Check to see if there are any pending associations ->
21961 If so , transfer all the pending requests into the busy queue for
21962 processing
21963 These requests have arrived prior to the requests in the busy queue
21964 (bc they needed to be processed in order to be placed in this queue)
21965 => they will be placed at the front of the busy queue
21966 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021968
21969 if ( NULL == pNode )
21970 {
21971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 return WDI_STATUS_SUCCESS;
21974 }
21975
21976 /*The node actually points to the 1st element inside the Session Id struct -
21977 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021979
21980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21981 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21982
21983 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21984 {
21985 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021986
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 the front of the main waiting queue for subsequent execution*/
21989 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 while ( NULL != pNode )
21991 {
21992 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21994 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 }
21998 else
21999 {
22000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 WPAL_ASSERT(0);
22003 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022005 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022006
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22008 wpalMemoryFree(pSessionIdElement);
22009 return WDI_STATUS_SUCCESS;
22010}/*WDI_DequeueAssocRequest*/
22011
22012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 pending requests - all req cb will be called with
22015 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 @param
22017
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 @see
22021 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022022*/
22023WDI_Status
22024WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022025(
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 WDI_ControlBlockType* pWDICtx
22027)
22028{
Jeff Johnsone7245742012-09-05 17:12:55 -070022029 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022030 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 void* pUserData;
22033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22034
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022036
22037 /*------------------------------------------------------------------------
22038 Go through all the requests and fail them - this will only be called
22039 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 ------------------------------------------------------------------------*/
22042 while( pNode )
22043 {
22044 /*The node actually points to the 1st element inside the Event Data struct -
22045 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 pEventDataQueue = (WDI_EventInfoType*)pNode;
22047
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22049 if ( NULL != pfnReqStatusCB )
22050 {
22051 /*Fail the request*/
22052 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22053 }
22054 /* Free data - that was allocated when queueing */
22055 if ( pEventDataQueue->pEventData != NULL )
22056 {
22057 wpalMemoryFree(pEventDataQueue->pEventData);
22058 }
22059 wpalMemoryFree(pEventDataQueue);
22060
22061 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22062 {
22063 break;
22064 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 }
22066
Jeff Johnson295189b2012-06-20 16:38:30 -070022067 return WDI_STATUS_SUCCESS;
22068}/*WDI_ClearPendingRequests*/
22069
22070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 @brief Helper routine used to init the BSS Sessions in the WDI control block
22072
22073
22074 @param pWDICtx: pointer to the WLAN DAL context
22075
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 @see
22077*/
22078void
22079WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022080(
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 WDI_ControlBlockType* pWDICtx
22082)
22083{
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22086
22087 /*-------------------------------------------------------------------------
22088 No Sanity check
22089 -------------------------------------------------------------------------*/
22090 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22091 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022092 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22094 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22095 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22096 }
22097}/*WDI_ResetAssocSessions*/
22098
22099/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 @brief Helper routine used to find a session based on the BSSID
22101
22102
22103 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 pSession: pointer to the session (if found)
22106
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022108 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022109*/
22110wpt_uint8
22111WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022112(
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 WDI_ControlBlockType* pWDICtx,
22114 wpt_macAddr macBSSID,
22115 WDI_BSSSessionType** ppSession
22116)
22117{
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22120
22121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022123 -------------------------------------------------------------------------*/
22124 if ( NULL == ppSession )
22125 {
22126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022127 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 }
22130
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022132
Jeff Johnsone7245742012-09-05 17:12:55 -070022133 /*------------------------------------------------------------------------
22134 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 ------------------------------------------------------------------------*/
22136 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22137 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022138 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22139 (eWLAN_PAL_TRUE ==
22140 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22141 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 {
22143 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 return i;
22146 }
22147 }
22148
Jeff Johnsone7245742012-09-05 17:12:55 -070022149 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150}/*WDI_FindAssocSession*/
22151
22152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 @brief Helper routine used to find a session based on the BSSID
22154
22155
22156 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 ucBSSIdx: BSS Index of the session
22158 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022159
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022162*/
22163wpt_uint8
22164WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022165(
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 WDI_ControlBlockType* pWDICtx,
22167 wpt_uint16 ucBSSIdx,
22168 WDI_BSSSessionType** ppSession
22169)
22170{
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22173
22174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 -------------------------------------------------------------------------*/
22177 if ( NULL == ppSession )
22178 {
22179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022180 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 }
22183
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185
Jeff Johnsone7245742012-09-05 17:12:55 -070022186 /*------------------------------------------------------------------------
22187 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 ------------------------------------------------------------------------*/
22189 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22190 {
22191 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22192 {
22193 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 return i;
22196 }
22197 }
22198
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022200}/*WDI_FindAssocSessionByBSSIdx*/
22201
22202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 @brief Helper routine used to find a session based on the BSSID
22204
22205
22206 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 ucBSSIdx: BSS Index of the session
22208 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022209
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022212*/
22213wpt_uint8
22214WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022215(
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 WDI_ControlBlockType* pWDICtx,
22217 wpt_uint16 usIdx,
22218 WDI_BSSSessionType** ppSession
22219)
22220{
22221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22222
22223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 -------------------------------------------------------------------------*/
22226 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22227 {
22228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022229 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022230 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 }
22232
22233 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022235
22236 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022237
Jeff Johnson295189b2012-06-20 16:38:30 -070022238}/*WDI_FindAssocSessionByBSSIdx*/
22239
22240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022243
22244
22245 @param pWDICtx: pointer to the WLAN DAL context
22246 pSession: pointer to the session (if found)
22247
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022250*/
22251wpt_uint8
22252WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022253(
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 WDI_ControlBlockType* pWDICtx,
22255 WDI_BSSSessionType** ppSession
22256)
22257{
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 -------------------------------------------------------------------------*/
22263 if ( NULL == ppSession )
22264 {
22265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022266 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 }
22269
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022271
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 /*------------------------------------------------------------------------
22273 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 ------------------------------------------------------------------------*/
22275 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22276 {
22277 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22278 {
22279 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 return i;
22282 }
22283 }
22284
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022286}/*WDI_FindEmptySession*/
22287
22288
22289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022292
22293
22294 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022295 macBSSID: pointer to BSSID. If NULL, get all the session.
22296 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22297 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22298 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 @see
22300 @return Number of sessions in use
22301*/
22302wpt_uint8
22303WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022304(
Hoonki Lee26599972013-04-24 01:21:58 -070022305 WDI_ControlBlockType* pWDICtx,
22306 wpt_macAddr macBSSID,
22307 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022308)
22309{
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022312
22313 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 Count all sessions in use
22315 ------------------------------------------------------------------------*/
22316 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22317 {
Hoonki Lee26599972013-04-24 01:21:58 -070022318 if ( macBSSID && skipBSSID &&
22319 (eWLAN_PAL_TRUE ==
22320 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22321 WDI_MAC_ADDR_LEN)))
22322 {
22323 continue;
22324 }
22325 else if ( pWDICtx->aBSSSessions[i].bInUse )
22326 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022328 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022329 }
22330
Jeff Johnsone7245742012-09-05 17:12:55 -070022331 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022332}/*WDI_GetActiveSessionsCount*/
22333
22334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022335 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022337
22338
22339 @param pWDICtx: pointer to the WLAN DAL context
22340 pSession: pointer to the session (if found)
22341
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022344*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022345void
Jeff Johnson295189b2012-06-20 16:38:30 -070022346WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022347(
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 WDI_ControlBlockType* pWDICtx,
22349 WDI_BSSSessionType* ppSession
22350)
22351{
22352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 -------------------------------------------------------------------------*/
22355 if ( NULL == ppSession )
22356 {
22357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022358 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 }
22361
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 /*------------------------------------------------------------------------
22363 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 ------------------------------------------------------------------------*/
22365 wpal_list_destroy(&ppSession->wptPendingQueue);
22366 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022367 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22368 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22370 wpal_list_init(&ppSession->wptPendingQueue);
22371
22372}/*WDI_DeleteSession*/
22373
22374/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 @param
22378
Jeff Johnson295189b2012-06-20 16:38:30 -070022379 WDI_AddStaParams: - pointer to the WDI Add STA params
22380 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022381
22382 @see
22383 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022384*/
22385void
22386WDI_AddBcastSTAtoSTATable
22387(
22388 WDI_ControlBlockType* pWDICtx,
22389 WDI_AddStaParams * staParams,
22390 wpt_uint16 usBcastStaIdx
22391)
22392{
22393 WDI_AddStaParams wdiAddSTAParam = {0};
22394 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22396
22397 /*---------------------------------------------------------------------
22398 Sanity check
22399 ---------------------------------------------------------------------*/
22400 if ( NULL == staParams )
22401 {
22402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022404
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022406 }
22407
22408 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22409 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22410 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22411 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22412 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22413 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22414 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22415 WDI_MAC_ADDR_LEN );
22416 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22417 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22418 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22419 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22420 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22421 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22422 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022423
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22425}
22426
22427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 @brief NV blob will be divided into fragments of size 4kb and
22429 Sent to HAL
22430
22431 @param pWDICtx: pointer to the WLAN DAL context
22432 pEventData: pointer to the event information structure
22433
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 @see
22435 @return Result of the function call
22436 */
22437
22438WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022439(
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 WDI_ControlBlockType* pWDICtx,
22441 WDI_EventInfoType* pEventData
22442)
22443{
22444
22445 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22446 wpt_uint8* pSendBuffer = NULL;
22447 wpt_uint16 usDataOffset = 0;
22448 wpt_uint16 usSendSize = 0;
22449 wpt_uint16 usCurrentFragmentSize =0;
22450 wpt_uint8* pSrcBuffer = NULL;
22451 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22452 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22453
22454 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22455 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22456 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22457
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22460
22461 /* Update the current Fragment Number */
22462 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22463
22464 /*Update the HAL REQ structure */
22465 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22466 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22467 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22468
22469 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 image will be sent to HAL*/
22472
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22479 usCurrentFragmentSize = FRAGMENT_SIZE;
22480
22481 /*Update the HAL REQ structure */
22482 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22483 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22484
22485 }
22486 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 usCurrentFragmentSize = FRAGMENT_SIZE;
22489
22490 /*Update the HAL REQ structure */
22491 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22492 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22493 }
22494
22495 /*-----------------------------------------------------------------------
22496 Get message buffer
22497 -----------------------------------------------------------------------*/
22498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22499 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22500 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22503 {
22504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022505 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 pEventData, pwdiNvDownloadReqParams);
22507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 }
22510
22511 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022513 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22514
22515 /* Appending the NV image fragment */
22516 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22517 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22518 usCurrentFragmentSize);
22519
22520 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022522
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22524 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 WDI_NV_DOWNLOAD_RESP);
22526
22527}
Jeff Johnsone7245742012-09-05 17:12:55 -070022528/*============================================================================
22529 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 ============================================================================*/
22531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022532 @brief Helper routine used to find a session based on the BSSID
22533 @param pContext: pointer to the WLAN DAL context
22534 @param pDPContext: pointer to the Datapath context
22535
Jeff Johnson295189b2012-06-20 16:38:30 -070022536 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022537 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022538*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022539WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022540WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22541{
22542 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22543
22544 pCB->pDPContext = pDPContext;
22545 return;
22546}
22547
22548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 @brief Helper routine used to find a session based on the BSSID
22550
22551
22552 @param pContext: pointer to the WLAN DAL context
22553
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 @see
22555 @return pointer to Datapath context
22556*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022557WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022558WDI_DS_GetDatapathContext (void *pContext)
22559{
22560 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22561 return pCB->pDPContext;
22562}
22563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 @brief Helper routine used to find a session based on the BSSID
22565
22566
22567 @param pContext: pointer to the WLAN DAL context
22568 @param pDTDriverContext: pointer to the Transport Driver context
22569
Jeff Johnson295189b2012-06-20 16:38:30 -070022570 @see
22571 @return void
22572*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022573WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022574WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22575{
22576 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22577
22578 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022580}
22581
22582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 @brief Helper routine used to find a session based on the BSSID
22584
22585
22586 @param pWDICtx: pointer to the WLAN DAL context
22587
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022590*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022591WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022592WDT_GetTransportDriverContext (void *pContext)
22593{
22594 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022596}
22597
Jeff Johnsone7245742012-09-05 17:12:55 -070022598/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 Helper inline converters
22600 ============================================================================*/
22601/*Convert WDI driver type into HAL driver type*/
22602WPT_STATIC WPT_INLINE WDI_Status
22603WDI_HAL_2_WDI_STATUS
22604(
22605 eHalStatus halStatus
22606)
22607{
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 the chances of getting inlined*/
22610 switch( halStatus )
22611 {
22612 case eHAL_STATUS_SUCCESS:
22613 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22614 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22615 return WDI_STATUS_SUCCESS;
22616 case eHAL_STATUS_FAILURE:
22617 return WDI_STATUS_E_FAILURE;
22618 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 return WDI_STATUS_MEM_FAILURE;
22620 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022622 default:
22623 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22624 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022625
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022627}/*WDI_HAL_2_WDI_STATUS*/
22628
22629/*Convert WDI request type into HAL request type*/
22630WPT_STATIC WPT_INLINE tHalHostMsgType
22631WDI_2_HAL_REQ_TYPE
22632(
22633 WDI_RequestEnumType wdiReqType
22634)
22635{
Jeff Johnsone7245742012-09-05 17:12:55 -070022636 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 the chances of getting inlined*/
22638 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022642 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022651 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 return WLAN_HAL_RMV_STAKEY_REQ;
22675 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022679 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022680 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022681 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022682 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 case WDI_DEL_BA_REQ:
22684 return WLAN_HAL_DEL_BA_REQ;
22685#ifdef FEATURE_WLAN_CCX
22686 case WDI_TSM_STATS_REQ:
22687 return WLAN_HAL_TSM_STATS_REQ;
22688#endif
22689 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 case WDI_ADD_BA_SESSION_REQ:
22700 return WLAN_HAL_ADD_BA_SESSION_REQ;
22701 case WDI_TRIGGER_BA_REQ:
22702 return WLAN_HAL_TRIGGER_BA_REQ;
22703 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22708 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22709 case WDI_SET_MAX_TX_POWER_REQ:
22710 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussainfc753992013-08-09 15:09:58 -070022711 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22712 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schangd82195a2013-03-13 18:41:24 -070022713 case WDI_SET_TX_POWER_REQ:
22714 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22716 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022717#ifdef FEATURE_WLAN_TDLS
22718 case WDI_TDLS_LINK_ESTABLISH_REQ:
22719 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22720#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 case WDI_REM_BEACON_FILTER_REQ:
22742 return WLAN_HAL_REM_BCN_FILTER_REQ;
22743 case WDI_SET_RSSI_THRESHOLDS_REQ:
22744 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22745 case WDI_HOST_OFFLOAD_REQ:
22746 return WLAN_HAL_HOST_OFFLOAD_REQ;
22747 case WDI_WOWL_ADD_BC_PTRN_REQ:
22748 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22749 case WDI_WOWL_DEL_BC_PTRN_REQ:
22750 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22751 case WDI_WOWL_ENTER_REQ:
22752 return WLAN_HAL_ENTER_WOWL_REQ;
22753 case WDI_WOWL_EXIT_REQ:
22754 return WLAN_HAL_EXIT_WOWL_REQ;
22755 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22756 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22757 case WDI_NV_DOWNLOAD_REQ:
22758 return WLAN_HAL_DOWNLOAD_NV_REQ;
22759 case WDI_FLUSH_AC_REQ:
22760 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22761 case WDI_BTAMP_EVENT_REQ:
22762 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22763#ifdef WLAN_FEATURE_VOWIFI_11R
22764 case WDI_AGGR_ADD_TS_REQ:
22765 return WLAN_HAL_AGGR_ADD_TS_REQ;
22766#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 case WDI_FTM_CMD_REQ:
22768 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 case WDI_ADD_STA_SELF_REQ:
22770 return WLAN_HAL_ADD_STA_SELF_REQ;
22771 case WDI_DEL_STA_SELF_REQ:
22772 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022773#ifdef FEATURE_OEM_DATA_SUPPORT
22774 case WDI_START_OEM_DATA_REQ:
22775 return WLAN_HAL_START_OEM_DATA_REQ;
22776#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 case WDI_HOST_RESUME_REQ:
22778 return WLAN_HAL_HOST_RESUME_REQ;
22779 case WDI_HOST_SUSPEND_IND:
22780 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022781 case WDI_TRAFFIC_STATS_IND:
22782 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022783#ifdef WLAN_FEATURE_11W
22784 case WDI_EXCLUDE_UNENCRYPTED_IND:
22785 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22786#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 case WDI_KEEP_ALIVE_REQ:
22788 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022789#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022790 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22791 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022792#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022793#ifdef FEATURE_WLAN_SCAN_PNO
22794 case WDI_SET_PREF_NETWORK_REQ:
22795 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22796 case WDI_SET_RSSI_FILTER_REQ:
22797 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22798 case WDI_UPDATE_SCAN_PARAMS_REQ:
22799 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22800#endif // FEATURE_WLAN_SCAN_PNO
22801 case WDI_SET_TX_PER_TRACKING_REQ:
22802 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22803#ifdef WLAN_FEATURE_PACKET_FILTERING
22804 case WDI_8023_MULTICAST_LIST_REQ:
22805 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22806 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022807 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022808 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22809 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22810 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22811 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22812#endif // WLAN_FEATURE_PACKET_FILTERING
22813 case WDI_HAL_DUMP_CMD_REQ:
22814 return WLAN_HAL_DUMP_COMMAND_REQ;
22815#ifdef WLAN_FEATURE_GTK_OFFLOAD
22816 case WDI_GTK_OFFLOAD_REQ:
22817 return WLAN_HAL_GTK_OFFLOAD_REQ;
22818 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22819 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22820#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22821
22822 case WDI_INIT_SCAN_CON_REQ:
22823 return WLAN_HAL_INIT_SCAN_CON_REQ;
22824 case WDI_SET_POWER_PARAMS_REQ:
22825 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22826 case WDI_SET_TM_LEVEL_REQ:
22827 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22828 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22829 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022830#ifdef WLAN_FEATURE_11AC
22831 case WDI_UPDATE_VHT_OP_MODE_REQ:
22832 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22833#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022834 case WDI_GET_ROAM_RSSI_REQ:
22835 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022836 case WDI_DHCP_START_IND:
22837 return WLAN_HAL_DHCP_START_IND;
22838 case WDI_DHCP_STOP_IND:
22839 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022840#ifdef FEATURE_WLAN_LPHB
22841 case WDI_LPHB_CFG_REQ:
22842 return WLAN_HAL_LPHB_CFG_REQ;
22843#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022844 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22845 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22846 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22847 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22848
Rajeev3db91f12013-10-05 11:03:42 +053022849#ifdef FEATURE_WLAN_BATCH_SCAN
22850 case WDI_SET_BATCH_SCAN_REQ:
22851 return WLAN_HAL_BATCHSCAN_SET_REQ;
22852 case WDI_STOP_BATCH_SCAN_IND:
22853 return WLAN_HAL_BATCHSCAN_STOP_IND;
22854 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22855 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22856#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022857 case WDI_RATE_UPDATE_IND:
22858 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022859
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022862 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022863
Jeff Johnson295189b2012-06-20 16:38:30 -070022864}/*WDI_2_HAL_REQ_TYPE*/
22865
22866/*Convert WDI response type into HAL response type*/
22867WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22868HAL_2_WDI_RSP_TYPE
22869(
22870 tHalHostMsgType halMsg
22871)
22872{
Jeff Johnsone7245742012-09-05 17:12:55 -070022873 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 the chances of getting inlined*/
22875 switch( halMsg )
22876 {
22877 case WLAN_HAL_START_RSP:
22878 return WDI_START_RESP;
22879 case WLAN_HAL_STOP_RSP:
22880 return WDI_STOP_RESP;
22881 case WLAN_HAL_INIT_SCAN_RSP:
22882 return WDI_INIT_SCAN_RESP;
22883 case WLAN_HAL_START_SCAN_RSP:
22884 return WDI_START_SCAN_RESP;
22885 case WLAN_HAL_END_SCAN_RSP:
22886 return WDI_END_SCAN_RESP;
22887 case WLAN_HAL_FINISH_SCAN_RSP:
22888 return WDI_FINISH_SCAN_RESP;
22889 case WLAN_HAL_CONFIG_STA_RSP:
22890 return WDI_CONFIG_STA_RESP;
22891 case WLAN_HAL_DELETE_STA_RSP:
22892 return WDI_DEL_STA_RESP;
22893 case WLAN_HAL_CONFIG_BSS_RSP:
22894 return WDI_CONFIG_BSS_RESP;
22895 case WLAN_HAL_DELETE_BSS_RSP:
22896 return WDI_DEL_BSS_RESP;
22897 case WLAN_HAL_JOIN_RSP:
22898 return WDI_JOIN_RESP;
22899 case WLAN_HAL_POST_ASSOC_RSP:
22900 return WDI_POST_ASSOC_RESP;
22901 case WLAN_HAL_SET_BSSKEY_RSP:
22902 return WDI_SET_BSS_KEY_RESP;
22903 case WLAN_HAL_SET_STAKEY_RSP:
22904 return WDI_SET_STA_KEY_RESP;
22905 case WLAN_HAL_RMV_BSSKEY_RSP:
22906 return WDI_RMV_BSS_KEY_RESP;
22907 case WLAN_HAL_RMV_STAKEY_RSP:
22908 return WDI_RMV_STA_KEY_RESP;
22909 case WLAN_HAL_SET_BCASTKEY_RSP:
22910 return WDI_SET_STA_BCAST_KEY_RESP;
22911 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22912 // return WDI_RMV_STA_BCAST_KEY_RESP;
22913 case WLAN_HAL_ADD_TS_RSP:
22914 return WDI_ADD_TS_RESP;
22915 case WLAN_HAL_DEL_TS_RSP:
22916 return WDI_DEL_TS_RESP;
22917 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22918 return WDI_UPD_EDCA_PRMS_RESP;
22919 case WLAN_HAL_ADD_BA_RSP:
22920 return WDI_ADD_BA_RESP;
22921 case WLAN_HAL_DEL_BA_RSP:
22922 return WDI_DEL_BA_RESP;
22923#ifdef FEATURE_WLAN_CCX
22924 case WLAN_HAL_TSM_STATS_RSP:
22925 return WDI_TSM_STATS_RESP;
22926#endif
22927 case WLAN_HAL_CH_SWITCH_RSP:
22928 return WDI_CH_SWITCH_RESP;
22929 case WLAN_HAL_SET_LINK_ST_RSP:
22930 return WDI_SET_LINK_ST_RESP;
22931 case WLAN_HAL_GET_STATS_RSP:
22932 return WDI_GET_STATS_RESP;
22933 case WLAN_HAL_UPDATE_CFG_RSP:
22934 return WDI_UPDATE_CFG_RESP;
22935 case WLAN_HAL_ADD_BA_SESSION_RSP:
22936 return WDI_ADD_BA_SESSION_RESP;
22937 case WLAN_HAL_TRIGGER_BA_RSP:
22938 return WDI_TRIGGER_BA_RESP;
22939 case WLAN_HAL_UPDATE_BEACON_RSP:
22940 return WDI_UPD_BCON_PRMS_RESP;
22941 case WLAN_HAL_SEND_BEACON_RSP:
22942 return WDI_SND_BCON_RESP;
22943 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22944 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22945 /*Indications*/
22946 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22947 return WDI_HAL_RSSI_NOTIFICATION_IND;
22948 case WLAN_HAL_MISSED_BEACON_IND:
22949 return WDI_HAL_MISSED_BEACON_IND;
22950 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22951 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22952 case WLAN_HAL_MIC_FAILURE_IND:
22953 return WDI_HAL_MIC_FAILURE_IND;
22954 case WLAN_HAL_FATAL_ERROR_IND:
22955 return WDI_HAL_FATAL_ERROR_IND;
22956 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22957 return WDI_HAL_DEL_STA_IND;
22958 case WLAN_HAL_COEX_IND:
22959 return WDI_HAL_COEX_IND;
22960 case WLAN_HAL_OTA_TX_COMPL_IND:
22961 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022962 case WLAN_HAL_P2P_NOA_ATTR_IND:
22963 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022964 case WLAN_HAL_P2P_NOA_START_IND:
22965 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 case WLAN_HAL_TX_PER_HIT_IND:
22967 return WDI_HAL_TX_PER_HIT_IND;
22968 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22969 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussainfc753992013-08-09 15:09:58 -070022970 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
22971 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schangd82195a2013-03-13 18:41:24 -070022972 case WLAN_HAL_SET_TX_POWER_RSP:
22973 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022974 case WLAN_HAL_SET_P2P_GONOA_RSP:
22975 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022976#ifdef FEATURE_WLAN_TDLS
22977 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22978 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22979 case WLAN_HAL_TDLS_IND:
22980 return WDI_HAL_TDLS_IND;
22981#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022985 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23001 return WDI_SET_BEACON_FILTER_RESP;
23002 case WLAN_HAL_REM_BCN_FILTER_RSP:
23003 return WDI_REM_BEACON_FILTER_RESP;
23004 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23005 return WDI_SET_RSSI_THRESHOLDS_RESP;
23006 case WLAN_HAL_HOST_OFFLOAD_RSP:
23007 return WDI_HOST_OFFLOAD_RESP;
23008 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23009 return WDI_WOWL_ADD_BC_PTRN_RESP;
23010 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23011 return WDI_WOWL_DEL_BC_PTRN_RESP;
23012 case WLAN_HAL_ENTER_WOWL_RSP:
23013 return WDI_WOWL_ENTER_RESP;
23014 case WLAN_HAL_EXIT_WOWL_RSP:
23015 return WDI_WOWL_EXIT_RESP;
23016 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23017 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23018 case WLAN_HAL_DOWNLOAD_NV_RSP:
23019 return WDI_NV_DOWNLOAD_RESP;
23020 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23021 return WDI_FLUSH_AC_RESP;
23022 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23023 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023024 case WLAN_HAL_PROCESS_PTT_RSP:
23025 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 case WLAN_HAL_ADD_STA_SELF_RSP:
23027 return WDI_ADD_STA_SELF_RESP;
23028case WLAN_HAL_DEL_STA_SELF_RSP:
23029 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023030#ifdef FEATURE_OEM_DATA_SUPPORT
23031 case WLAN_HAL_START_OEM_DATA_RSP:
23032 return WDI_START_OEM_DATA_RESP;
23033#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023034 case WLAN_HAL_HOST_RESUME_RSP:
23035 return WDI_HOST_RESUME_RESP;
23036 case WLAN_HAL_KEEP_ALIVE_RSP:
23037 return WDI_KEEP_ALIVE_RESP;
23038#ifdef FEATURE_WLAN_SCAN_PNO
23039 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23040 return WDI_SET_PREF_NETWORK_RESP;
23041 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023042 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23044 return WDI_UPDATE_SCAN_PARAMS_RESP;
23045 case WLAN_HAL_PREF_NETW_FOUND_IND:
23046 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23047#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023048#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023049 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23050 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023051#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23053 return WDI_SET_TX_PER_TRACKING_RESP;
23054#ifdef WLAN_FEATURE_PACKET_FILTERING
23055 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23056 return WDI_8023_MULTICAST_LIST_RESP;
23057 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23058 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23059 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23060 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23061 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23062 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23063#endif // WLAN_FEATURE_PACKET_FILTERING
23064
23065 case WLAN_HAL_DUMP_COMMAND_RSP:
23066 return WDI_HAL_DUMP_CMD_RESP;
23067 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23068 return WDI_SET_POWER_PARAMS_RESP;
23069#ifdef WLAN_FEATURE_VOWIFI_11R
23070 case WLAN_HAL_AGGR_ADD_TS_RSP:
23071 return WDI_AGGR_ADD_TS_RESP;
23072#endif
23073
23074#ifdef WLAN_FEATURE_GTK_OFFLOAD
23075 case WLAN_HAL_GTK_OFFLOAD_RSP:
23076 return WDI_GTK_OFFLOAD_RESP;
23077 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23078 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23079#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23080#ifdef WLAN_WAKEUP_EVENTS
23081 case WLAN_HAL_WAKE_REASON_IND:
23082 return WDI_HAL_WAKE_REASON_IND;
23083#endif // WLAN_WAKEUP_EVENTS
23084
23085 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23086 return WDI_SET_TM_LEVEL_RESP;
23087 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23088 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023089#ifdef WLAN_FEATURE_11AC
23090 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23091 return WDI_UPDATE_VHT_OP_MODE_RESP;
23092#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023093#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23094 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23095 return WDI_GET_ROAM_RSSI_RESP;
23096#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070023097
Leo Chang00bc9132013-08-01 19:21:11 -070023098#ifdef FEATURE_WLAN_LPHB
23099 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070023100 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070023101 case WLAN_HAL_LPHB_CFG_RSP:
23102 return WDI_LPHB_CFG_RESP;
23103#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070023104
23105 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23106 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070023107 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23108 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070023109
Rajeev3db91f12013-10-05 11:03:42 +053023110#ifdef FEATURE_WLAN_BATCH_SCAN
23111 case WLAN_HAL_BATCHSCAN_SET_RSP:
23112 return WDI_SET_BATCH_SCAN_RESP;
23113 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23114 return WDI_BATCHSCAN_RESULT_IND;
23115#endif // FEATURE_WLAN_BATCH_SCAN
23116
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023118 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 }
23120
23121}/*HAL_2_WDI_RSP_TYPE*/
23122
23123
23124/*Convert WDI driver type into HAL driver type*/
23125WPT_STATIC WPT_INLINE tDriverType
23126WDI_2_HAL_DRV_TYPE
23127(
23128 WDI_DriverType wdiDriverType
23129)
23130{
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023132 the chances of getting inlined*/
23133 switch( wdiDriverType )
23134 {
23135 case WDI_DRIVER_TYPE_PRODUCTION:
23136 return eDRIVER_TYPE_PRODUCTION;
23137 case WDI_DRIVER_TYPE_MFG:
23138 return eDRIVER_TYPE_MFG;
23139 case WDI_DRIVER_TYPE_DVT:
23140 return eDRIVER_TYPE_DVT;
23141 }
23142
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023144}/*WDI_2_HAL_DRV_TYPE*/
23145
23146
23147/*Convert WDI stop reason into HAL stop reason*/
23148WPT_STATIC WPT_INLINE tHalStopType
23149WDI_2_HAL_STOP_REASON
23150(
23151 WDI_StopType wdiDriverType
23152)
23153{
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 the chances of getting inlined*/
23156 switch( wdiDriverType )
23157 {
23158 case WDI_STOP_TYPE_SYS_RESET:
23159 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023160 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23161 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 case WDI_STOP_TYPE_RF_KILL:
23163 return HAL_STOP_TYPE_RF_KILL;
23164 }
23165
Jeff Johnsone7245742012-09-05 17:12:55 -070023166 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023167}/*WDI_2_HAL_STOP_REASON*/
23168
23169
23170/*Convert WDI scan mode type into HAL scan mode type*/
23171WPT_STATIC WPT_INLINE eHalSysMode
23172WDI_2_HAL_SCAN_MODE
23173(
23174 WDI_ScanMode wdiScanMode
23175)
23176{
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023178 the chances of getting inlined*/
23179 switch( wdiScanMode )
23180 {
23181 case WDI_SCAN_MODE_NORMAL:
23182 return eHAL_SYS_MODE_NORMAL;
23183 case WDI_SCAN_MODE_LEARN:
23184 return eHAL_SYS_MODE_LEARN;
23185 case WDI_SCAN_MODE_SCAN:
23186 return eHAL_SYS_MODE_SCAN;
23187 case WDI_SCAN_MODE_PROMISC:
23188 return eHAL_SYS_MODE_PROMISC;
23189 case WDI_SCAN_MODE_SUSPEND_LINK:
23190 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023191 case WDI_SCAN_MODE_ROAM_SCAN:
23192 return eHAL_SYS_MODE_ROAM_SCAN;
23193 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23194 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023195 }
23196
Jeff Johnsone7245742012-09-05 17:12:55 -070023197 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023198}/*WDI_2_HAL_SCAN_MODE*/
23199
23200/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023201WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023202WDI_2_HAL_SEC_CH_OFFSET
23203(
23204 WDI_HTSecondaryChannelOffset wdiSecChOffset
23205)
23206{
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 the chances of getting inlined*/
23209 switch( wdiSecChOffset )
23210 {
23211 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23217#ifdef WLAN_FEATURE_11AC
23218 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23219 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23220 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23221 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23222 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23223 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23224 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23225 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23226 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23227 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23228 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23229 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23230 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23231 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23232#endif
23233 default:
23234 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 }
23236
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238}/*WDI_2_HAL_SEC_CH_OFFSET*/
23239
23240/*Convert WDI BSS type into HAL BSS type*/
23241WPT_STATIC WPT_INLINE tSirBssType
23242WDI_2_HAL_BSS_TYPE
23243(
23244 WDI_BssType wdiBSSType
23245)
23246{
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 the chances of getting inlined*/
23249 switch( wdiBSSType )
23250 {
23251 case WDI_INFRASTRUCTURE_MODE:
23252 return eSIR_INFRASTRUCTURE_MODE;
23253 case WDI_INFRA_AP_MODE:
23254 return eSIR_INFRA_AP_MODE;
23255 case WDI_IBSS_MODE:
23256 return eSIR_IBSS_MODE;
23257 case WDI_BTAMP_STA_MODE:
23258 return eSIR_BTAMP_STA_MODE;
23259 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 case WDI_BSS_AUTO_MODE:
23262 return eSIR_AUTO_MODE;
23263 }
23264
Jeff Johnsone7245742012-09-05 17:12:55 -070023265 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023266}/*WDI_2_HAL_BSS_TYPE*/
23267
23268/*Convert WDI NW type into HAL NW type*/
23269WPT_STATIC WPT_INLINE tSirNwType
23270WDI_2_HAL_NW_TYPE
23271(
23272 WDI_NwType wdiNWType
23273)
23274{
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023276 the chances of getting inlined*/
23277 switch( wdiNWType )
23278 {
23279 case WDI_11A_NW_TYPE:
23280 return eSIR_11A_NW_TYPE;
23281 case WDI_11B_NW_TYPE:
23282 return eSIR_11B_NW_TYPE;
23283 case WDI_11G_NW_TYPE:
23284 return eSIR_11G_NW_TYPE;
23285 case WDI_11N_NW_TYPE:
23286 return eSIR_11N_NW_TYPE;
23287 }
23288
Jeff Johnsone7245742012-09-05 17:12:55 -070023289 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023290}/*WDI_2_HAL_NW_TYPE*/
23291
23292/*Convert WDI chanel bonding type into HAL cb type*/
23293WPT_STATIC WPT_INLINE ePhyChanBondState
23294WDI_2_HAL_CB_STATE
23295(
23296 WDI_PhyChanBondState wdiCbState
23297)
23298{
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 the chances of getting inlined*/
23301 switch ( wdiCbState )
23302 {
23303 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23304 return PHY_SINGLE_CHANNEL_CENTERED;
23305 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23306 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23307 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23308 return PHY_DOUBLE_CHANNEL_CENTERED;
23309 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23310 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023311#ifdef WLAN_FEATURE_11AC
23312 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23313 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23314 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23315 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23316 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23317 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23318 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23319 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23320 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23321 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23322 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23323 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23324 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23325 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23326#endif
23327 case WDI_MAX_CB_STATE:
23328 default:
23329 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023331
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 return PHY_CHANNEL_BONDING_STATE_MAX;
23333}/*WDI_2_HAL_CB_STATE*/
23334
23335/*Convert WDI chanel bonding type into HAL cb type*/
23336WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23337WDI_2_HAL_HT_OPER_MODE
23338(
23339 WDI_HTOperatingMode wdiHTOperMode
23340)
23341{
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 the chances of getting inlined*/
23344 switch ( wdiHTOperMode )
23345 {
23346 case WDI_HT_OP_MODE_PURE:
23347 return eSIR_HT_OP_MODE_PURE;
23348 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23349 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23350 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23351 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23352 case WDI_HT_OP_MODE_MIXED:
23353 return eSIR_HT_OP_MODE_MIXED;
23354 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023355
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 return eSIR_HT_OP_MODE_MAX;
23357}/*WDI_2_HAL_HT_OPER_MODE*/
23358
23359/*Convert WDI mimo PS type into HAL mimo PS type*/
23360WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23361WDI_2_HAL_MIMO_PS
23362(
23363 WDI_HTMIMOPowerSaveState wdiHTOperMode
23364)
23365{
Jeff Johnsone7245742012-09-05 17:12:55 -070023366 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023367 the chances of getting inlined*/
23368 switch ( wdiHTOperMode )
23369 {
23370 case WDI_HT_MIMO_PS_STATIC:
23371 return eSIR_HT_MIMO_PS_STATIC;
23372 case WDI_HT_MIMO_PS_DYNAMIC:
23373 return eSIR_HT_MIMO_PS_DYNAMIC;
23374 case WDI_HT_MIMO_PS_NA:
23375 return eSIR_HT_MIMO_PS_NA;
23376 case WDI_HT_MIMO_PS_NO_LIMIT:
23377 return eSIR_HT_MIMO_PS_NO_LIMIT;
23378 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023379
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 return eSIR_HT_MIMO_PS_MAX;
23381}/*WDI_2_HAL_MIMO_PS*/
23382
23383/*Convert WDI ENC type into HAL ENC type*/
23384WPT_STATIC WPT_INLINE tAniEdType
23385WDI_2_HAL_ENC_TYPE
23386(
23387 WDI_EncryptType wdiEncType
23388)
23389{
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 the chances of getting inlined*/
23392 switch ( wdiEncType )
23393 {
23394 case WDI_ENCR_NONE:
23395 return eSIR_ED_NONE;
23396
23397 case WDI_ENCR_WEP40:
23398 return eSIR_ED_WEP40;
23399
23400 case WDI_ENCR_WEP104:
23401 return eSIR_ED_WEP104;
23402
23403 case WDI_ENCR_TKIP:
23404 return eSIR_ED_TKIP;
23405
23406 case WDI_ENCR_CCMP:
23407 return eSIR_ED_CCMP;
23408
23409 case WDI_ENCR_AES_128_CMAC:
23410 return eSIR_ED_AES_128_CMAC;
23411#if defined(FEATURE_WLAN_WAPI)
23412 case WDI_ENCR_WPI:
23413 return eSIR_ED_WPI;
23414#endif
23415 default:
23416 return eSIR_ED_NOT_IMPLEMENTED;
23417 }
23418
23419}/*WDI_2_HAL_ENC_TYPE*/
23420
23421/*Convert WDI WEP type into HAL WEP type*/
23422WPT_STATIC WPT_INLINE tAniWepType
23423WDI_2_HAL_WEP_TYPE
23424(
23425 WDI_WepType wdiWEPType
23426)
23427{
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023429 the chances of getting inlined*/
23430 switch ( wdiWEPType )
23431 {
23432 case WDI_WEP_STATIC:
23433 return eSIR_WEP_STATIC;
23434
23435 case WDI_WEP_DYNAMIC:
23436 return eSIR_WEP_DYNAMIC;
23437 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023438
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 return eSIR_WEP_MAX;
23440}/*WDI_2_HAL_WEP_TYPE*/
23441
23442WPT_STATIC WPT_INLINE tSirLinkState
23443WDI_2_HAL_LINK_STATE
23444(
23445 WDI_LinkStateType wdiLinkState
23446)
23447{
Jeff Johnsone7245742012-09-05 17:12:55 -070023448 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 the chances of getting inlined*/
23450 switch ( wdiLinkState )
23451 {
23452 case WDI_LINK_IDLE_STATE:
23453 return eSIR_LINK_IDLE_STATE;
23454
23455 case WDI_LINK_PREASSOC_STATE:
23456 return eSIR_LINK_PREASSOC_STATE;
23457
23458 case WDI_LINK_POSTASSOC_STATE:
23459 return eSIR_LINK_POSTASSOC_STATE;
23460
23461 case WDI_LINK_AP_STATE:
23462 return eSIR_LINK_AP_STATE;
23463
23464 case WDI_LINK_IBSS_STATE:
23465 return eSIR_LINK_IBSS_STATE;
23466
23467 case WDI_LINK_BTAMP_PREASSOC_STATE:
23468 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23469
23470 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23471 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23472
23473 case WDI_LINK_BTAMP_AP_STATE:
23474 return eSIR_LINK_BTAMP_AP_STATE;
23475
23476 case WDI_LINK_BTAMP_STA_STATE:
23477 return eSIR_LINK_BTAMP_STA_STATE;
23478
23479 case WDI_LINK_LEARN_STATE:
23480 return eSIR_LINK_LEARN_STATE;
23481
23482 case WDI_LINK_SCAN_STATE:
23483 return eSIR_LINK_SCAN_STATE;
23484
23485 case WDI_LINK_FINISH_SCAN_STATE:
23486 return eSIR_LINK_FINISH_SCAN_STATE;
23487
23488 case WDI_LINK_INIT_CAL_STATE:
23489 return eSIR_LINK_INIT_CAL_STATE;
23490
23491 case WDI_LINK_FINISH_CAL_STATE:
23492 return eSIR_LINK_FINISH_CAL_STATE;
23493
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 case WDI_LINK_LISTEN_STATE:
23495 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023496
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023497 case WDI_LINK_SEND_ACTION_STATE:
23498 return eSIR_LINK_SEND_ACTION_STATE;
23499
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 default:
23501 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023502 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023503}
23504
Jeff Johnsone7245742012-09-05 17:12:55 -070023505/*Translate a STA Context from WDI into HAL*/
23506WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023507void
23508WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023509(
Jeff Johnson295189b2012-06-20 16:38:30 -070023510 tConfigStaParams* phalConfigSta,
23511 WDI_ConfigStaReqInfoType* pwdiConfigSta
23512)
23513{
23514 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023515#ifdef WLAN_FEATURE_11AC
23516 /* Get the Version 1 Handler */
23517 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23518 if (WDI_getFwWlanFeatCaps(DOT11AC))
23519 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023520 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023521 }
23522#endif
23523 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 the chances of getting inlined*/
23525
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 wpalMemoryCopy(phalConfigSta->bssId,
23527 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23528
23529 wpalMemoryCopy(phalConfigSta->staMac,
23530 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023531
23532 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23533 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23534 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23535 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23536 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23537 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23538 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23539 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23540 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23541 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23542 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23543 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23544 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23545 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23546 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23547 phalConfigSta->action = pwdiConfigSta->wdiAction;
23548 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23549 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23550 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23551 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23552 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23553 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23554 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023555
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23557
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023559 pwdiConfigSta->wdiSupportedRates.opRateMode;
23560 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23561 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023562 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023563 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23564 }
23565 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23566 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023568 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23569 }
23570 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23571 {
23572 phalConfigSta->supportedRates.aniLegacyRates[i] =
23573 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23574 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23577 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23578 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23581 }
23582 phalConfigSta->supportedRates.rxHighestDataRate =
23583 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23584
Jeff Johnsone7245742012-09-05 17:12:55 -070023585#ifdef WLAN_FEATURE_11AC
23586 if(phalConfigSta_V1 != NULL)
23587 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023588 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23589 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23590 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23591 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 }
23593#endif
23594
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023596
Jeff Johnsone7245742012-09-05 17:12:55 -070023597#ifdef WLAN_FEATURE_11AC
23598 if(phalConfigSta_V1 != NULL)
23599 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023600 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23601 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023602 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023603 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23604 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23605
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 }
23607#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023608}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023609
23610/*Translate a Rate set info from WDI into HAL*/
23611WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023612WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023613(
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 tSirMacRateSet* pHalRateSet,
23615 WDI_RateSet* pwdiRateSet
23616)
23617{
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23620
23621 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23622 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23623
23624 for ( i = 0; i < pHalRateSet->numRates; i++ )
23625 {
23626 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23627 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023628
Jeff Johnson295189b2012-06-20 16:38:30 -070023629}/*WDI_CopyWDIRateSetToHALRateSet*/
23630
23631
23632/*Translate an EDCA Parameter Record from WDI into HAL*/
23633WPT_STATIC WPT_INLINE void
23634WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023635(
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 tSirMacEdcaParamRecord* phalEdcaParam,
23637 WDI_EdcaParamRecord* pWDIEdcaParam
23638)
23639{
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 the chances of getting inlined*/
23642
23643 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23644 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23645 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23646 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23647
23648 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23649 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23650 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23651}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23652
23653
23654/*Copy a management frame header from WDI fmt into HAL fmt*/
23655WPT_STATIC WPT_INLINE void
23656WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23657(
23658 tSirMacMgmtHdr* pmacMgmtHdr,
23659 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23660)
23661{
23662 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23663 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23664 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23665 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23666 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23667 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23668 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23669 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23670 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23671 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23672 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23673
23674 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23675 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23676
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023682 pwdiMacMgmtHdr->bssId, 6);
23683
23684 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23685 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23686 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23687
23688}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23689
23690
23691/*Copy config bss parameters from WDI fmt into HAL fmt*/
23692WPT_STATIC WPT_INLINE void
23693WDI_CopyWDIConfigBSSToHALConfigBSS
23694(
23695 tConfigBssParams* phalConfigBSS,
23696 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23697)
23698{
23699
23700 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023701#ifdef WLAN_FEATURE_11AC
23702 /* Get the Version 1 Handler */
23703 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23704 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023705 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023706#endif
23707
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 wpalMemoryCopy( phalConfigBSS->bssId,
23709 pwdiConfigBSS->macBSSID,
23710 WDI_MAC_ADDR_LEN);
23711
23712#ifdef HAL_SELF_STA_PER_BSS
23713 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23714 pwdiConfigBSS->macSelfAddr,
23715 WDI_MAC_ADDR_LEN);
23716#endif
23717
23718 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23719
23720 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23721 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23722
Jeff Johnsone7245742012-09-05 17:12:55 -070023723 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 pwdiConfigBSS->ucShortSlotTimeSupported;
23725 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23726 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23727 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23728 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23729 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23732 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23733 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23734 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23735 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23736 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23737 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23738 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23739 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23740 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23741 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23742
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 phalConfigBSS->htOperMode =
23744 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023745
23746 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23747 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23748 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23749 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23750
23751#ifdef WLAN_FEATURE_VOWIFI
23752 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23753#endif
23754
23755 /*! Used 32 as magic number because that is how the ssid is declared inside the
23756 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23759 pwdiConfigBSS->wdiSSID.ucLength : 32;
23760 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 pwdiConfigBSS->wdiSSID.sSSID,
23762 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023763
23764 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23765 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023766
Jeff Johnson295189b2012-06-20 16:38:30 -070023767 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23768 &pwdiConfigBSS->wdiRateSet);
23769
23770 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23771
23772 if(phalConfigBSS->edcaParamsValid)
23773 {
23774 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23775 &pwdiConfigBSS->wdiBEEDCAParams);
23776 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23777 &pwdiConfigBSS->wdiBKEDCAParams);
23778 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23779 &pwdiConfigBSS->wdiVIEDCAParams);
23780 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23781 &pwdiConfigBSS->wdiVOEDCAParams);
23782 }
23783
Jeff Johnsone7245742012-09-05 17:12:55 -070023784 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023785
23786 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23787
23788#ifdef WLAN_FEATURE_VOWIFI_11R
23789
Jeff Johnsone7245742012-09-05 17:12:55 -070023790 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023792
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 if( phalConfigBSS->extSetStaKeyParamValid )
23794 {
23795 /*-----------------------------------------------------------------------
23796 Copy the STA Key parameters into the HAL message
23797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23800
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23803
23804 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23805
23806 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23807
23808 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23809
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23811 keyIndex++)
23812 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23815 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23816 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23817 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23818 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23819 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23826 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 WDI_MAX_KEY_LENGTH);
23829 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 }
23831 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23832 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 sizeof(phalConfigBSS->extSetStaKeyParam) );
23835 }
23836
23837#endif /*WLAN_FEATURE_VOWIFI_11R*/
23838
Jeff Johnsone7245742012-09-05 17:12:55 -070023839#ifdef WLAN_FEATURE_11AC
23840 if(phalConfigBSS_V1 != NULL)
23841 {
23842 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23843 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23844 }
23845#endif
23846
Jeff Johnson295189b2012-06-20 16:38:30 -070023847}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23848
23849
Jeff Johnsone7245742012-09-05 17:12:55 -070023850/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023851 pointed to by user data */
23852WPT_STATIC WPT_INLINE void
23853WDI_ExtractRequestCBFromEvent
23854(
23855 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023856 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023857 void** ppUserData
23858)
23859{
23860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23861 switch ( pEvent->wdiRequest )
23862 {
23863 case WDI_START_REQ:
23864 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23865 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23866 break;
23867 case WDI_STOP_REQ:
23868 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23869 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23870 break;
23871 case WDI_INIT_SCAN_REQ:
23872 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23873 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23874 break;
23875 case WDI_START_SCAN_REQ:
23876 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23877 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23878 break;
23879 case WDI_END_SCAN_REQ:
23880 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23881 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23882 break;
23883 case WDI_FINISH_SCAN_REQ:
23884 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23885 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23886 break;
23887 case WDI_JOIN_REQ:
23888 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23889 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23890 break;
23891 case WDI_CONFIG_BSS_REQ:
23892 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23893 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23894 break;
23895 case WDI_DEL_BSS_REQ:
23896 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23897 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23898 break;
23899 case WDI_POST_ASSOC_REQ:
23900 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23901 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23902 break;
23903 case WDI_DEL_STA_REQ:
23904 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23905 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23906 break;
23907 case WDI_DEL_STA_SELF_REQ:
23908 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23909 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23910 break;
23911
23912 case WDI_SET_BSS_KEY_REQ:
23913 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23914 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23915 break;
23916 case WDI_RMV_BSS_KEY_REQ:
23917 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23918 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23919 break;
23920 case WDI_SET_STA_KEY_REQ:
23921 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23922 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23923 break;
23924 case WDI_RMV_STA_KEY_REQ:
23925 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23926 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23927 break;
23928 case WDI_ADD_TS_REQ:
23929 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23930 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23931 break;
23932 case WDI_DEL_TS_REQ:
23933 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23934 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23935 break;
23936 case WDI_UPD_EDCA_PRMS_REQ:
23937 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23938 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23939 break;
23940 case WDI_ADD_BA_SESSION_REQ:
23941 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23942 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23943 break;
23944 case WDI_DEL_BA_REQ:
23945 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23946 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23947 break;
23948#ifdef FEATURE_WLAN_CCX
23949 case WDI_TSM_STATS_REQ:
23950 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23951 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23952 break;
23953#endif
23954 case WDI_CH_SWITCH_REQ:
23955 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23956 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23957 break;
23958 case WDI_CONFIG_STA_REQ:
23959 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23960 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23961 break;
23962 case WDI_SET_LINK_ST_REQ:
23963 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23964 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23965 break;
23966 case WDI_GET_STATS_REQ:
23967 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23968 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23969 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023970#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23971 case WDI_GET_ROAM_RSSI_REQ:
23972 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23973 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23974 break;
23975#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 case WDI_UPDATE_CFG_REQ:
23977 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23978 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23979 break;
23980 case WDI_ADD_BA_REQ:
23981 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23982 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23983 break;
23984 case WDI_TRIGGER_BA_REQ:
23985 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23986 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23987 break;
23988 case WDI_UPD_BCON_PRMS_REQ:
23989 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23990 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23991 break;
23992 case WDI_SND_BCON_REQ:
23993 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23994 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23995 break;
23996 case WDI_ENTER_BMPS_REQ:
23997 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23998 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23999 break;
24000 case WDI_EXIT_BMPS_REQ:
24001 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24002 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24003 break;
24004 case WDI_ENTER_UAPSD_REQ:
24005 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24006 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24007 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024008 case WDI_EXIT_UAPSD_REQ:
24009 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24010 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24011 break;
24012 case WDI_SET_UAPSD_PARAM_REQ:
24013 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24014 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24015 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 case WDI_UPDATE_UAPSD_PARAM_REQ:
24017 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24018 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24019 break;
24020 case WDI_CONFIGURE_RXP_FILTER_REQ:
24021 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24022 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24023 break;
24024 case WDI_SET_BEACON_FILTER_REQ:
24025 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24026 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24027 break;
24028 case WDI_REM_BEACON_FILTER_REQ:
24029 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24030 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024031 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 case WDI_SET_RSSI_THRESHOLDS_REQ:
24033 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24034 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24035 break;
24036 case WDI_HOST_OFFLOAD_REQ:
24037 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24038 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24039 break;
24040 case WDI_WOWL_ADD_BC_PTRN_REQ:
24041 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24042 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24043 break;
24044 case WDI_WOWL_DEL_BC_PTRN_REQ:
24045 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24046 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24047 break;
24048 case WDI_WOWL_ENTER_REQ:
24049 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24050 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24051 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024052 case WDI_WOWL_EXIT_REQ:
24053 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24054 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24055 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24057 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24058 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24059 break;
24060 case WDI_FLUSH_AC_REQ:
24061 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24062 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24063 break;
24064 case WDI_BTAMP_EVENT_REQ:
24065 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24066 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24067 break;
24068 case WDI_KEEP_ALIVE_REQ:
24069 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24070 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24071 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024072#if defined FEATURE_WLAN_SCAN_PNO
24073 case WDI_SET_PREF_NETWORK_REQ:
24074 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24075 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24076 break;
24077 case WDI_SET_RSSI_FILTER_REQ:
24078 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24079 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24080 break;
24081 case WDI_UPDATE_SCAN_PARAMS_REQ:
24082 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24083 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24084 break;
24085#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024086 case WDI_SET_TX_PER_TRACKING_REQ:
24087 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24088 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024089 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024090#if defined WLAN_FEATURE_PACKET_FILTERING
24091 case WDI_8023_MULTICAST_LIST_REQ:
24092 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24093 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24094 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024095 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24096 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24097 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24098 break;
24099 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24100 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24101 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24102 break;
24103 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24104 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24105 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24106 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024107#endif
24108 case WDI_SET_POWER_PARAMS_REQ:
24109 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24110 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24111 break;
24112#if defined WLAN_FEATURE_GTK_OFFLOAD
24113 case WDI_GTK_OFFLOAD_REQ:
24114 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24115 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24116 break;
24117 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24118 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24119 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24120 break;
24121#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024122
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 default:
24124 *ppfnReqCB = NULL;
24125 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024126 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 }
24128}/*WDI_ExtractRequestCBFromEvent*/
24129
24130
24131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024132 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 frame xtl is enabled for a particular STA.
24134
24135 WDI_PostAssocReq must have been called.
24136
Jeff Johnsone7245742012-09-05 17:12:55 -070024137 @param uSTAIdx: STA index
24138
Jeff Johnson295189b2012-06-20 16:38:30 -070024139 @see WDI_PostAssocReq
24140 @return Result of the function call
24141*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024142wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024143WDI_IsHwFrameTxTranslationCapable
24144(
24145 wpt_uint8 uSTAIdx
24146)
24147{
Jeff Johnsone7245742012-09-05 17:12:55 -070024148 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 uma value*/
24150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 ------------------------------------------------------------------------*/
24153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24154 {
24155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24156 "WDI API call before module is initialized - Fail request");
24157
Jeff Johnsone7245742012-09-05 17:12:55 -070024158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 }
24160
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024161#ifdef WLAN_SOFTAP_VSTA_FEATURE
24162 if (IS_VSTA_IDX(uSTAIdx))
24163 {
24164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24165 "STA %d is a Virtual STA, "
24166 "HW frame translation disabled", uSTAIdx);
24167 return eWLAN_PAL_FALSE;
24168 }
24169#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024170
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 return gWDICb.bFrameTransEnabled;
24172}/*WDI_IsHwFrameTxTranslationCapable*/
24173
24174#ifdef FEATURE_WLAN_SCAN_PNO
24175/**
24176 @brief WDI_SetPreferredNetworkList
24177
Jeff Johnsone7245742012-09-05 17:12:55 -070024178 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024180
Jeff Johnson295189b2012-06-20 16:38:30 -070024181 wdiPNOScanCb: callback for passing back the response
24182 of the Set PNO operation received from the
24183 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024184
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024186 callback
24187
Jeff Johnson295189b2012-06-20 16:38:30 -070024188 @return Result of the function call
24189*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024190WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024191WDI_SetPreferredNetworkReq
24192(
24193 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24194 WDI_PNOScanCb wdiPNOScanCb,
24195 void* pUserData
24196)
24197{
24198 WDI_EventInfoType wdiEventData = {{0}};
24199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24200
24201 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024202 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 ------------------------------------------------------------------------*/
24204 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24205 {
24206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24207 "WDI API call before module is initialized - Fail request");
24208
Jeff Johnsone7245742012-09-05 17:12:55 -070024209 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024210 }
24211
24212 /*------------------------------------------------------------------------
24213 Fill in Event data and post to the Main FSM
24214 ------------------------------------------------------------------------*/
24215 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024217 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 wdiEventData.pUserData = pUserData;
24220
24221 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24222}
24223
24224
24225/**
24226 @brief WDI_SetRssiFilterReq
24227
Jeff Johnsone7245742012-09-05 17:12:55 -070024228 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024230
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 wdiRssiFilterCb: callback for passing back the response
24232 of the Set RSSI Filter operation received from the
24233 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024234
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024236 callback
24237
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 @return Result of the function call
24239*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024241WDI_SetRssiFilterReq
24242(
24243 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24244 WDI_RssiFilterCb wdiRssiFilterCb,
24245 void* pUserData
24246)
24247{
24248 WDI_EventInfoType wdiEventData = {{0}};
24249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24250
24251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 ------------------------------------------------------------------------*/
24254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24255 {
24256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24257 "WDI API call before module is initialized - Fail request");
24258
Jeff Johnsone7245742012-09-05 17:12:55 -070024259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024260 }
24261
24262 /*------------------------------------------------------------------------
24263 Fill in Event data and post to the Main FSM
24264 ------------------------------------------------------------------------*/
24265 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024266 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 wdiEventData.pUserData = pUserData;
24270
24271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24272}/*WDI_SetRssiFilterReq*/
24273
24274/**
24275 @brief WDI_UpdateScanParamsReq
24276
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024279
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 wdiUpdateScanParamsCb: callback for passing back the response
24281 of the Set PNO operation received from the
24282 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024283
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 callback
24286
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 @return Result of the function call
24288*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024290WDI_UpdateScanParamsReq
24291(
24292 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24293 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24294 void* pUserData
24295)
24296{
24297 WDI_EventInfoType wdiEventData = {{0}};
24298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24299
24300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 ------------------------------------------------------------------------*/
24303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24304 {
24305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24306 "WDI API call before module is initialized - Fail request");
24307
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024309 }
24310
24311 /*------------------------------------------------------------------------
24312 Fill in Event data and post to the Main FSM
24313 ------------------------------------------------------------------------*/
24314 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 wdiEventData.pUserData = pUserData;
24319
24320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24321}
24322
24323/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024326
24327 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 pwdiPNOScanReqParams: pointer to the info received
24329 from upper layers
24330 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 and its size
24332
Jeff Johnson295189b2012-06-20 16:38:30 -070024333 @return Result of the function call
24334*/
24335
24336WDI_Status
24337WDI_PackPreferredNetworkList
24338(
24339 WDI_ControlBlockType* pWDICtx,
24340 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24341 wpt_uint8** ppSendBuffer,
24342 wpt_uint16* pSize
24343)
24344{
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 wpt_uint16 usDataOffset = 0;
24347 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024348 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024349 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 /*-----------------------------------------------------------------------
24351 Get message buffer
24352 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024353 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024354 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024356 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 {
24358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024359 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 pwdiPNOScanReqParams);
24361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 }
24364
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024365 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24366
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 /*-------------------------------------------------------------------------
24368 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24369 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024370 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024372 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24374
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024375 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24380
24381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24384 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24385 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24386
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024387 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 {
24389 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024390 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24392
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024393 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024395 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024396
24397 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024398 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024400
24401 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024402 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024404
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024407 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024408 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24409 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24410 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24411 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024413 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024415 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024416
24417 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024418 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24420
24421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024423 pPrefNetwListParams->aNetworks[i].ssId.length,
24424 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 }
24426
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024427 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024428 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24430 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24431 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24432
24433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024435 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024436 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24437 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24438
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024439 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024441 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024443 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24445 }
24446
24447 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024448 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024449 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24450 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24451 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024452 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024453
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024454 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024456 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024457
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024458 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24460 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24461 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024462 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024463
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024464 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024466 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024467
24468 /*Set the output values*/
24469 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024471
24472 return WDI_STATUS_SUCCESS;
24473}/*WDI_PackPreferredNetworkList*/
24474
24475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024478
24479 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 pwdiPNOScanReqParams: pointer to the info received
24481 from upper layers
24482 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 and its size
24484
Jeff Johnson295189b2012-06-20 16:38:30 -070024485 @return Result of the function call
24486*/
24487
24488WDI_Status
24489WDI_PackPreferredNetworkListNew
24490(
24491 WDI_ControlBlockType* pWDICtx,
24492 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24493 wpt_uint8** ppSendBuffer,
24494 wpt_uint16* pSize
24495)
24496{
Jeff Johnsone7245742012-09-05 17:12:55 -070024497 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 wpt_uint16 usDataOffset = 0;
24499 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024500 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024501 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024502
24503 /*-----------------------------------------------------------------------
24504 Get message buffer
24505 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024506 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024507 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024508 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024509 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024510 {
24511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024512 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 pwdiPNOScanReqParams);
24514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024516 }
24517
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024518 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24519
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 /*-------------------------------------------------------------------------
24521 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24522 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024523 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024525 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24527
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024528 pPrefNetwListParams->ucNetworksCount =
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)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24533
24534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024535 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24537 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24538 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24539
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024540 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 {
24542 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024543 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024544 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24545
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024546 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024548 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024549
24550 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024551 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024552 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024553
24554 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024555 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024557
24558 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024559 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024560 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024561
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024564 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24566
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024567 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024568 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024569 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024570
24571 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024572 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24574
24575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024576 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024577 pPrefNetwListParams->aNetworks[i].ssId.length,
24578 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 }
24580
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024581 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24584 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24585 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24586
24587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024588 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024589 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024590 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24591 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24592
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024593 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024595 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024597 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024598 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24599 }
24600
24601 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024602 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024603 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24604 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24605 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024606 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024607
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024608 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024610 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024611
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024612 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24614 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24615 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024616 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024617
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024618 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024619 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024620 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024621
Jeff Johnson295189b2012-06-20 16:38:30 -070024622
24623 /*Set the output values*/
24624 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024625 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024626
24627 return WDI_STATUS_SUCCESS;
24628}/*WDI_PackPreferredNetworkListNew*/
24629
24630/**
24631 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024632
24633 @param pWDICtx: pointer to the WLAN DAL context
24634 pEventData: pointer to the event information structure
24635
Jeff Johnson295189b2012-06-20 16:38:30 -070024636 @return Result of the function call
24637*/
24638WDI_Status
24639WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024640(
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 WDI_ControlBlockType* pWDICtx,
24642 WDI_EventInfoType* pEventData
24643)
24644{
24645 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24646 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024647 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024648 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024649 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024650
24651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 -------------------------------------------------------------------------*/
24654 if (( NULL == pEventData ) ||
24655 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24656 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24657 {
24658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 }
24663
24664 /*-------------------------------------------------------------------------
24665 Pack the PNO request structure based on version
24666 -------------------------------------------------------------------------*/
24667 if ( pWDICtx->wdiPNOVersion > 0 )
24668 {
24669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024670 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 pWDICtx->wdiPNOVersion);
24672
24673 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24674 &pSendBuffer, &usSendSize);
24675 }
24676 else
24677 {
24678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024679 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024680 pWDICtx->wdiPNOVersion);
24681
24682 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24683 &pSendBuffer, &usSendSize);
24684 }
24685
24686 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24687 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24688 {
24689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024690 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024693 }
24694
24695 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024696 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024697
24698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24702 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024703}
24704
24705/**
24706 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024707
24708 @param pWDICtx: pointer to the WLAN DAL context
24709 pEventData: pointer to the event information structure
24710
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 @see
24712 @return Result of the function call
24713*/
24714WDI_Status
24715WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024716(
Jeff Johnson295189b2012-06-20 16:38:30 -070024717 WDI_ControlBlockType* pWDICtx,
24718 WDI_EventInfoType* pEventData
24719)
24720{
24721 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24722 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 wpt_uint16 usDataOffset = 0;
24725 wpt_uint16 usSendSize = 0;
24726 wpt_uint8 ucRssiThreshold;
24727
24728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 -------------------------------------------------------------------------*/
24731 if (( NULL == pEventData ) ||
24732 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24733 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24734 {
24735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 }
24740
24741 /*-----------------------------------------------------------------------
24742 Get message buffer
24743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 sizeof(ucRssiThreshold),
24746 &pSendBuffer, &usDataOffset, &usSendSize))||
24747 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24748 {
24749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024750 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024751 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 }
24755
24756 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24757
Jeff Johnsone7245742012-09-05 17:12:55 -070024758 wpalMemoryCopy( pSendBuffer+usDataOffset,
24759 &ucRssiThreshold,
24760 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024761
24762 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024764
24765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024766 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24769 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024770}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024771#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24772/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024773 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024774
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024775 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024776 by the Device Interface
24777
24778 wdiRoamOffloadScancb: callback for passing back the response
24779 of the Roam Candidate Lookup Req operation received from the
24780 device
24781
24782 pUserData: user data will be passed back with the
24783 callback
24784 @return Result of the function call
24785*/
24786WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024787WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024788(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024789 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024790 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24791 void* pUserData
24792)
24793{
24794 WDI_EventInfoType wdiEventData = {{0}};
24795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24796
24797 /*------------------------------------------------------------------------
24798 Sanity Check
24799 ------------------------------------------------------------------------*/
24800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24801 {
24802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24803 "WDI API call before module is initialized - Fail request");
24804
24805 return WDI_STATUS_E_NOT_ALLOWED;
24806 }
24807
24808 /*------------------------------------------------------------------------
24809 Fill in Event data and post to the Main FSM
24810 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024811 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24812 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24813 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024814 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24815 wdiEventData.pUserData = pUserData;
24816
24817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24818}
24819
24820void
24821WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24822{
24823 switch (wdiEdType)
24824 {
24825 case WDI_ED_NONE:
24826 *EdType = eED_NONE;
24827 break;
24828 case WDI_ED_WEP40:
24829 case WDI_ED_WEP104:
24830 *EdType = eED_WEP;
24831 break;
24832 case WDI_ED_TKIP:
24833 *EdType = eED_TKIP;
24834 break;
24835 case WDI_ED_CCMP:
24836#ifdef WLAN_FEATURE_11W
24837 case WDI_ED_AES_128_CMAC:
24838#endif
24839 *EdType = eED_CCMP;
24840 break;
24841#ifdef FEATURE_WLAN_WAPI
24842 case WDI_ED_WPI:
24843 *EdType = eED_WPI;
24844 break;
24845#endif
24846 case WDI_ED_ANY:
24847 *EdType = eED_ANY;
24848 break;
24849
24850 default:
24851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24852 "%s: Unknown Encryption Type", __func__);
24853 break;
24854 }
24855}
24856
24857/**
24858 @brief Helper function to pack Start Roam Candidate Lookup
24859 Request parameters
24860
24861 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024862 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024863 from upper layers
24864 ppSendBuffer, pSize - out pointers of the packed buffer
24865 and its size
24866
24867 @return Result of the function call
24868*/
24869
24870WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024871WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024872(
24873 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024874 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024875 wpt_uint8** ppSendBuffer,
24876 wpt_uint16* pSize
24877)
24878{
24879 wpt_uint8* pSendBuffer = NULL;
24880 wpt_uint16 usDataOffset = 0;
24881 wpt_uint16 usSendSize = 0;
24882 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24883 wpt_uint8 i;
24884 /*-----------------------------------------------------------------------
24885 Get message buffer
24886 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024888 sizeof(tRoamCandidateListParams),
24889 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024890 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024891 {
24892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024893 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024894 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024895 WDI_ASSERT(0);
24896 return WDI_STATUS_E_FAILURE;
24897 }
24898 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024899 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024900 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024901 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024902 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024903 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024904 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024905 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024906 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024907 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024908 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024909
24910 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024911 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024912 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024913 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024914 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24915 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024916 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24917 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24918 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24919 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24920 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24921 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024922 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024923 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24924 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24925 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24926 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24927 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24928 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24929 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24930 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024931 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024932 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24933 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24934 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024935
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24937 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24938 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24939 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24940 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24941 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain5f7589c2013-11-17 22:05:35 -080024942 "HomeAwayTime=%d",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024943 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24944 pRoamCandidateListParams->RoamScanOffloadEnabled,
24945 pRoamCandidateListParams->Command,
24946 pRoamCandidateListParams->StartScanReason,
24947 pRoamCandidateListParams->NeighborScanTimerPeriod,
24948 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24949 pRoamCandidateListParams->NeighborScanChannelMinTime,
24950 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24951 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24952 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24953 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24954 pRoamCandidateListParams->ConnectedNetwork.authentication,
24955 pRoamCandidateListParams->ConnectedNetwork.encryption,
24956 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24957 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24958 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024959 pRoamCandidateListParams->us24GProbeSize =
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)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024962 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024963 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24964 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024965 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024966 pRoamCandidateListParams->us24GProbeSize);
24967 pRoamCandidateListParams->us5GProbeSize =
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)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024970 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024971 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24972 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024973 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024974 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024975 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24976 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24977 pRoamCandidateListParams->nProbes =
24978 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24979 pRoamCandidateListParams->HomeAwayTime =
24980 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024982 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24983 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024985 }
24986
24987
24988 /*Set the output values*/
24989 *ppSendBuffer = pSendBuffer;
24990 *pSize = usSendSize;
24991 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024992}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024993
24994/**
24995 @brief Process Start Roam Candidate Lookup Request function
24996
24997 @param pWDICtx: pointer to the WLAN DAL context
24998 pEventData: pointer to the event information structure
24999
25000 @return Result of the function call
25001*/
25002WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025003WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025004(
25005 WDI_ControlBlockType* pWDICtx,
25006 WDI_EventInfoType* pEventData
25007)
25008{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025009 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025010 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25011 wpt_uint8* pSendBuffer = NULL;
25012 wpt_uint16 usSendSize = 0;
25013 WDI_Status wdiStatus;
25014 /*-------------------------------------------------------------------------
25015 Sanity check
25016 -------------------------------------------------------------------------*/
25017 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025018 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025019 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25020 {
25021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25022 "%s: Invalid parameters", __func__);
25023 WDI_ASSERT(0);
25024 return WDI_STATUS_E_FAILURE;
25025 }
25026
25027 /*-------------------------------------------------------------------------
25028 Pack the Start Roam Candidate Lookup request structure based on version
25029 -------------------------------------------------------------------------*/
25030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25031 "%s: Packing Roam Candidate Lookup request ", __func__);
25032
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025033 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025034 &pSendBuffer, &usSendSize);
25035
25036 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25037 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25038 {
25039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25040 "%s: failed to pack request parameters", __func__);
25041 WDI_ASSERT(0);
25042 return wdiStatus;
25043 }
25044
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025045 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25046 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025047
25048 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025049 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025050 -------------------------------------------------------------------------*/
25051 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025052 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025053}
25054
25055/**
25056 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25057 response is being received over the bus from HAL)
25058
25059 @param pWDICtx: pointer to the WLAN DAL context
25060 pEventData: pointer to the event information structure
25061
25062 @see
25063 @return Result of the function call
25064*/
25065WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025066WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025067(
25068 WDI_ControlBlockType* pWDICtx,
25069 WDI_EventInfoType* pEventData
25070)
25071{
25072 WDI_Status wdiStatus;
25073 eHalStatus halStatus;
25074 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25075
25076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25077
25078 /*-------------------------------------------------------------------------
25079 Sanity check
25080 -------------------------------------------------------------------------*/
25081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25082 ( NULL == pEventData->pEventData ))
25083 {
25084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25085 "%s: Invalid parameters", __func__);
25086 WDI_ASSERT(0);
25087 return WDI_STATUS_E_FAILURE;
25088 }
25089
25090 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25091
25092 /*-------------------------------------------------------------------------
25093 Extract response and send it to UMAC
25094 -------------------------------------------------------------------------*/
25095 halStatus = *((eHalStatus*)pEventData->pEventData);
25096 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25097
25098 /*Notify UMAC*/
25099 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25100
25101 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025102}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025103#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025104
25105/**
25106 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025107
25108 @param pWDICtx: pointer to the WLAN DAL context
25109 pEventData: pointer to the event information structure
25110
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 @see
25112 @return Result of the function call
25113*/
25114WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025115WDI_PackUpdateScanParamsReq
25116(
25117 WDI_ControlBlockType* pWDICtx,
25118 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25119 wpt_uint8** ppSendBuffer,
25120 wpt_uint16* pSize
25121)
25122{
25123 wpt_uint8* pSendBuffer = NULL;
25124 wpt_uint16 usDataOffset = 0;
25125 wpt_uint16 usSendSize = 0;
25126 tUpdateScanParams updateScanParams = {0};
25127
25128
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025130 "Begin WDI Update Scan Parameters Old Style Params");
25131 /*-----------------------------------------------------------------------
25132 Get message buffer
25133 -----------------------------------------------------------------------*/
25134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25135 sizeof(updateScanParams),
25136 &pSendBuffer, &usDataOffset, &usSendSize))||
25137 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25138 {
25139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025140 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025141 pwdiUpdateScanParams);
25142 WDI_ASSERT(0);
25143 return WDI_STATUS_E_FAILURE;
25144 }
25145
25146 //
25147 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25148 //
25149
25150 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25151 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25152
25153 updateScanParams.ucChannelCount =
25154 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25155 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25156 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25157 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25158
25159 wpalMemoryCopy( updateScanParams.aChannels,
25160 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25161 updateScanParams.ucChannelCount);
25162
25163
25164 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25165 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25166 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25167 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25168 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25169
25170 wpalMemoryCopy( pSendBuffer+usDataOffset,
25171 &updateScanParams,
25172 sizeof(updateScanParams));
25173
25174 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25175 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25176
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025178 "End Update Scan Parameters Old Style");
25179
25180 /*Set the output values*/
25181 *ppSendBuffer = pSendBuffer;
25182 *pSize = usSendSize;
25183
25184 return WDI_STATUS_SUCCESS;
25185}
25186
25187/**
25188 @brief Process Update Scan Params function
25189
25190 @param pWDICtx: pointer to the WLAN DAL context
25191 pEventData: pointer to the event information structure
25192
25193 @see
25194 @return Result of the function call
25195*/
25196WDI_Status
25197WDI_PackUpdateScanParamsReqEx
25198(
25199 WDI_ControlBlockType* pWDICtx,
25200 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25201 wpt_uint8** ppSendBuffer,
25202 wpt_uint16* pSize
25203)
25204{
25205 wpt_uint8* pSendBuffer = NULL;
25206 wpt_uint16 usDataOffset = 0;
25207 wpt_uint16 usSendSize = 0;
25208 tUpdateScanParamsEx updateScanParams = {0};
25209
25210
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025211 /*-----------------------------------------------------------------------
25212 Get message buffer
25213 -----------------------------------------------------------------------*/
25214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25215 sizeof(updateScanParams),
25216 &pSendBuffer, &usDataOffset, &usSendSize))||
25217 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25218 {
25219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025220 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025221 pwdiUpdateScanParams);
25222 WDI_ASSERT(0);
25223 return WDI_STATUS_E_FAILURE;
25224 }
25225
25226 //
25227 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25228 //
25229
25230 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25231 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25232
25233 updateScanParams.ucChannelCount =
25234 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25235 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25236 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25237 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25238
25239 wpalMemoryCopy( updateScanParams.aChannels,
25240 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25241 updateScanParams.ucChannelCount);
25242
25243
25244 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25245 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25246 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25247 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25248 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25249
25250 wpalMemoryCopy( pSendBuffer+usDataOffset,
25251 &updateScanParams,
25252 sizeof(updateScanParams));
25253
25254 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25255 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25256
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025257 /*Set the output values*/
25258 *ppSendBuffer = pSendBuffer;
25259 *pSize = usSendSize;
25260
25261 return WDI_STATUS_SUCCESS;
25262}
25263
25264/**
25265 @brief Process Update Scan Params function
25266
25267 @param pWDICtx: pointer to the WLAN DAL context
25268 pEventData: pointer to the event information structure
25269
25270 @see
25271 @return Result of the function call
25272*/
25273WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025274WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025275(
Jeff Johnson295189b2012-06-20 16:38:30 -070025276 WDI_ControlBlockType* pWDICtx,
25277 WDI_EventInfoType* pEventData
25278)
25279{
25280 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25281 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025282 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025284 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025285
25286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025288 -------------------------------------------------------------------------*/
25289 if (( NULL == pEventData ) ||
25290 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25291 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25292 {
25293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025297 }
25298
25299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25300 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025301
25302 //
25303 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25304 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025305 if ( pWDICtx->wlanVersion.revision < 1 )
25306 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025307 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025308 &pSendBuffer, &usSendSize);
25309 }
25310 else
25311 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025312 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25313 &pSendBuffer, &usSendSize);
25314 }
25315
25316 if(WDI_STATUS_SUCCESS != wdiStatus)
25317 {
25318 //memory allocation failed
25319 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025320 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025321
Jeff Johnson295189b2012-06-20 16:38:30 -070025322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025325 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025326 wdiUpdateScanParamsCb, pEventData->pUserData,
25327 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025328}
25329
25330/**
25331 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025332
25333 @param pWDICtx: pointer to the WLAN DAL context
25334 pEventData: pointer to the event information structure
25335
Jeff Johnson295189b2012-06-20 16:38:30 -070025336 @see
25337 @return Result of the function call
25338*/
25339WDI_Status
25340WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025341(
Jeff Johnson295189b2012-06-20 16:38:30 -070025342 WDI_ControlBlockType* pWDICtx,
25343 WDI_EventInfoType* pEventData
25344)
25345{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025346 WDI_LowLevelIndType wdiInd;
25347 tpPrefNetwFoundParams pNetwFoundParams;
25348 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025349
25350
25351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 -------------------------------------------------------------------------*/
25354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25355 ( NULL == pEventData->pEventData ))
25356 {
25357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025359 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 }
25362
25363 /*-------------------------------------------------------------------------
25364 Extract indication and send it to UMAC
25365 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025366 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25367
25368 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25369 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25370 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25371
25372 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25373 {
25374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25375 "%s: fail to allocate memory", __func__);
25376 return WDI_STATUS_MEM_FAILURE;
25377 }
25378
25379 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25380 (pNetwFoundParams->ssId.length < 32 )?
25381 pNetwFoundParams->ssId.length : 32;
25382 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25383 pNetwFoundParams->ssId.ssId,
25384 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25385 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25386 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25387 pNetwFoundParams->frameLength;
25388 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25389 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25390 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025391
25392 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025393 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025394
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 // DEBUG
25396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025397 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025399 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025400 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025401 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025402 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25403
ltimariu034f7d62013-01-24 18:54:33 -080025404 if ( pWDICtx->wdiLowLevelIndCB )
25405 {
25406 /*Notify UMAC*/
25407 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25408 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025409
25410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025411}
25412
25413/**
25414 @brief Process PNO Rsp function (called when a
25415 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025416
25417 @param pWDICtx: pointer to the WLAN DAL context
25418 pEventData: pointer to the event information structure
25419
Jeff Johnson295189b2012-06-20 16:38:30 -070025420 @see
25421 @return Result of the function call
25422*/
25423WDI_Status
25424WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025425(
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 WDI_ControlBlockType* pWDICtx,
25427 WDI_EventInfoType* pEventData
25428)
25429{
25430 WDI_Status wdiStatus;
25431 eHalStatus halStatus;
25432 WDI_PNOScanCb wdiPNOScanCb = NULL;
25433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25434
25435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 -------------------------------------------------------------------------*/
25438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25439 ( NULL == pEventData->pEventData ))
25440 {
25441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 }
25446
25447
Jeff Johnsone7245742012-09-05 17:12:55 -070025448 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025449
25450 /*-------------------------------------------------------------------------
25451 Extract response and send it to UMAC
25452 -------------------------------------------------------------------------*/
25453 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025454 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025455
25456 /*Notify UMAC*/
25457 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25458
Jeff Johnsone7245742012-09-05 17:12:55 -070025459 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025460}/*WDI_ProcessSetPreferredNetworkRsp*/
25461
25462/**
25463 @brief Process RSSI Filter Rsp function (called when a
25464 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025465
25466 @param pWDICtx: pointer to the WLAN DAL context
25467 pEventData: pointer to the event information structure
25468
Jeff Johnson295189b2012-06-20 16:38:30 -070025469 @see
25470 @return Result of the function call
25471*/
25472WDI_Status
25473WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025474(
Jeff Johnson295189b2012-06-20 16:38:30 -070025475 WDI_ControlBlockType* pWDICtx,
25476 WDI_EventInfoType* pEventData
25477)
25478{
25479 WDI_Status wdiStatus;
25480 eHalStatus halStatus;
25481 WDI_RssiFilterCb wdiRssiFilterCb;
25482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25483
25484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 -------------------------------------------------------------------------*/
25487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25488 ( NULL == pEventData->pEventData ))
25489 {
25490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 }
25495
Jeff Johnsone7245742012-09-05 17:12:55 -070025496 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025497
25498 /*-------------------------------------------------------------------------
25499 Extract response and send it to UMAC
25500 -------------------------------------------------------------------------*/
25501 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025502 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025503
25504 /*Notify UMAC*/
25505 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25506
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508}/*WDI_ProcessSetRssiFilterRsp*/
25509
25510/**
25511 @brief Process Update Scan Params Rsp function (called when a
25512 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025513
25514 @param pWDICtx: pointer to the WLAN DAL context
25515 pEventData: pointer to the event information structure
25516
Jeff Johnson295189b2012-06-20 16:38:30 -070025517 @see
25518 @return Result of the function call
25519*/
25520WDI_Status
25521WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025522(
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 WDI_ControlBlockType* pWDICtx,
25524 WDI_EventInfoType* pEventData
25525)
25526{
25527 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025528 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025530 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25532
25533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 -------------------------------------------------------------------------*/
25536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25537 ( NULL == pEventData->pEventData ))
25538 {
25539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 }
25544
25545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025546 "%s: Process UPD scan params ptr : %p",
25547 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025548
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025550
25551 /*-------------------------------------------------------------------------
25552 Extract response and send it to UMAC
25553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025554 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25555 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025556 sizeof(halUpdScanParams.status));
25557
25558 uStatus = halUpdScanParams.status;
25559
25560 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025561 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025562
25563 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025565
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025567
25568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025569 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 halUpdScanParams.status);
25571
25572 /*Notify UMAC*/
25573 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25574
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025576}
25577#endif // FEATURE_WLAN_SCAN_PNO
25578
25579#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025580WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025581WDI_8023MulticastListReq
25582(
25583 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25584 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25585 void* pUserData
25586)
25587{
25588 WDI_EventInfoType wdiEventData;
25589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25590
25591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025592 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025593
25594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025595 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 ------------------------------------------------------------------------*/
25597 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25598 {
25599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25600 "WDI API call before module is initialized - Fail request");
25601
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 }
25604
25605 /*------------------------------------------------------------------------
25606 Fill in Event data and post to the Main FSM
25607 ------------------------------------------------------------------------*/
25608 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025611 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 wdiEventData.pUserData = pUserData;
25613
25614 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25615}
25616
Jeff Johnsone7245742012-09-05 17:12:55 -070025617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025618WDI_ReceiveFilterSetFilterReq
25619(
25620 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25621 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25622 void* pUserData
25623)
25624{
25625 WDI_EventInfoType wdiEventData;
25626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25627
25628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025629 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025630
25631 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 ------------------------------------------------------------------------*/
25634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25635 {
25636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25637 "WDI API call before module is initialized - Fail request");
25638
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 }
25641
25642 /*------------------------------------------------------------------------
25643 Fill in Event data and post to the Main FSM
25644 ------------------------------------------------------------------------*/
25645 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025646 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25647 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025648 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25649 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 wdiEventData.pUserData = pUserData;
25652
25653
25654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25655}
25656
Jeff Johnsone7245742012-09-05 17:12:55 -070025657WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025658WDI_FilterMatchCountReq
25659(
25660 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25661 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25662 void* pUserData
25663)
25664{
25665 WDI_EventInfoType wdiEventData;
25666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25667
25668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025669 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025670
25671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025673 ------------------------------------------------------------------------*/
25674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25675 {
25676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25677 "WDI API call before module is initialized - Fail request");
25678
Jeff Johnsone7245742012-09-05 17:12:55 -070025679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025680 }
25681
25682 /*------------------------------------------------------------------------
25683 Fill in Event data and post to the Main FSM
25684 ------------------------------------------------------------------------*/
25685 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025686 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025687 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025688 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025689 wdiEventData.pUserData = pUserData;
25690
25691
25692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25693}
25694
Jeff Johnsone7245742012-09-05 17:12:55 -070025695WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025696WDI_ReceiveFilterClearFilterReq
25697(
25698 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25699 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25700 void* pUserData
25701)
25702{
25703 WDI_EventInfoType wdiEventData;
25704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25705
25706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025707 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025708
25709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025710 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 ------------------------------------------------------------------------*/
25712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25713 {
25714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25715 "WDI API call before module is initialized - Fail request");
25716
Jeff Johnsone7245742012-09-05 17:12:55 -070025717 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 }
25719
25720 /*------------------------------------------------------------------------
25721 Fill in Event data and post to the Main FSM
25722 ------------------------------------------------------------------------*/
25723 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025724 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025725 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025726 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025727 wdiEventData.pUserData = pUserData;
25728
25729
25730 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25731}
25732
25733/**
25734 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025735
25736 @param pWDICtx: pointer to the WLAN DAL context
25737 pEventData: pointer to the event information structure
25738
Jeff Johnson295189b2012-06-20 16:38:30 -070025739 @see
25740 @return Result of the function call
25741*/
25742WDI_Status
25743WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025744(
Jeff Johnson295189b2012-06-20 16:38:30 -070025745 WDI_ControlBlockType* pWDICtx,
25746 WDI_EventInfoType* pEventData
25747)
25748{
25749 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25750 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025751 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025752 wpt_uint16 usDataOffset = 0;
25753 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025754 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025756 wpt_uint8 ucCurrentBSSSesIdx = 0;
25757 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025758
25759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025760 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025761
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025762 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25763 if( NULL == pRcvFltMcAddrListType )
25764 {
25765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25766 "Failed to alloc in WDI_Process8023MulticastListReq");
25767 return WDI_STATUS_E_FAILURE;
25768 }
25769
Jeff Johnson295189b2012-06-20 16:38:30 -070025770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 -------------------------------------------------------------------------*/
25773 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025774 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025776 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025777 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25778 {
25779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025780 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025781 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025783 return WDI_STATUS_E_FAILURE;
25784 }
25785
25786 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25787 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25788 &pBSSSes);
25789 if ( NULL == pBSSSes )
25790 {
25791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025792 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025793 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025795 }
25796
25797 /*-----------------------------------------------------------------------
25798 Get message buffer
25799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25801 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025802 sizeof(tHalRcvFltMcAddrListType),
25803 &pSendBuffer, &usDataOffset, &usSendSize))||
25804 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25805 {
25806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25807 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025808 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025809 pEventData, pwdiFltPktSetMcListReqParamsType,
25810 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025811 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 }
25815
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025816 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025817 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025818 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025819 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025820 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025821 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25822 sizeof(tSirMacAddr));
25823 }
25824
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025825 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025827 pRcvFltMcAddrListType,
25828 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025829
25830 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025831 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025832
25833
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025834 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025840 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025841}
25842
25843/**
25844 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025845
25846 @param pWDICtx: pointer to the WLAN DAL context
25847 pEventData: pointer to the event information structure
25848
Jeff Johnson295189b2012-06-20 16:38:30 -070025849 @see
25850 @return Result of the function call
25851*/
25852WDI_Status
25853WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025854(
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 WDI_ControlBlockType* pWDICtx,
25856 WDI_EventInfoType* pEventData
25857)
25858{
25859 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25860 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025862 wpt_uint16 usDataOffset = 0;
25863 wpt_uint16 usSendSize = 0;
25864 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025865 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025867 wpt_uint8 ucCurrentBSSSesIdx = 0;
25868 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025869 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25870 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025871
25872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025873 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025874
25875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 -------------------------------------------------------------------------*/
25878 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25883 {
25884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 return WDI_STATUS_E_FAILURE;
25888 }
25889
25890 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25891 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25892 &pBSSSes);
25893 if ( NULL == pBSSSes )
25894 {
25895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025896 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 }
25899
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025900 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25901 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025902
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025903 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25904 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25905 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25906
25907 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25908 usSessRcvPktFilterCfgSize);
25909
25910 if(NULL == pSessRcvPktFilterCfg)
25911 {
25912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25913 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025914 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025915 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025916 WDI_ASSERT(0);
25917 return WDI_STATUS_E_FAILURE;
25918 }
25919
25920 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25921
25922 /*-----------------------------------------------------------------------
25923 Get message buffer
25924 -----------------------------------------------------------------------*/
25925
25926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25927 usSessRcvPktFilterCfgSize,
25928 &pSendBuffer, &usDataOffset, &usSendSize))||
25929 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25930 {
25931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25932 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025933 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025934 pEventData, pwdiSetRcvPktFilterReqInfo,
25935 wdiReceiveFilterSetFilterCb);
25936 WDI_ASSERT(0);
25937 wpalMemoryFree(pSessRcvPktFilterCfg);
25938 return WDI_STATUS_E_FAILURE;
25939 }
25940
25941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025942 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025943 usSendSize,pSessRcvPktFilterCfg);
25944
25945 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25946 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25947 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25948 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25949
25950 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25951
25952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25953 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25954 pSessRcvPktFilterCfg->filterType);
25955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25956 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25957 pSessRcvPktFilterCfg->coleasceTime);
25958
25959 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25960 {
25961 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25962 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25963 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25964 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25965 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25966 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25967 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25968 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25969
25970 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25971 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25972 8);
25973 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25974 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25975 8);
25976
25977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025978 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025979 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25980 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25981
25982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025983 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025984 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25985 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25986
25987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025988 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025989 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25990 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25991 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25992 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25993 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25994 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25995
25996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025997 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025998 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25999 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26000 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26001 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26002 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26003 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26004 }
26005
26006 wpalMemoryCopy( pSendBuffer+usDataOffset,
26007 pSessRcvPktFilterCfg,
26008 usSessRcvPktFilterCfgSize);
26009
26010
26011 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26012 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26013
26014 wpalMemoryFree(pSessRcvPktFilterCfg);
26015
26016 }
26017 /*If SLM_SESSIONIZATION is not supported then do this */
26018 else
26019 {
26020 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26021 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26022 * sizeof(tHalRcvPktFilterParams));
26023
26024 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026025 usRcvPktFilterCfgSize);
26026
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026027 if(NULL == pRcvPktFilterCfg)
26028 {
26029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26030 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026031 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026032 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026033 WDI_ASSERT(0);
26034 return WDI_STATUS_E_FAILURE;
26035 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026036
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026037 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026039 /*-----------------------------------------------------------------------
26040 Get message buffer
26041 -----------------------------------------------------------------------*/
26042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 usRcvPktFilterCfgSize,
26044 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026045 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26046 {
26047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026048 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026049 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026050 pEventData, pwdiSetRcvPktFilterReqInfo,
26051 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026052 WDI_ASSERT(0);
26053 wpalMemoryFree(pRcvPktFilterCfg);
26054 return WDI_STATUS_E_FAILURE;
26055 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026056
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026058 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 usSendSize,usRcvPktFilterCfgSize);
26060
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026061 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26062 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26063 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26064 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026065
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026072
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026073 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26074 {
26075 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26076 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26077 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26078 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26079 pRcvPktFilterCfg->paramsData[i].dataOffset =
26080 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26081 pRcvPktFilterCfg->paramsData[i].dataLength =
26082 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026083
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026084 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26086 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026087 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026088 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26089 8);
26090
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026092 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026093 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26095
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026097 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026098 pRcvPktFilterCfg->paramsData[i].dataOffset,
26099 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026100
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026102 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026103 pRcvPktFilterCfg->paramsData[i].compareData[0],
26104 pRcvPktFilterCfg->paramsData[i].compareData[1],
26105 pRcvPktFilterCfg->paramsData[i].compareData[2],
26106 pRcvPktFilterCfg->paramsData[i].compareData[3],
26107 pRcvPktFilterCfg->paramsData[i].compareData[4],
26108 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026111 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026112 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26113 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26114 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26115 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26116 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26117 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26118 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026119
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026120 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 pRcvPktFilterCfg,
26122 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026123
26124
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026125 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26126 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026127
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026129 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026130 wpalMemoryFree(pRcvPktFilterCfg);
26131 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026133 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026138}
26139
26140/**
26141 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026142
26143 @param pWDICtx: pointer to the WLAN DAL context
26144 pEventData: pointer to the event information structure
26145
Jeff Johnson295189b2012-06-20 16:38:30 -070026146 @see
26147 @return Result of the function call
26148*/
26149WDI_Status
26150WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026151(
Jeff Johnson295189b2012-06-20 16:38:30 -070026152 WDI_ControlBlockType* pWDICtx,
26153 WDI_EventInfoType* pEventData
26154)
26155{
26156 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26157 NULL;
26158 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26159 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 wpt_uint16 usDataOffset = 0;
26162 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026163 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26164 wpt_uint8 ucCurrentBSSSesIdx = 0;
26165 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026166
26167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026168 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026169
26170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 -------------------------------------------------------------------------*/
26173 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26178 {
26179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 }
26184
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026185 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26186 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26187 &pBSSSes);
26188 if ( NULL == pBSSSes )
26189 {
26190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026191 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026192 return WDI_STATUS_E_FAILURE;
26193 }
26194
Jeff Johnson295189b2012-06-20 16:38:30 -070026195 /*-----------------------------------------------------------------------
26196 Get message buffer
26197 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026198 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26199 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026200 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026201 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026202 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 {
26204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26205 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026206 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026207 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26208 wdiFilterMatchCountCb);
26209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026211 }
26212
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026213 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26214 wpalMemoryCopy( pSendBuffer+usDataOffset,
26215 &rcvFltPktMatchCntReqParam,
26216 sizeof(rcvFltPktMatchCntReqParam));
26217
Jeff Johnson295189b2012-06-20 16:38:30 -070026218 //
26219 // Don't need to fill send buffer other than header
26220 //
26221 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026222 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026223
26224
26225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026226 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26229 wdiFilterMatchCountCb,
26230 pEventData->pUserData,
26231 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026232}
26233
26234/**
26235 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026236
26237 @param pWDICtx: pointer to the WLAN DAL context
26238 pEventData: pointer to the event information structure
26239
Jeff Johnson295189b2012-06-20 16:38:30 -070026240 @see
26241 @return Result of the function call
26242*/
26243WDI_Status
26244WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026245(
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 WDI_ControlBlockType* pWDICtx,
26247 WDI_EventInfoType* pEventData
26248)
Jeff Johnsone7245742012-09-05 17:12:55 -070026249{
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26251 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 wpt_uint16 usDataOffset = 0;
26254 wpt_uint16 usSendSize = 0;
26255 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026256 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026257 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026258
26259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026260 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026261
26262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 -------------------------------------------------------------------------*/
26265 if (( NULL == pEventData ) ||
26266 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26267 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026268 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26270 {
26271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 return WDI_STATUS_E_FAILURE;
26275 }
26276
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026277 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026278 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26279 &pBSSSes);
26280 if ( NULL == pBSSSes )
26281 {
26282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026283 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 }
26286
26287 /*-----------------------------------------------------------------------
26288 Get message buffer
26289 -----------------------------------------------------------------------*/
26290 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026291 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026292 sizeof(tHalRcvFltPktClearParam),
26293 &pSendBuffer, &usDataOffset, &usSendSize))||
26294 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26295 {
26296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26297 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026298 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 pEventData, pwdiRcvFltPktClearReqParamsType,
26300 wdiRcvFltPktClearFilterCb);
26301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 }
26304
26305
26306 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026307 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026308 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026309 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026310
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26312 wpalMemoryCopy( pSendBuffer+usDataOffset,
26313 &rcvFltPktClearParam,
26314 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026315
26316 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026318
26319
26320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026323 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026324 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026325 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026326}
26327
26328/**
26329 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026330
26331 @param pWDICtx: pointer to the WLAN DAL context
26332 pEventData: pointer to the event information structure
26333
Jeff Johnson295189b2012-06-20 16:38:30 -070026334 @see
26335 @return Result of the function call
26336*/
26337WDI_Status
26338WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026339(
Jeff Johnson295189b2012-06-20 16:38:30 -070026340 WDI_ControlBlockType* pWDICtx,
26341 WDI_EventInfoType* pEventData
26342)
26343{
Jeff Johnson295189b2012-06-20 16:38:30 -070026344 eHalStatus halStatus;
26345 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026346 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26347 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26349
26350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026351 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026352
26353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 -------------------------------------------------------------------------*/
26356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26357 ( NULL == pEventData->pEventData ))
26358 {
26359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026363 }
26364
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026366
26367 /*-------------------------------------------------------------------------
26368 Extract response and send it to UMAC
26369 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026370 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26371 {
26372 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26373 pEventData->pEventData,
26374 sizeof(halRcvFltPktSetMcListRsp));
26375
26376 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26377 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26378 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26379 halRcvFltPktSetMcListRsp.bssIdx;
26380 }
26381 else
26382 {
26383 halStatus = *((eHalStatus*)pEventData->pEventData);
26384 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26385 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026386
26387 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026388 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026389
Jeff Johnsone7245742012-09-05 17:12:55 -070026390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026391}
26392
26393/**
26394 @brief Process Set Rsp function (called when a
26395 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026396
26397 @param pWDICtx: pointer to the WLAN DAL context
26398 pEventData: pointer to the event information structure
26399
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 @see
26401 @return Result of the function call
26402*/
26403WDI_Status
26404WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026405(
Jeff Johnson295189b2012-06-20 16:38:30 -070026406 WDI_ControlBlockType* pWDICtx,
26407 WDI_EventInfoType* pEventData
26408)
26409{
Jeff Johnson295189b2012-06-20 16:38:30 -070026410 eHalStatus halStatus;
26411 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026412 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26413 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26415
26416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026417 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026418
26419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026421 -------------------------------------------------------------------------*/
26422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26423 ( NULL == pEventData->pEventData ))
26424 {
26425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 }
26430
26431 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026432 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026433
26434 /*-------------------------------------------------------------------------
26435 Extract response and send it to UMAC
26436 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026437 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26438 {
26439 wpalMemoryCopy( &halSetPktFilterRspParams,
26440 pEventData->pEventData,
26441 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026443 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26444 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26445 }
26446 else
26447 {
26448 halStatus = *((eHalStatus*)pEventData->pEventData);
26449 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026451 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026452 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026453
Jeff Johnsone7245742012-09-05 17:12:55 -070026454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026455}
26456
26457/**
26458 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026459
26460 @param pWDICtx: pointer to the WLAN DAL context
26461 pEventData: pointer to the event information structure
26462
Jeff Johnson295189b2012-06-20 16:38:30 -070026463 @see
26464 @return Result of the function call
26465*/
26466WDI_Status
26467WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026468(
Jeff Johnson295189b2012-06-20 16:38:30 -070026469 WDI_ControlBlockType* pWDICtx,
26470 WDI_EventInfoType* pEventData
26471)
26472{
Jeff Johnson295189b2012-06-20 16:38:30 -070026473 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026475 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26476 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026477
26478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26479
26480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026481 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026482
26483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026485 -------------------------------------------------------------------------*/
26486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26487 ( NULL == pEventData->pEventData ))
26488 {
26489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026493 }
26494
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026496
26497 /*-------------------------------------------------------------------------
26498 Extract response and send it to UMAC
26499 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026500 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26501 {
26502 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26503 pEventData->pEventData,
26504 sizeof(halRcvFltrPktMatachRsp));
26505
26506 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26507 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26508 }
26509 else
26510 {
26511 halStatus = *((eHalStatus*)pEventData->pEventData);
26512 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26513 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026514
26515 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026516 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026517
Jeff Johnsone7245742012-09-05 17:12:55 -070026518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026519}
26520
26521/**
26522 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026523
26524 @param pWDICtx: pointer to the WLAN DAL context
26525 pEventData: pointer to the event information structure
26526
Jeff Johnson295189b2012-06-20 16:38:30 -070026527 @see
26528 @return Result of the function call
26529*/
26530WDI_Status
26531WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026532(
Jeff Johnson295189b2012-06-20 16:38:30 -070026533 WDI_ControlBlockType* pWDICtx,
26534 WDI_EventInfoType* pEventData
26535)
26536{
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 eHalStatus halStatus;
26538 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026539 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26540 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26542
26543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026544 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026545
26546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026548 -------------------------------------------------------------------------*/
26549 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26550 ( NULL == pEventData->pEventData ))
26551 {
26552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026553 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026556 }
26557
26558 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026559 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026560
26561 /*-------------------------------------------------------------------------
26562 Extract response and send it to UMAC
26563 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026564 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26565 {
26566 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26567 pEventData->pEventData,
26568 sizeof(halRcvFltPktClearRspMsg));
26569
26570 wdiRcvFltPktClearRspParamsType.wdiStatus =
26571 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26572 wdiRcvFltPktClearRspParamsType.bssIdx =
26573 halRcvFltPktClearRspMsg.bssIdx;
26574 }
26575 else
26576 {
26577 halStatus = *((eHalStatus*)pEventData->pEventData);
26578 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26579 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026580
26581 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026582 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
Jeff Johnsone7245742012-09-05 17:12:55 -070026584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026585}
26586#endif // WLAN_FEATURE_PACKET_FILTERING
26587
26588/**
26589 @brief Process Shutdown Rsp function
26590 There is no shutdown response comming from HAL
26591 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026592
Jeff Johnson295189b2012-06-20 16:38:30 -070026593 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026594 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026595
26596 @see
26597 @return Result of the function call
26598*/
26599WDI_Status
26600WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026601(
Jeff Johnson295189b2012-06-20 16:38:30 -070026602 WDI_ControlBlockType* pWDICtx,
26603 WDI_EventInfoType* pEventData
26604)
26605{
26606 /*There is no shutdown response comming from HAL - function just kept for
26607 simmetry */
26608 WDI_ASSERT(0);
26609 return WDI_STATUS_SUCCESS;
26610}/*WDI_ProcessShutdownRsp*/
26611
26612/**
26613 @brief WDI_SetPowerParamsReq
26614
Jeff Johnsone7245742012-09-05 17:12:55 -070026615 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026617
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 wdiPowerParamsCb: callback for passing back the response
26619 of the Set Power Params operation received from the
26620 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026621
Jeff Johnson295189b2012-06-20 16:38:30 -070026622 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026623 callback
26624
Jeff Johnson295189b2012-06-20 16:38:30 -070026625 @return Result of the function call
26626*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026627WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026628WDI_SetPowerParamsReq
26629(
26630 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26631 WDI_SetPowerParamsCb wdiPowerParamsCb,
26632 void* pUserData
26633)
26634{
26635 WDI_EventInfoType wdiEventData;
26636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26637
26638 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026639 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026640 ------------------------------------------------------------------------*/
26641 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26642 {
26643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26644 "WDI API call before module is initialized - Fail request");
26645
Jeff Johnsone7245742012-09-05 17:12:55 -070026646 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026647 }
26648
26649 /*------------------------------------------------------------------------
26650 Fill in Event data and post to the Main FSM
26651 ------------------------------------------------------------------------*/
26652 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026653 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026655 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026656 wdiEventData.pUserData = pUserData;
26657
26658 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26659}/*WDI_SetPowerParamsReq*/
26660
26661/**
26662 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026663
26664 @param pWDICtx: pointer to the WLAN DAL context
26665 pEventData: pointer to the event information structure
26666
Jeff Johnson295189b2012-06-20 16:38:30 -070026667 @see
26668 @return Result of the function call
26669*/
26670WDI_Status
26671WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026672(
Jeff Johnson295189b2012-06-20 16:38:30 -070026673 WDI_ControlBlockType* pWDICtx,
26674 WDI_EventInfoType* pEventData
26675)
26676{
26677 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26678 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026679 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026680 wpt_uint16 usDataOffset = 0;
26681 wpt_uint16 usSendSize = 0;
26682 tSetPowerParamsType powerParams;
26683
26684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026686 -------------------------------------------------------------------------*/
26687 if (( NULL == pEventData ) ||
26688 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26689 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26690 {
26691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026695 }
26696
26697 /*-----------------------------------------------------------------------
26698 Get message buffer
26699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 sizeof(powerParams),
26702 &pSendBuffer, &usDataOffset, &usSendSize))||
26703 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26704 {
26705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026706 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026707 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026710 }
26711
26712 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026713 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026714 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26715
26716 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026717 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026718 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26719
26720 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026721 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026722 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26723
26724 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026725 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026726 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26727
26728 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026729 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026730 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26731
26732 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026733 powerParams.uBETInterval =
26734 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026735
Yue Ma0da19492013-05-13 17:01:29 -070026736 /* MAX LI for modulated DTIM */
26737 powerParams.uMaxLIModulatedDTIM =
26738 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026739
26740 wpalMemoryCopy( pSendBuffer+usDataOffset,
26741 &powerParams,
26742 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026743
26744 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026745 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026746
26747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026748 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26751 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026752}
26753
26754/**
26755 @brief Process Power Params Rsp function (called when a
26756 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026757
26758 @param pWDICtx: pointer to the WLAN DAL context
26759 pEventData: pointer to the event information structure
26760
Jeff Johnson295189b2012-06-20 16:38:30 -070026761 @see
26762 @return Result of the function call
26763*/
26764WDI_Status
26765WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026766(
Jeff Johnson295189b2012-06-20 16:38:30 -070026767 WDI_ControlBlockType* pWDICtx,
26768 WDI_EventInfoType* pEventData
26769)
26770{
26771 WDI_Status wdiStatus;
26772 eHalStatus halStatus;
26773 WDI_SetPowerParamsCb wdiPowerParamsCb;
26774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26775
26776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026778 -------------------------------------------------------------------------*/
26779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26780 ( NULL == pEventData->pEventData ))
26781 {
26782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026786 }
26787
Jeff Johnsone7245742012-09-05 17:12:55 -070026788 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026789
26790 /*-------------------------------------------------------------------------
26791 Extract response and send it to UMAC
26792 -------------------------------------------------------------------------*/
26793 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026794 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026795
26796 /*Notify UMAC*/
26797 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26798
Jeff Johnsone7245742012-09-05 17:12:55 -070026799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026800}/*WDI_ProcessSetPowerParamsRsp*/
26801
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026802/**
26803 @brief WDI_dhcpStartInd
26804 Host will send an event to the FW when DHCP is initiated
26805
26806 @param
26807 WDI_DHCPInd: DHCP Indication
26808 @see
26809 @return Result of the function call
26810*/
26811WDI_Status
26812WDI_dhcpStartInd
26813(
26814 WDI_DHCPInd *wdiDHCPInd
26815)
26816{
26817 WDI_EventInfoType wdiEventData;
26818
26819 /*------------------------------------------------------------------------
26820 Sanity Check
26821 ------------------------------------------------------------------------*/
26822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26823 {
26824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26825 "WDI API call before module is initialized - Fail request");
26826
26827 return WDI_STATUS_E_NOT_ALLOWED;
26828 }
26829
26830 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26831 wdiEventData.pEventData = wdiDHCPInd;
26832 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26833 wdiEventData.pCBfnc = NULL;
26834 wdiEventData.pUserData = NULL;
26835
26836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26837}
26838
26839
26840/**
26841 @brief WDI_dhcpStopInd
26842 Host will send an event to the FW when DHCP is completed
26843
26844 @param
26845 WDI_DHCPInd: DHCP Indication
26846 @see
26847 @return Result of the function call
26848*/
26849WDI_Status
26850WDI_dhcpStopInd
26851(
26852 WDI_DHCPInd *wdiDHCPInd
26853)
26854{
26855 WDI_EventInfoType wdiEventData;
26856
26857 /*------------------------------------------------------------------------
26858 Sanity Check
26859 ------------------------------------------------------------------------*/
26860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26861 {
26862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26863 "WDI API call before module is initialized - Fail request");
26864
26865 return WDI_STATUS_E_NOT_ALLOWED;
26866 }
26867
26868 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26869 wdiEventData.pEventData = wdiDHCPInd;
26870 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26871 wdiEventData.pCBfnc = NULL;
26872 wdiEventData.pUserData = NULL;
26873
26874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26875}
26876
26877
26878/**
26879 @brief Process DHCP Start Indication message and post it to HAL
26880
26881 @param pWDICtx: pointer to the WLAN DAL context
26882 pEventData: pointer to the event information structure
26883
26884 @see
26885 @return Result of the function call
26886*/
26887WDI_Status
26888WDI_ProcessDHCPStartInd
26889(
26890 WDI_ControlBlockType* pWDICtx,
26891 WDI_EventInfoType* pEventData
26892)
26893{
26894 wpt_uint8* pSendBuffer = NULL;
26895 wpt_uint16 usDataOffset = 0;
26896 wpt_uint16 usSendSize = 0;
26897 wpt_uint16 usLen = 0;
26898 WDI_DHCPInd* pwdiDHCPInd = NULL;
26899 tDHCPInfo* pDHCPInfo;
26900
26901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26902
26903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26904 "%s", __func__);
26905
26906 /*-------------------------------------------------------------------------
26907 Sanity check
26908 -------------------------------------------------------------------------*/
26909 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26910 {
26911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26912 "%s: Invalid parameters", __func__);
26913 WDI_ASSERT(0);
26914 return WDI_STATUS_E_FAILURE;
26915 }
26916 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26917 /*-----------------------------------------------------------------------
26918 Get message buffer
26919 -----------------------------------------------------------------------*/
26920
26921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26922 WDI_DHCP_START_IND,
26923 sizeof(tDHCPInfo),
26924 &pSendBuffer, &usDataOffset, &usSendSize))||
26925 ( usSendSize < (usDataOffset + usLen )))
26926 {
26927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26928 "Unable to get send buffer in DHCP Start req %p ",
26929 pEventData);
26930 WDI_ASSERT(0);
26931 return WDI_STATUS_E_FAILURE;
26932 }
26933
26934 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26935 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26936 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26937 WDI_MAC_ADDR_LEN);
26938
26939 pWDICtx->pReqStatusUserData = NULL;
26940 pWDICtx->pfncRspCB = NULL;
26941
26942 /*-------------------------------------------------------------------------
26943 Send DHCP Start Indication to HAL
26944 -------------------------------------------------------------------------*/
26945 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26946
26947}/*WDI_ProcessDHCPStartInd*/
26948
26949/**
26950 @brief Process DHCP Stop indication message and post it to HAL
26951
26952 @param pWDICtx: pointer to the WLAN DAL context
26953 pEventData: pointer to the event information structure
26954
26955 @see
26956 @return Result of the function call
26957*/
26958WDI_Status
26959WDI_ProcessDHCPStopInd
26960(
26961 WDI_ControlBlockType* pWDICtx,
26962 WDI_EventInfoType* pEventData
26963)
26964{
26965 wpt_uint8* pSendBuffer = NULL;
26966 wpt_uint16 usDataOffset = 0;
26967 wpt_uint16 usSendSize = 0;
26968 wpt_uint16 usLen = 0;
26969 WDI_DHCPInd* pwdiDHCPInd = NULL;
26970 tDHCPInfo* pDHCPInfo;
26971
26972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26973
26974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26975 "%s", __func__);
26976
26977 /*-------------------------------------------------------------------------
26978 Sanity check
26979 -------------------------------------------------------------------------*/
26980
26981 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26982 {
26983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26984 "%s: Invalid parameters", __func__);
26985 WDI_ASSERT(0);
26986 return WDI_STATUS_E_FAILURE;
26987 }
26988 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26989 /*-----------------------------------------------------------------------
26990 Get message buffer
26991 -----------------------------------------------------------------------*/
26992
26993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26994 WDI_DHCP_STOP_IND,
26995 sizeof(tDHCPInfo),
26996 &pSendBuffer, &usDataOffset, &usSendSize))||
26997 ( usSendSize < (usDataOffset + usLen )))
26998 {
26999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27000 "Unable to get send buffer in DHCP Start req %p ",
27001 pEventData);
27002 WDI_ASSERT(0);
27003 return WDI_STATUS_E_FAILURE;
27004 }
27005
27006 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27007 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27008 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27009 WDI_MAC_ADDR_LEN);
27010
27011 pWDICtx->pReqStatusUserData = NULL;
27012 pWDICtx->pfncRspCB = NULL;
27013 /*-------------------------------------------------------------------------
27014 Send DHCP Stop indication to HAL
27015 -------------------------------------------------------------------------*/
27016 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27017
27018}/*WDI_ProcessDHCPStopInd*/
27019
27020
Jeff Johnson295189b2012-06-20 16:38:30 -070027021#ifdef WLAN_FEATURE_GTK_OFFLOAD
27022/**
27023 @brief WDI_GTKOffloadReq will be called when the upper MAC
27024 wants to set GTK Rekey Counter while in power save. Upon
27025 the call of this API the WLAN DAL will pack and send a
27026 HAL GTK offload request message to the lower RIVA
27027 sub-system if DAL is in state STARTED.
27028
27029 In state BUSY this request will be queued. Request won't
27030 be allowed in any other state.
27031
27032 WDI_PostAssocReq must have been called.
27033
27034 @param pwdiGtkOffloadParams: the GTK offload as specified
27035 by the Device Interface
27036
27037 wdiGtkOffloadCb: callback for passing back the response
27038 of the GTK offload operation received from the device
27039
27040 pUserData: user data will be passed back with the
27041 callback
27042
27043 @see WDI_PostAssocReq
27044 @return Result of the function call
27045*/
27046WDI_Status
27047WDI_GTKOffloadReq
27048(
27049 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27050 WDI_GtkOffloadCb wdiGtkOffloadCb,
27051 void* pUserData
27052)
27053{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027054 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27056
27057 /*------------------------------------------------------------------------
27058 Sanity Check
27059 ------------------------------------------------------------------------*/
27060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27061 {
27062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27063 "WDI API call before module is initialized - Fail request");
27064
27065 return WDI_STATUS_E_NOT_ALLOWED;
27066 }
27067
27068 /*------------------------------------------------------------------------
27069 Fill in Event data and post to the Main FSM
27070 ------------------------------------------------------------------------*/
27071 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27072 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027073 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027074 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27075 wdiEventData.pUserData = pUserData;
27076
27077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27078}
27079
27080
27081/**
27082 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27083 MAC wants to get GTK Rekey Counter while in power save.
27084 Upon the call of this API the WLAN DAL will pack and
27085 send a HAL GTK offload request message to the lower RIVA
27086 sub-system if DAL is in state STARTED.
27087
27088 In state BUSY this request will be queued. Request won't
27089 be allowed in any other state.
27090
27091 WDI_PostAssocReq must have been called.
27092
27093 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27094 Information Message as specified by the
27095 Device Interface
27096
27097 wdiGtkOffloadGetInfoCb: callback for passing back the
27098 response of the GTK offload operation received from the
27099 device
27100
27101 pUserData: user data will be passed back with the
27102 callback
27103
27104 @see WDI_PostAssocReq
27105 @return Result of the function call
27106*/
27107WDI_Status
27108WDI_GTKOffloadGetInfoReq
27109(
27110 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27111 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27112 void* pUserData
27113)
27114{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027115 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27117
27118 /*------------------------------------------------------------------------
27119 Sanity Check
27120 ------------------------------------------------------------------------*/
27121 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27122 {
27123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27124 "WDI API call before module is initialized - Fail request");
27125
27126 return WDI_STATUS_E_NOT_ALLOWED;
27127 }
27128
27129 /*------------------------------------------------------------------------
27130 Fill in Event data and post to the Main FSM
27131 ------------------------------------------------------------------------*/
27132 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27133 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27134 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27135 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27136 wdiEventData.pUserData = pUserData;
27137
27138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27139}
27140
27141
27142/**
27143 @brief Process set GTK Offload Request function
27144
27145 @param pWDICtx: pointer to the WLAN DAL context
27146 pEventData: pointer to the event information structure
27147
27148 @see
27149 @return Result of the function call
27150*/
27151WDI_Status
27152WDI_ProcessGTKOffloadReq
27153(
27154 WDI_ControlBlockType* pWDICtx,
27155 WDI_EventInfoType* pEventData
27156)
27157{
27158 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27159 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27160 wpt_uint8* pSendBuffer = NULL;
27161 wpt_uint16 usDataOffset = 0;
27162 wpt_uint16 usSendSize = 0;
27163 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027164 wpt_uint8 ucCurrentSessionId = 0;
27165 WDI_BSSSessionType* pBSSSes = NULL;
27166
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27168
27169 /*-------------------------------------------------------------------------
27170 Sanity check
27171 -------------------------------------------------------------------------*/
27172 if (( NULL == pEventData ) ||
27173 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27174 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27175 {
27176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027179 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 }
27181
27182 /*-----------------------------------------------------------------------
27183 Get message buffer
27184 -----------------------------------------------------------------------*/
27185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27186 sizeof(gtkOffloadReqParams),
27187 &pSendBuffer, &usDataOffset, &usSendSize))||
27188 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27189 {
27190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027191 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027192 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27193 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027194 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027195 }
27196
27197 //
27198 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27199 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027200 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27201 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27202 &pBSSSes);
27203 if ( NULL == pBSSSes )
27204 {
27205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027206 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027207 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027208 }
27209
27210 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27211
Jeff Johnson295189b2012-06-20 16:38:30 -070027212 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27213 // Copy KCK
27214 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27215 // Copy KEK
27216 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27217 // Copy KeyReplayCounter
27218 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27219
27220 wpalMemoryCopy( pSendBuffer+usDataOffset,
27221 &gtkOffloadReqParams,
27222 sizeof(gtkOffloadReqParams));
27223
27224 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27225 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27226
27227 /*-------------------------------------------------------------------------
27228 Send Get STA Request to HAL
27229 -------------------------------------------------------------------------*/
27230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27231 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027232
27233fail:
27234 // Release the message buffer so we don't leak
27235 wpalMemoryFree(pSendBuffer);
27236
27237failRequest:
27238 //WDA should have failure check to avoid the memory leak
27239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027240}
27241
27242
27243/**
27244 @brief Process GTK Offload Get Information Request function
27245
27246 @param pWDICtx: pointer to the WLAN DAL context
27247 pEventData: pointer to the event information structure
27248
27249 @see
27250 @return Result of the function call
27251*/
27252WDI_Status
27253WDI_ProcessGTKOffloadGetInfoReq
27254(
27255 WDI_ControlBlockType* pWDICtx,
27256 WDI_EventInfoType* pEventData
27257)
27258{
27259 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27260 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27261 wpt_uint8* pSendBuffer = NULL;
27262 wpt_uint16 usDataOffset = 0;
27263 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027264 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27265 wpt_uint8 ucCurrentSessionId = 0;
27266 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027267
27268 /*-------------------------------------------------------------------------
27269 Sanity check
27270 -------------------------------------------------------------------------*/
27271 if (( NULL == pEventData ) ||
27272 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27273 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27274 {
27275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027278 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027279 }
27280
27281 /*-----------------------------------------------------------------------
27282 Get message buffer
27283 -----------------------------------------------------------------------*/
27284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027285 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027287 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 {
27289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027290 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27292 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027293 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027294 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027295 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27296 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27297 &pBSSSes);
27298 if ( NULL == pBSSSes )
27299 {
27300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027301 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027302 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027303 }
27304 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027305
27306 //
27307 // Don't need to fill send buffer other than header
27308 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027309 wpalMemoryCopy( pSendBuffer+usDataOffset,
27310 &halGtkOffloadGetInfoReqParams,
27311 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027312
27313 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27314 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27315
27316 /*-------------------------------------------------------------------------
27317 Send Get STA Request to HAL
27318 -------------------------------------------------------------------------*/
27319 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27320 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027321fail:
27322 // Release the message buffer so we don't leak
27323 wpalMemoryFree(pSendBuffer);
27324
27325failRequest:
27326 //WDA should have failure check to avoid the memory leak
27327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027328}
27329
27330/**
27331 @brief Process host offload Rsp function (called when a
27332 response is being received over the bus from HAL)
27333
27334 @param pWDICtx: pointer to the WLAN DAL context
27335 pEventData: pointer to the event information structure
27336
27337 @see
27338 @return Result of the function call
27339*/
27340WDI_Status
27341WDI_ProcessGtkOffloadRsp
27342(
27343 WDI_ControlBlockType* pWDICtx,
27344 WDI_EventInfoType* pEventData
27345)
27346{
Jeff Johnson295189b2012-06-20 16:38:30 -070027347 eHalStatus halStatus;
27348 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027349 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27350 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027351
27352 /*-------------------------------------------------------------------------
27353 Sanity check
27354 -------------------------------------------------------------------------*/
27355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27356 ( NULL == pEventData->pEventData))
27357 {
27358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 WDI_ASSERT(0);
27361 return WDI_STATUS_E_FAILURE;
27362 }
27363
Wilson Yangcf2cf012013-10-10 23:13:38 -070027364 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27365
Jeff Johnson295189b2012-06-20 16:38:30 -070027366 /*-------------------------------------------------------------------------
27367 Extract response and send it to UMAC
27368 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027369 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27370 {
27371 wpalMemoryCopy( &halGtkOffloadRspParams,
27372 pEventData->pEventData,
27373 sizeof(halGtkOffloadRspParams));
27374
27375 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027376 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027377 wdiGtkOffloadRsparams.bssIdx =
27378 halGtkOffloadRspParams.bssIdx;
27379 }
27380 else
27381 {
27382 halStatus = *((eHalStatus*)pEventData->pEventData);
27383 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27384 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027385
27386 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027387 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027388
27389 return WDI_STATUS_SUCCESS;
27390}
27391
27392/**
27393 @brief Process GTK Offload Get Information Response function
27394
27395 @param pWDICtx: pointer to the WLAN DAL context
27396 pEventData: pointer to the event information structure
27397
27398 @see
27399 @return Result of the function call
27400*/
27401WDI_Status
27402WDI_ProcessGTKOffloadGetInfoRsp
27403(
27404 WDI_ControlBlockType* pWDICtx,
27405 WDI_EventInfoType* pEventData
27406)
27407{
Jeff Johnson295189b2012-06-20 16:38:30 -070027408 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027409 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027410 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27411 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027412 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027413
Jeff Johnson295189b2012-06-20 16:38:30 -070027414
27415 /*-------------------------------------------------------------------------
27416 Sanity check
27417 -------------------------------------------------------------------------*/
27418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27419 ( NULL == pEventData->pEventData ))
27420 {
27421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027423 WDI_ASSERT(0);
27424 return WDI_STATUS_E_FAILURE;
27425 }
27426
Wilson Yangcf2cf012013-10-10 23:13:38 -070027427 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27428
27429 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 Extract response and send it to UMAC
27431 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027432 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27433 {
27434 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27435 pEventData->pEventData,
27436 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027437
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027438 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027439 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027440 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27441 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27442 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27443 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27444 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27445 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27446 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27447 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027448
27449 wpalMutexAcquire(&pWDICtx->wptMutex);
27450 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27451 &pBSSSes);
27452
27453 if ( NULL == pBSSSes )
27454 {
27455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27456 "Association sequence for this BSS does not exist or "
27457 "association no longer in progress - mysterious HAL response");
27458 wpalMutexRelease(&pWDICtx->wptMutex);
27459 return WDI_STATUS_E_NOT_ALLOWED;
27460 }
27461
27462 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27463 sizeof (wpt_macAddr));
27464 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027465 }
27466 else
27467 {
27468 halStatus = *((eHalStatus*)pEventData->pEventData);
27469 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027471 /*Notify UMAC*/
27472 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27473 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027474 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027475
27476 return WDI_STATUS_SUCCESS;
27477}
27478#endif // WLAN_FEATURE_GTK_OFFLOAD
27479
27480#ifdef WLAN_WAKEUP_EVENTS
27481WDI_Status
27482WDI_ProcessWakeReasonInd
27483(
27484 WDI_ControlBlockType* pWDICtx,
27485 WDI_EventInfoType* pEventData
27486)
27487{
27488 WDI_LowLevelIndType *pWdiInd;
27489 tpWakeReasonParams pWakeReasonParams;
27490 wpt_uint32 allocSize = 0;
27491
27492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027493 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027494
27495 /*-------------------------------------------------------------------------
27496 Sanity check
27497 -------------------------------------------------------------------------*/
27498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27499 ( NULL == pEventData->pEventData ))
27500 {
27501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 WDI_ASSERT( 0 );
27504 return WDI_STATUS_E_FAILURE;
27505 }
27506
27507 /*-------------------------------------------------------------------------
27508 Extract indication and send it to UMAC
27509 -------------------------------------------------------------------------*/
27510 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27511
27512 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27513
27514 //Allocate memory for WDI_WakeReasonIndType structure
27515 pWdiInd = wpalMemoryAllocate(allocSize) ;
27516
27517 if(NULL == pWdiInd)
27518 {
27519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027520 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027521 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027522 WDI_ASSERT(0);
27523 return WDI_STATUS_E_FAILURE;
27524 }
27525
27526 wpalMemoryZero(pWdiInd, allocSize);
27527
27528 /* Fill in the indication parameters*/
27529 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27530 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27531 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27532 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27533 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27534 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27535 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27536 &(pWakeReasonParams->aDataStart[0]),
27537 pWakeReasonParams->ulStoredDataLen);
27538
ltimariu034f7d62013-01-24 18:54:33 -080027539
27540 if ( pWDICtx->wdiLowLevelIndCB )
27541 {
27542 /*Notify UMAC*/
27543 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27544 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027545
27546 //Free memory allocated for WDI_WakeReasonIndType structure
27547 wpalMemoryFree(pWdiInd);
27548
27549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027550 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027551
27552 return WDI_STATUS_SUCCESS;
27553}
27554#endif // WLAN_WAKEUP_EVENTS
27555
27556void WDI_GetWcnssCompiledApiVersion
27557(
27558 WDI_WlanVersionType *pWcnssApiVersion
27559)
27560{
27561 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27562 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27563 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27564 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27565}
27566
27567/**
27568 @brief Process Set TM Level Rsp function (called when a
27569 response is being received over the bus from HAL)
27570
27571 @param pWDICtx: pointer to the WLAN DAL context
27572 pEventData: pointer to the event information structure
27573
27574 @see
27575 @return Result of the function call
27576*/
27577WDI_Status
27578WDI_ProcessSetTmLevelRsp
27579(
27580 WDI_ControlBlockType* pWDICtx,
27581 WDI_EventInfoType* pEventData
27582)
27583{
27584 WDI_Status wdiStatus;
27585 eHalStatus halStatus;
27586 WDI_SetTmLevelCb wdiSetTmLevelCb;
27587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27588
27589 /*-------------------------------------------------------------------------
27590 Sanity check
27591 -------------------------------------------------------------------------*/
27592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27593 ( NULL == pEventData->pEventData ))
27594 {
27595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027597 WDI_ASSERT(0);
27598 return WDI_STATUS_E_FAILURE;
27599 }
27600
27601 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27602
27603 /*-------------------------------------------------------------------------
27604 Extract response and send it to UMAC
27605 -------------------------------------------------------------------------*/
27606 halStatus = *((eHalStatus*)pEventData->pEventData);
27607 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27608
27609 /*Notify UMAC*/
27610 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27611
27612 return WDI_STATUS_SUCCESS;
27613}/*WDI_ProcessSetTmLevelRsp*/
27614
27615/**
27616 @brief Process Set Thermal Mitigation level Changed request
27617
27618 @param pWDICtx: pointer to the WLAN DAL context
27619 pEventData: pointer to the event information structure
27620
27621 @see
27622 @return Result of the function call
27623*/
27624WDI_Status
27625WDI_ProcessSetTmLevelReq
27626(
27627 WDI_ControlBlockType* pWDICtx,
27628 WDI_EventInfoType* pEventData
27629)
27630{
27631 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27632 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27633 wpt_uint8* pSendBuffer = NULL;
27634 wpt_uint16 usDataOffset = 0;
27635 wpt_uint16 usSendSize = 0;
27636 tSetThermalMitgationType halTmMsg;
27637
27638 /*-------------------------------------------------------------------------
27639 Sanity check
27640 -------------------------------------------------------------------------*/
27641 if (( NULL == pEventData ) ||
27642 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27643 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27644 {
27645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027647 WDI_ASSERT(0);
27648 return WDI_STATUS_E_FAILURE;
27649 }
27650
27651 /*-----------------------------------------------------------------------
27652 Get message buffer
27653 -----------------------------------------------------------------------*/
27654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27655 sizeof(halTmMsg),
27656 &pSendBuffer, &usDataOffset, &usSendSize))||
27657 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27658 {
27659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027660 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027661 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27662 WDI_ASSERT(0);
27663 return WDI_STATUS_E_FAILURE;
27664 }
27665
27666 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27667 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27668
27669 wpalMemoryCopy( pSendBuffer+usDataOffset,
27670 &halTmMsg,
27671 sizeof(halTmMsg));
27672
27673 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27674 pWDICtx->pfncRspCB = NULL;
27675 /*-------------------------------------------------------------------------
27676 Send Get STA Request to HAL
27677 -------------------------------------------------------------------------*/
27678 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27679 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27680}
27681
27682/* Fill the value from the global features enabled array to the global capabilities
27683 * bitmap struct
27684 */
27685static void
27686FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27687{
27688 wpt_int8 i;
27689 for (i=0; i<len; i++)
27690 {
27691 setFeatCaps(fCaps, enabledFeat[i]);
27692 }
27693}
27694
27695/**
27696 @brief WDI_featureCapsExchangeReq
27697 Post feature capability bitmap exchange event.
27698 Host will send its own capability to FW in this req and
27699 expect FW to send its capability back as a bitmap in Response
27700
27701 @param
27702
27703 wdiFeatureCapsExchangeCb: callback called on getting the response.
27704 It is kept to mantain similarity between WDI reqs and if needed, can
27705 be used in future. Currently, It is set to NULL
27706
27707 pUserData: user data will be passed back with the
27708 callback
27709
27710 @see
27711 @return Result of the function call
27712*/
27713WDI_Status
27714WDI_featureCapsExchangeReq
27715(
27716 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27717 void* pUserData
27718)
27719{
27720 WDI_EventInfoType wdiEventData;
27721 wpt_int32 fCapsStructSize;
27722
27723 /*------------------------------------------------------------------------
27724 Sanity Check
27725 ------------------------------------------------------------------------*/
27726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27727 {
27728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27729 "WDI API call before module is initialized - Fail request");
27730
27731 return WDI_STATUS_E_NOT_ALLOWED;
27732 }
27733
27734 /* Allocate memory separately for global variable carrying FW caps */
27735 fCapsStructSize = sizeof(tWlanFeatCaps);
27736 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27737 if ( NULL == gpHostWlanFeatCaps )
27738 {
27739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027740 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027741 WDI_ASSERT(0);
27742 return WDI_STATUS_MEM_FAILURE;
27743 }
27744
27745 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27746
27747 /*------------------------------------------------------------------------
27748 Fill in Event data and post to the Main FSM
27749 ------------------------------------------------------------------------*/
27750 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27751 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027753 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027754 gpHostWlanFeatCaps->featCaps[0],
27755 gpHostWlanFeatCaps->featCaps[1],
27756 gpHostWlanFeatCaps->featCaps[2],
27757 gpHostWlanFeatCaps->featCaps[3]
27758 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27760 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27762 wdiEventData.pEventData = gpHostWlanFeatCaps;
27763 wdiEventData.uEventDataSize = fCapsStructSize;
27764 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27765 wdiEventData.pUserData = pUserData;
27766
27767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27768}
27769
27770/**
Yathishd8713192012-12-10 14:21:35 -080027771 @brief Disable Active mode offload in Host
27772
27773 @param void
27774 @see
27775 @return void
27776*/
27777void
27778WDI_disableCapablityFeature(wpt_uint8 feature_index)
27779{
27780 supportEnabledFeatures[feature_index] = 0;
27781 return;
27782}
27783
27784/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027785 @brief Process Host-FW Capability Exchange Request function
27786
27787 @param pWDICtx: pointer to the WLAN DAL context
27788 pEventData: pointer to the event information structure
27789
27790 @see
27791 @return Result of the function call
27792*/
27793WDI_Status
27794WDI_ProcessFeatureCapsExchangeReq
27795(
27796 WDI_ControlBlockType* pWDICtx,
27797 WDI_EventInfoType* pEventData
27798)
27799{
27800 wpt_uint8* pSendBuffer = NULL;
27801 wpt_uint16 usDataOffset = 0;
27802 wpt_uint16 usSendSize = 0;
27803 wpt_uint16 usLen = 0;
27804
27805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27806
27807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027808 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027809
27810 /*-------------------------------------------------------------------------
27811 Sanity check
27812 -------------------------------------------------------------------------*/
27813 /* Call back function is NULL since not required for cap exchange req */
27814 if (( NULL == pEventData ) ||
27815 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27816 {
27817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 WDI_ASSERT(0);
27820 return WDI_STATUS_E_FAILURE;
27821 }
27822
27823 /*-----------------------------------------------------------------------
27824 Get message buffer
27825 -----------------------------------------------------------------------*/
27826 usLen = sizeof(tWlanFeatCaps);
27827
27828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27829 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27830 usLen,
27831 &pSendBuffer, &usDataOffset, &usSendSize))||
27832 ( usSendSize < (usDataOffset + usLen )))
27833 {
27834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027835 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027836 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27837 WDI_ASSERT(0);
27838 return WDI_STATUS_E_FAILURE;
27839 }
27840
27841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027842 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027843 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27844 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27845 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27846 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27847 );
27848
27849 /* Copy host caps after the offset in the send buffer */
27850 wpalMemoryCopy( pSendBuffer+usDataOffset,
27851 (tWlanFeatCaps *)pEventData->pEventData,
27852 usLen);
27853
27854 /*-------------------------------------------------------------------------
27855 Send Start Request to HAL
27856 -------------------------------------------------------------------------*/
27857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27858 (WDI_StartRspCb)pEventData->pCBfnc,
27859 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27860
27861}/*WDI_ProcessFeatureCapsExchangeReq*/
27862
27863/**
27864 @brief Process Host-FW Capability Exchange Response function
27865
27866 @param pWDICtx: pointer to the WLAN DAL context
27867 pEventData: pointer to the event information structure
27868
27869 @see
27870 @return Result of the function call
27871*/
27872WDI_Status
27873WDI_ProcessFeatureCapsExchangeRsp
27874(
27875 WDI_ControlBlockType* pWDICtx,
27876 WDI_EventInfoType* pEventData
27877)
27878{
27879 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27880 wpt_int32 fCapsStructSize;
27881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27882
27883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027884 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027885
27886 /*-------------------------------------------------------------------------
27887 Sanity check
27888 -------------------------------------------------------------------------*/
27889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27890 ( NULL == pEventData->pEventData ))
27891 {
27892 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027895 WDI_ASSERT(0);
27896 return WDI_STATUS_E_FAILURE;
27897 }
27898
27899 /* Allocate memory separately for global variable carrying FW caps */
27900 fCapsStructSize = sizeof(tWlanFeatCaps);
27901 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27902 if ( NULL == gpFwWlanFeatCaps )
27903 {
27904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027905 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027906 WDI_ASSERT(0);
27907 return WDI_STATUS_MEM_FAILURE;
27908 }
27909
27910 /*-------------------------------------------------------------------------
27911 Unpack HAL Response Message - the header was already extracted by the
27912 main Response Handling procedure
27913 -------------------------------------------------------------------------*/
27914 /*-------------------------------------------------------------------------
27915 Extract response and send it to UMAC
27916 -------------------------------------------------------------------------*/
27917
27918 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27919 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027921 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027922 gpFwWlanFeatCaps->featCaps[0],
27923 gpFwWlanFeatCaps->featCaps[1],
27924 gpFwWlanFeatCaps->featCaps[2],
27925 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027926 );
27927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27928 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027929 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27930
27931 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27932 if (wdiFeatureCapsExchangeCb != NULL)
27933 wdiFeatureCapsExchangeCb(NULL, NULL);
27934
27935 return WDI_STATUS_SUCCESS;
27936}
27937
Mohit Khanna4a70d262012-09-11 16:30:12 -070027938#ifdef WLAN_FEATURE_11AC
27939WDI_Status
27940WDI_ProcessUpdateVHTOpModeRsp
27941(
27942 WDI_ControlBlockType* pWDICtx,
27943 WDI_EventInfoType* pEventData
27944)
27945{
27946 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27947 WDI_Status wdiStatus;
27948 eHalStatus halStatus;
27949
27950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27951
27952 /*-------------------------------------------------------------------------
27953 Sanity check
27954 -------------------------------------------------------------------------*/
27955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27956 ( NULL == pEventData->pEventData))
27957 {
27958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027959 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027960 WDI_ASSERT(0);
27961 return WDI_STATUS_E_FAILURE;
27962 }
27963 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27964
27965 /*-------------------------------------------------------------------------
27966 Extract response and send it to UMAC
27967 -------------------------------------------------------------------------*/
27968 halStatus = *((eHalStatus*)pEventData->pEventData);
27969 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27970
27971 /*Notify UMAC*/
27972 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27973
27974 return WDI_STATUS_SUCCESS;
27975}
27976#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027977/**
27978 @brief WDI_getHostWlanFeatCaps
27979 WDI API that returns whether the feature passed to it as enum value in
27980 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27981 variable storing host capability bitmap to find this. This can be used by
27982 other moduels to decide certain things like call different APIs based on
27983 whether a particular feature is supported.
27984
27985 @param
27986
27987 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27988
27989 @see
27990 @return
27991 0 - if the feature is NOT supported in host
27992 any non-zero value - if the feature is SUPPORTED in host.
27993*/
27994wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27995{
27996 wpt_uint8 featSupported = 0;
27997 if (gpHostWlanFeatCaps != NULL)
27998 {
27999 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28000 }
28001 else
28002 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028004 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 }
28006 return featSupported;
28007}
28008
28009/**
28010 @brief WDI_getFwWlanFeatCaps
28011 WDI API that returns whether the feature passed to it as enum value in
28012 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28013 variable storing host capability bitmap to find this. This can be used by
28014 other moduels to decide certain things like call different APIs based on
28015 whether a particular feature is supported.
28016
28017 @param
28018
28019 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28020 in wlan_hal_msg.h.
28021
28022 @see
28023 @return
28024 0 - if the feature is NOT supported in FW
28025 any non-zero value - if the feature is SUPPORTED in FW.
28026*/
28027wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28028{
28029 wpt_uint8 featSupported = 0;
28030 if (gpFwWlanFeatCaps != NULL)
28031 {
28032 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28033 }
28034 else
28035 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028037 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028038 }
28039 return featSupported;
28040}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028041
28042#ifdef WLAN_FEATURE_11AC
28043WDI_Status
28044WDI_ProcessUpdateVHTOpModeReq
28045(
28046 WDI_ControlBlockType* pWDICtx,
28047 WDI_EventInfoType* pEventData
28048)
28049{
28050 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28051 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28052 wpt_uint8* pSendBuffer = NULL;
28053 wpt_uint16 usDataOffset = 0;
28054 wpt_uint16 usSendSize = 0;
28055
28056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28057
28058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028059 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028060
28061 /*-------------------------------------------------------------------------
28062 Sanity check
28063 -------------------------------------------------------------------------*/
28064 if (( NULL == pEventData ) ||
28065 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28066 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28067 {
28068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028069 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028070 WDI_ASSERT(0);
28071 return WDI_STATUS_E_FAILURE;
28072 }
28073
28074 /*-----------------------------------------------------------------------
28075 Get message buffer
28076 -----------------------------------------------------------------------*/
28077 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28078 sizeof(WDI_UpdateVHTOpMode),
28079 &pSendBuffer, &usDataOffset, &usSendSize))||
28080 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28081 {
28082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28083 "Unable to get send buffer in update vht opMode req");
28084 WDI_ASSERT(0);
28085 return WDI_STATUS_E_FAILURE;
28086 }
28087
28088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028089 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028090
28091 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28092 sizeof(WDI_UpdateVHTOpMode));
28093
28094 /*-------------------------------------------------------------------------
28095 Send Start Request to HAL
28096 -------------------------------------------------------------------------*/
28097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28098 wdiVHTOpModeCb,
28099 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28100
28101}
28102
28103WDI_Status
28104WDI_UpdateVHTOpModeReq
28105(
28106 WDI_UpdateVHTOpMode *pData,
28107 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28108 void* pUserData
28109)
28110{
28111 WDI_EventInfoType wdiEventData;
28112
28113 /*------------------------------------------------------------------------
28114 Sanity Check
28115 ------------------------------------------------------------------------*/
28116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28117 {
28118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28119 "WDI API call before module is initialized - Fail request");
28120
28121 return WDI_STATUS_E_NOT_ALLOWED;
28122 }
28123
28124 /*------------------------------------------------------------------------
28125 Fill in Event data and post to the Main FSM
28126 ------------------------------------------------------------------------*/
28127 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28128 wdiEventData.pEventData = pData;
28129 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28130 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28131 wdiEventData.pUserData = pUserData;
28132
28133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028134 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028135
28136 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28137
28138}
28139#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028140
28141/**
28142 @brief WDI_TransportChannelDebug -
28143 Display DXE Channel debugging information
28144 User may request to display DXE channel snapshot
28145 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028146
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080028147 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028148 @param enableStallDetect : Enable stall detect feature
28149 This feature will take effect to data performance
28150 Not integrate till fully verification
28151 @see
28152 @return none
28153*/
28154void WDI_TransportChannelDebug
28155(
28156 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028157 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028158)
28159{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028160 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028161 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028162}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028163/**
28164 @brief WDI_SsrTimerCB
28165 Callback function for SSR timer, if this is called then the graceful
28166 shutdown for Riva did not happen.
28167
28168 @param pUserData : user data to timer
28169
28170 @see
28171 @return none
28172*/
28173void
28174WDI_SsrTimerCB
28175(
28176 void *pUserData
28177)
28178{
28179 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28181
28182 if (NULL == pWDICtx )
28183 {
28184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028185 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028186 WDI_ASSERT(0);
28187 return;
28188 }
28189 wpalRivaSubystemRestart();
28190
28191 return;
28192
28193}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028194
28195/**
28196 @brief WDI_SetEnableSSR -
28197 This API is called to enable/disable SSR on WDI timeout.
28198
28199 @param enableSSR : enable/disable SSR
28200
28201 @see
28202 @return none
28203*/
28204void WDI_SetEnableSSR(wpt_boolean enableSSR)
28205{
28206 gWDICb.bEnableSSR = enableSSR;
28207}
Leo Chang00bc9132013-08-01 19:21:11 -070028208
28209
28210#ifdef FEATURE_WLAN_LPHB
28211/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028212 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028213 This function will be invoked when FW detects low power
28214 heart beat failure
28215
28216 @param pWDICtx : wdi context
28217 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028218 @see
28219 @return Result of the function call
28220*/
28221WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028222WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028223(
28224 WDI_ControlBlockType* pWDICtx,
28225 WDI_EventInfoType* pEventData
28226)
28227{
28228 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028229 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28231
28232 /*-------------------------------------------------------------------------
28233 Sanity check
28234 -------------------------------------------------------------------------*/
28235 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28236 (NULL == pEventData->pEventData))
28237 {
28238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28239 "%s: Invalid parameters", __func__);
28240 WDI_ASSERT(0);
28241 return WDI_STATUS_E_FAILURE;
28242 }
28243
28244 /*-------------------------------------------------------------------------
28245 Extract indication and send it to UMAC
28246 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028247 wpalMemoryCopy(&lphbIndicationParam,
28248 pEventData->pEventData,
28249 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028250
Leo Chang8d19a5f2013-09-26 13:32:26 -070028251 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028252 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028253 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028254 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028255 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028256 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028257 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028258 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028259 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028260 /*Notify UMAC*/
28261 if (pWDICtx->wdiLowLevelIndCB)
28262 {
28263 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28264 }
28265
28266 return WDI_STATUS_SUCCESS;
28267}
28268
28269/**
28270 @brief WDI_ProcessLphbCfgRsp -
28271 LPHB configuration response from FW
28272
28273 @param pWDICtx : wdi context
28274 pEventData : indication data
28275
28276 @see
28277 @return Result of the function call
28278*/
28279WDI_Status WDI_ProcessLphbCfgRsp
28280(
28281 WDI_ControlBlockType* pWDICtx,
28282 WDI_EventInfoType* pEventData
28283)
28284{
28285 WDI_Status wdiStatus;
28286 eHalStatus halStatus;
28287 WDI_LphbCfgCb wdiLphbCfgCb;
28288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28289
28290 /*-------------------------------------------------------------------------
28291 Sanity check
28292 -------------------------------------------------------------------------*/
28293 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28294 (NULL == pEventData->pEventData))
28295 {
28296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28297 "%s: Invalid parameters", __func__);
28298 WDI_ASSERT(0);
28299 return WDI_STATUS_E_FAILURE;
28300 }
28301
28302 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28303
28304 /*-------------------------------------------------------------------------
28305 Extract response and send it to UMAC
28306 -------------------------------------------------------------------------*/
28307 halStatus = *((eHalStatus*)pEventData->pEventData);
28308 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28309
28310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28311 "LPHB Cfg Rsp Return status %d", wdiStatus);
28312 /*Notify UMAC*/
28313 if (NULL != wdiLphbCfgCb)
28314 {
28315 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28316 }
28317
28318 return WDI_STATUS_SUCCESS;
28319}
28320
28321/**
28322 @brief WDI_ProcessLPHBConfReq -
28323 LPHB configuration request to FW
28324
28325 @param pWDICtx : wdi context
28326 pEventData : indication data
28327
28328 @see
28329 @return none
28330*/
28331WDI_Status WDI_ProcessLPHBConfReq
28332(
28333 WDI_ControlBlockType* pWDICtx,
28334 WDI_EventInfoType* pEventData
28335)
28336{
28337 WDI_LPHBReq *pLphbReqParams;
28338 WDI_Status wdiStatus;
28339 wpt_uint8* pSendBuffer = NULL;
28340 wpt_uint16 usDataOffset = 0;
28341 wpt_uint16 usSendSize = 0;
28342 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28344
28345 /*-------------------------------------------------------------------------
28346 Sanity check
28347 -------------------------------------------------------------------------*/
28348 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28349 {
28350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28351 "%s: Invalid parameters in Suspend ind",__func__);
28352 WDI_ASSERT(0);
28353 return WDI_STATUS_E_FAILURE;
28354 }
28355
28356 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28357
28358 /*-----------------------------------------------------------------------
28359 Get message buffer
28360 -----------------------------------------------------------------------*/
28361 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28362 WDI_LPHB_CFG_REQ,
28363 sizeof(tHalLowPowerHeartBeatReqMsg),
28364 &pSendBuffer, &usDataOffset, &usSendSize))||
28365 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28366 {
28367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28368 "Unable to get send buffer in LPHB Ind ");
28369 WDI_ASSERT(0);
28370 return WDI_STATUS_E_FAILURE;
28371 }
28372
28373 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28374 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28375
28376 halLphbReqRarams->lowPowerHeartBeatCmdType =
28377 (tANI_U16)(++pLphbReqParams->cmd);
28378 switch ((tANI_U16)pLphbReqParams->cmd)
28379 {
28380 case WDI_LPHB_SET_EN_PARAMS_INDID:
28381 halLphbReqRarams->sessionIdx =
28382 pLphbReqParams->params.lphbEnableReq.session;
28383 halLphbReqRarams->options.control.heartBeatEnable =
28384 pLphbReqParams->params.lphbEnableReq.enable;
28385 halLphbReqRarams->options.control.heartBeatType =
28386 pLphbReqParams->params.lphbEnableReq.item;
28387 break;
28388
28389 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28390 halLphbReqRarams->sessionIdx =
28391 pLphbReqParams->params.lphbTcpParamReq.session;
28392 halLphbReqRarams->options.tcpParams.timeOutSec =
28393 pLphbReqParams->params.lphbTcpParamReq.timeout;
28394 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28395 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28396 sizeof(v_U32_t));
28397 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28398 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28399 sizeof(v_U32_t));
28400
28401 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28402 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28403 WDI_MAC_ADDR_LEN);
28404
28405 halLphbReqRarams->options.tcpParams.hostPort =
28406 pLphbReqParams->params.lphbTcpParamReq.src_port;
28407 halLphbReqRarams->options.tcpParams.destPort =
28408 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028409 halLphbReqRarams->options.tcpParams.timePeriodSec =
28410 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28411 halLphbReqRarams->options.tcpParams.tcpSn =
28412 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028413 break;
28414
28415 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28416 halLphbReqRarams->sessionIdx =
28417 pLphbReqParams->params.lphbTcpFilterReq.session;
28418 halLphbReqRarams->options.tcpUdpFilter.offset =
28419 pLphbReqParams->params.lphbTcpFilterReq.offset;
28420 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28421 pLphbReqParams->params.lphbTcpFilterReq.length;
28422 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28423 pLphbReqParams->params.lphbTcpFilterReq.filter,
28424 WDI_LPHB_FILTER_LEN);
28425 break;
28426
28427 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28428 halLphbReqRarams->sessionIdx =
28429 pLphbReqParams->params.lphbUdpParamReq.session;
28430 halLphbReqRarams->options.udpParams.timeOutSec =
28431 pLphbReqParams->params.lphbUdpParamReq.timeout;
28432 halLphbReqRarams->options.udpParams.timePeriodSec =
28433 pLphbReqParams->params.lphbUdpParamReq.interval;
28434 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28435 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28436 sizeof(v_U32_t));
28437 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28438 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28439 sizeof(v_U32_t));
28440
28441 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28442 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28443 WDI_MAC_ADDR_LEN);
28444
28445 halLphbReqRarams->options.udpParams.hostPort =
28446 pLphbReqParams->params.lphbUdpParamReq.src_port;
28447 halLphbReqRarams->options.udpParams.destPort =
28448 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28449 break;
28450
28451 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28452 halLphbReqRarams->sessionIdx =
28453 pLphbReqParams->params.lphbUdpFilterReq.session;
28454 halLphbReqRarams->options.tcpUdpFilter.offset =
28455 pLphbReqParams->params.lphbUdpFilterReq.offset;
28456 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28457 pLphbReqParams->params.lphbUdpFilterReq.length;
28458 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28459 pLphbReqParams->params.lphbUdpFilterReq.filter,
28460 WDI_LPHB_FILTER_LEN);
28461 break;
28462
28463 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28464 /* NA */
28465 break;
28466
28467 default:
28468 break;
28469 }
28470
28471 /*-------------------------------------------------------------------------
28472 Send Suspend Request to HAL
28473 -------------------------------------------------------------------------*/
28474 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28475 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28476
28477 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28478 usSendSize, pWDICtx->pfncRspCB,
28479 pWDICtx->pReqStatusUserData,
28480 WDI_LPHB_CFG_RESP);
28481
28482 return wdiStatus;
28483}
28484
28485/**
28486 @brief WDI_LPHBConfReq -
28487 LPHB configuration request API
28488
28489 @param lphbconfParam : configuration parameter
28490 usrData : client context
28491 lphbCfgCb : callback function pointer
28492
28493 @see
28494 @return Success or fail status code
28495*/
28496WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28497 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28498{
28499 WDI_EventInfoType wdiEventData;
28500
28501 /*------------------------------------------------------------------------
28502 Sanity Check
28503 ------------------------------------------------------------------------*/
28504 if (eWLAN_PAL_FALSE == gWDIInitialized)
28505 {
28506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28507 "WDI API call before module is initialized - Fail request");
28508
28509 return WDI_STATUS_E_NOT_ALLOWED;
28510 }
28511
28512 /*------------------------------------------------------------------------
28513 Fill in Event data and post to the Main FSM
28514 ------------------------------------------------------------------------*/
28515 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28516 wdiEventData.pEventData = lphbconfParam;
28517 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28518 wdiEventData.pCBfnc = lphbCfgCb;
28519 wdiEventData.pUserData = usrData;
28520
28521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28522}
28523#endif /* FEATURE_WLAN_LPHB */
28524
Ravi Joshi96d77342013-07-23 08:37:49 -070028525/**
28526 @brief WDI_ProcessIbssPeerInactivityInd
28527 Process peer inactivity indication coming from HAL
28528
28529 @param pWDICtx: pointer to the WLAN DAL context
28530 pEventData: pointer to the event information structure
28531 @see
28532 @return Result of the function call
28533*/
28534WDI_Status
28535WDI_ProcessIbssPeerInactivityInd
28536(
28537 WDI_ControlBlockType* pWDICtx,
28538 WDI_EventInfoType* pEventData
28539)
28540{
28541 WDI_LowLevelIndType wdiInd;
28542 tIbssPeerInactivityIndMsg halIbssIndMsg;
28543
28544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28545
28546 /*-------------------------------------------------------------------------
28547 Sanity check
28548 -------------------------------------------------------------------------*/
28549 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28550 ( NULL == pEventData->pEventData ))
28551 {
28552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28553 "%s: Invalid parameters", __func__);
28554 WDI_ASSERT( 0 );
28555 return WDI_STATUS_E_FAILURE;
28556 }
28557
28558 /*-------------------------------------------------------------------------
28559 Extract indication and send it to UMAC
28560 -------------------------------------------------------------------------*/
28561 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28562 pEventData->pEventData,
28563 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28564
28565 /*Fill in the indication parameters*/
28566 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28567
28568 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28569 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28570
28571 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28572 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28573
28574 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28575 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28576 sizeof(tSirMacAddr));
28577
28578 /*Notify UMAC*/
28579 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28580
28581 return WDI_STATUS_SUCCESS;
28582
28583} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028584
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028585/**
28586*@brief WDI_RateUpdateInd will be called when the upper MAC
28587 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028588
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028589
28590 @param wdiRateUpdateIndParams:
28591
28592
28593 @see
28594 @return Result of the function call
28595*/
28596WDI_Status
28597WDI_RateUpdateInd
28598(
28599 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28600)
28601{
28602 WDI_EventInfoType wdiEventData;
28603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28604
28605 /*------------------------------------------------------------------------
28606 Sanity Check
28607 ------------------------------------------------------------------------*/
28608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28609 {
28610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28611 "WDI API call before module is initialized - Fail request");
28612
28613 return WDI_STATUS_E_NOT_ALLOWED;
28614 }
28615
28616 /*------------------------------------------------------------------------
28617 Fill in Event data and post to the Main FSM
28618 ------------------------------------------------------------------------*/
28619 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28620 wdiEventData.pEventData = wdiRateUpdateIndParams;
28621 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28622 wdiEventData.pCBfnc = NULL;
28623 wdiEventData.pUserData = NULL;
28624
28625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28626
28627}/* WDI_RateUpdateInd */
28628
28629/**
28630 @brief Process Rate Update Indication and post it to HAL
28631
28632 @param pWDICtx: pointer to the WLAN DAL context
28633 pEventData: pointer to the event information structure
28634
28635 @see
28636 @return Result of the function call
28637*/
28638WDI_Status
28639WDI_ProcessRateUpdateInd
28640(
28641 WDI_ControlBlockType* pWDICtx,
28642 WDI_EventInfoType* pEventData
28643)
28644{
28645 wpt_uint8* pSendBuffer = NULL;
28646 wpt_uint16 usDataOffset = 0;
28647 wpt_uint16 usSendSize = 0;
28648 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28649 tHalRateUpdateInd *pRateUpdateInd;
28650 WDI_Status wdiStatus;
28651
28652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28653
28654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28655 "%s", __func__);
28656
28657 /*-------------------------------------------------------------------------
28658 Sanity check
28659 -------------------------------------------------------------------------*/
28660 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28661 {
28662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28663 "%s: Invalid parameters", __func__);
28664 WDI_ASSERT(0);
28665 return WDI_STATUS_E_FAILURE;
28666 }
28667 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28668 /*-----------------------------------------------------------------------
28669 Get message buffer
28670 -----------------------------------------------------------------------*/
28671
28672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28673 WDI_RATE_UPDATE_IND,
28674 sizeof(tHalRateUpdateParams),
28675 &pSendBuffer, &usDataOffset, &usSendSize))||
28676 ( usSendSize < (usDataOffset +
28677 sizeof(tHalRateUpdateParams) )))
28678 {
28679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28680 "Unable to get send buffer in Rate Update Indication %p ",
28681 pEventData);
28682 WDI_ASSERT(0);
28683 return WDI_STATUS_E_FAILURE;
28684 }
28685
28686 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28687
28688 /* Copy the bssid */
28689 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28690 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28691
28692 /* Copy the tx flags */
28693 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28694 pwdiRateUpdateInd->ucastDataRateTxFlag;
28695 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28696 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28697 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28698 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28699 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28700 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28701
28702 /* Copy the tx rates */
28703 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28704 pwdiRateUpdateInd->ucastDataRate;
28705 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28706 pwdiRateUpdateInd->reliableMcastDataRate;
28707 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28708 pwdiRateUpdateInd->mcastDataRate24GHz;
28709 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28710 pwdiRateUpdateInd->mcastDataRate5GHz;
28711
28712 /*-------------------------------------------------------------------------
28713 Send Rate Update Indication to HAL
28714 -------------------------------------------------------------------------*/
28715 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28716 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28717
28718 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28719
28720 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28721 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28722
28723} /* WDI_ProcessRateUpdateInd */
28724
28725#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028726/**
28727 @brief Process stop batch indication from WDA
28728
28729 @param pWDICtx: pointer to the WLAN DAL context
28730 pEventData: pointer to the event information structure
28731
28732 @see
28733 @return Result of the function call
28734*/
28735WDI_Status
28736WDI_ProcessStopBatchScanInd
28737(
28738 WDI_ControlBlockType* pWDICtx,
28739 WDI_EventInfoType* pEventData
28740)
28741{
28742 wpt_uint8* pSendBuffer = NULL;
28743 wpt_uint16 usDataOffset = 0;
28744 wpt_uint16 usSendSize = 0;
28745 WDI_Status wdiStatus;
28746 tHalBatchScanStopIndParam *pHalInd = NULL;
28747 WDI_StopBatchScanIndType *pWdiInd = NULL;
28748
28749
28750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28751
28752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28753 "%s", __func__);
28754
28755 /*-------------------------------------------------------------------------
28756 Sanity check
28757 -------------------------------------------------------------------------*/
28758
28759 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28760 {
28761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28762 "%s: Invalid parameters", __func__);
28763 WDI_ASSERT(0);
28764 return WDI_STATUS_E_FAILURE;
28765 }
28766 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28767 /*-----------------------------------------------------------------------
28768 Get message buffer
28769 -----------------------------------------------------------------------*/
28770
28771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28772 WDI_STOP_BATCH_SCAN_IND,
28773 sizeof(tHalBatchScanStopIndParam),
28774 &pSendBuffer, &usDataOffset, &usSendSize))||
28775 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28776 {
28777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28778 "Unable to get send buffer in stop batch scan ind %p ",
28779 pEventData);
28780 WDI_ASSERT(0);
28781 return WDI_STATUS_E_FAILURE;
28782 }
28783
28784 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28785 pHalInd->param = pWdiInd->param;
28786
28787 pWDICtx->pReqStatusUserData = NULL;
28788 pWDICtx->pfncRspCB = NULL;
28789 /*-------------------------------------------------------------------------
28790 Send Stop batch scan indication to HAL
28791 -------------------------------------------------------------------------*/
28792 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28793 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28794}
28795
28796/**
28797 @brief This API is called to trigger batch scan results from FW
28798
28799 @param pWDICtx: pointer to the WLAN DAL context
28800 pEventData: pointer to the event information structure
28801
28802 @see
28803 @return Result of the function call
28804*/
28805WDI_Status
28806WDI_ProcessTriggerBatchScanResultInd
28807(
28808 WDI_ControlBlockType* pWDICtx,
28809 WDI_EventInfoType* pEventData
28810)
28811{
28812 WDI_Status wdiStatus;
28813 wpt_uint8* pSendBuffer = NULL;
28814 wpt_uint16 usDataOffset = 0;
28815 wpt_uint16 usSendSize = 0;
28816 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28817 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28818
28819
28820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28821
28822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28823 "%s", __func__);
28824
28825 /*-------------------------------------------------------------------------
28826 Sanity check
28827 -------------------------------------------------------------------------*/
28828
28829 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28830 {
28831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28832 "%s: Invalid parameters", __func__);
28833 WDI_ASSERT(0);
28834 return WDI_STATUS_E_FAILURE;
28835 }
28836 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28837 /*-----------------------------------------------------------------------
28838 Get message buffer
28839 -----------------------------------------------------------------------*/
28840
28841 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28842 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28843 sizeof(tHalBatchScanTriggerResultParam),
28844 &pSendBuffer, &usDataOffset, &usSendSize))||
28845 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28846 {
28847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28848 "Unable to get send buffer in stop batch scan ind %p ",
28849 pEventData);
28850 WDI_ASSERT(0);
28851 return WDI_STATUS_E_FAILURE;
28852 }
28853
28854 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28855 pHalInd->param = pWdiInd->param;
28856
28857 pWDICtx->pReqStatusUserData = NULL;
28858 pWDICtx->pfncRspCB = NULL;
28859 /*-------------------------------------------------------------------------
28860 Send trigger batch scan result indication to HAL
28861 -------------------------------------------------------------------------*/
28862 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28863 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28864}
28865
28866
28867/**
28868 @brief Process set batch scan response from FW
28869
28870 @param pWDICtx: pointer to the WLAN DAL context
28871 pEventData: pointer to the event information structure
28872
28873 @see
28874 @return Result of the function call
28875*/
28876WDI_Status
28877WDI_ProcessSetBatchScanRsp
28878(
28879 WDI_ControlBlockType* pWDICtx,
28880 WDI_EventInfoType* pEventData
28881)
28882{
28883 WDI_SetBatchScanCb wdiSetBatchScanCb;
28884 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28885
28886 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28888
28889 /*sanity check*/
28890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28891 ( NULL == pEventData->pEventData))
28892 {
28893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28894 "%s: Invalid parameters", __func__);
28895 WDI_ASSERT(0);
28896 return WDI_STATUS_E_FAILURE;
28897 }
28898
28899 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28900 if ( NULL == wdiSetBatchScanCb)
28901 {
28902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28903 "%s: call back function is NULL", __func__);
28904 WDI_ASSERT(0);
28905 return WDI_STATUS_E_FAILURE;
28906 }
28907
28908 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28909
28910 if (NULL == pSetBatchScanRsp)
28911 {
28912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028913 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028914 pWDICtx, pEventData, pEventData->pEventData);
28915 WDI_ASSERT(0);
28916 return WDI_STATUS_E_FAILURE;
28917 }
28918
28919 /*extract response and send it to UMAC*/
28920 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28921
28922 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28923
28924 /*Notify UMAC*/
28925 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28926
28927 wpalMemoryFree(pSetBatchScanRsp);
28928
28929 return WDI_STATUS_SUCCESS;
28930}/*WDI_ProcessSetBatchScanRsp*/
28931
28932/**
28933 @brief Process batch scan result indication from FW
28934
28935 @param pWDICtx: pointer to the WLAN DAL context
28936 pEventData: pointer to the event information structure
28937
28938 @see
28939 @return Result of the function call
28940*/
28941WDI_Status
28942WDI_ProcessBatchScanResultInd
28943(
28944 WDI_ControlBlockType* pWDICtx,
28945 WDI_EventInfoType* pEventData
28946)
28947{
28948 void *pBatchScanResultInd;
28949 WDI_LowLevelIndType wdiInd;
28950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28951
28952 /*sanity check*/
28953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28954 ( NULL == pEventData->pEventData))
28955 {
28956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28957 "%s: Invalid parameters", __func__);
28958 WDI_ASSERT(0);
28959 return WDI_STATUS_E_FAILURE;
28960 }
28961
28962 /*extract response and send it to UMAC*/
28963 pBatchScanResultInd = (void *)pEventData->pEventData;
28964
28965 /*Fill in the indication parameters*/
28966 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28967
28968 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28969
28970 /*Notify UMAC*/
28971 if (pWDICtx->wdiLowLevelIndCB)
28972 {
28973 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28974 }
28975 else
28976 {
28977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28978 "%s: WDILowLevelIndCb is null", __func__);
28979 WDI_ASSERT(0);
28980 return WDI_STATUS_E_FAILURE;
28981 }
28982
28983 return WDI_STATUS_SUCCESS;
28984} /*End of WDI_ProcessBatchScanResultInd*/
28985
28986/**
28987 @brief WDI_ProcessSetBatchScanReq -
28988 Set batch scan request to FW
28989
28990 @param pWDICtx : wdi context
28991 pEventData : indication data
28992
28993 @see
28994 @return none
28995*/
28996WDI_Status WDI_ProcessSetBatchScanReq
28997(
28998 WDI_ControlBlockType* pWDICtx,
28999 WDI_EventInfoType* pEventData
29000)
29001{
29002 WDI_SetBatchScanReqType *pWdiReq;
29003 WDI_Status wdiStatus;
29004 wpt_uint8* pSendBuffer = NULL;
29005 wpt_uint16 usDataOffset = 0;
29006 wpt_uint16 usSendSize = 0;
29007 tHalBatchScanSetParams *pHalReq;
29008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29009
29010 /*sanity check*/
29011 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29012 {
29013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29014 "%s: Invalid parameters in set batch scan request", __func__);
29015 WDI_ASSERT(0);
29016 return WDI_STATUS_E_FAILURE;
29017 }
29018
29019
29020 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29021
29022
29023 /*get message buffer*/
29024 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29025 WDI_SET_BATCH_SCAN_REQ,
29026 sizeof(tHalBatchScanSetParams),
29027 &pSendBuffer, &usDataOffset, &usSendSize))||
29028 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29029 {
29030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29031 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29032 WDI_ASSERT(0);
29033 return WDI_STATUS_E_FAILURE;
29034 }
29035
29036 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29037
29038 pHalReq->rtt = pWdiReq->rtt;
29039 pHalReq->rfBand = pWdiReq->rfBand;
29040 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29041 pHalReq->scanInterval = pWdiReq->scanFrequency;
29042 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29043
29044 /*send set batch scan request to fw*/
29045 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29046 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29047
29048 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29049 usSendSize, pWDICtx->pfncRspCB,
29050 pWDICtx->pReqStatusUserData,
29051 WDI_SET_BATCH_SCAN_RESP);
29052
29053 return wdiStatus;
29054}
29055
29056/**
29057 @brief WDI_SetBatchScanReq
29058 This API is called to set batch scan request in FW
29059
29060 @param pBatchScanReqParam : pointer to set batch scan re param
29061 usrData : Client context
29062 setBatchScanRspCb : set batch scan resp callback
29063 @see
29064 @return SUCCESS or FAIL
29065*/
29066WDI_Status WDI_SetBatchScanReq
29067(
29068 void *pBatchScanReqParam,
29069 void *usrData,
29070 WDI_SetBatchScanCb setBatchScanRspCb
29071)
29072{
29073 WDI_EventInfoType wdiEventData;
29074
29075 /*sanity check*/
29076 if (eWLAN_PAL_FALSE == gWDIInitialized)
29077 {
29078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29079 "WDI API call before module is initialized - Fail request");
29080
29081 return WDI_STATUS_E_NOT_ALLOWED;
29082 }
29083
29084 /* fill in event data and post to the main FSM */
29085 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29086 wdiEventData.pEventData = pBatchScanReqParam;
29087 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29088 wdiEventData.pCBfnc = setBatchScanRspCb;
29089 wdiEventData.pUserData = usrData;
29090
29091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29092}
29093
29094/**
29095 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29096
29097 @param None
29098
29099 @see
29100
29101 @return Status of the request
29102*/
29103WDI_Status
29104WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29105{
29106 WDI_EventInfoType wdiEventData;
29107
29108 /*-------------------------------------------------------------------------
29109 Sanity Check
29110 ------------------------------------------------------------------------*/
29111 if (eWLAN_PAL_FALSE == gWDIInitialized)
29112 {
29113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29114 "WDI API call before module is initialized - Fail request!");
29115
29116 return WDI_STATUS_E_NOT_ALLOWED;
29117 }
29118
29119 /*-------------------------------------------------------------------------
29120 Fill in Event data and post to the Main FSM
29121 ------------------------------------------------------------------------*/
29122 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29123 wdiEventData.pEventData = pWdiReq;
29124 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29125 wdiEventData.pCBfnc = NULL;
29126 wdiEventData.pUserData = NULL;
29127
29128 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29129}
29130
29131/**
29132 @brief WDI_TriggerBatchScanResultInd
29133 This API is called to pull batch scan result from FW
29134
29135 @param pWdiReq : pointer to get batch scan ind param
29136 @see
29137 @return SUCCESS or FAIL
29138*/
29139WDI_Status WDI_TriggerBatchScanResultInd
29140(
29141 WDI_TriggerBatchScanResultIndType *pWdiReq
29142)
29143{
29144 WDI_EventInfoType wdiEventData;
29145 /*-------------------------------------------------------------------------
29146 Sanity Check
29147 ------------------------------------------------------------------------*/
29148 if (eWLAN_PAL_FALSE == gWDIInitialized)
29149 {
29150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29151 "WDI API call before module is initialized - Fail request!");
29152
29153 return WDI_STATUS_E_NOT_ALLOWED;
29154 }
29155
29156 /*-------------------------------------------------------------------------
29157 Fill in Event data and post to the Main FSM
29158 ------------------------------------------------------------------------*/
29159 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29160 wdiEventData.pEventData = pWdiReq;
29161 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29162 wdiEventData.pCBfnc = NULL;
29163 wdiEventData.pUserData = NULL;
29164
29165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29166}
29167
29168#endif /*FEATURE_WLAN_BATCH_SCAN*/