blob: 3adf2130c9549db5432ced4f693b84eccd0a4397 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Srikant Kuppa17ef2a62013-08-29 15:27:56 -0700106#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
108/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700109 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700110 ===========================================================================*/
111#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
112
Jeff Johnsone7245742012-09-05 17:12:55 -0700113#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
114#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
115
Yue Ma70627492013-03-28 11:33:46 -0700116#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700117
118#ifdef FEATURE_WLAN_SCAN_PNO
119#define WDI_PNO_VERSION_MASK 0x8000
120#endif
121
122/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700123static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700124/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700125static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700126/* array of features supported. Need to add a new feature
127 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
128 */
129static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800130 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800131#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700132 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800136#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700137 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800138#else
139 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800140#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700141 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800142#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700143 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800144#else
145 ,FEATURE_NOT_SUPPORTED
146#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700147 ,FEATURE_NOT_SUPPORTED //9
148 ,FEATURE_NOT_SUPPORTED //10
149 ,FEATURE_NOT_SUPPORTED //11
150 ,FEATURE_NOT_SUPPORTED //12
151 ,FEATURE_NOT_SUPPORTED //13
152 ,FEATURE_NOT_SUPPORTED //14
153 ,FEATURE_NOT_SUPPORTED //15
154 ,FEATURE_NOT_SUPPORTED //16
155 ,FEATURE_NOT_SUPPORTED //17
156 ,FEATURE_NOT_SUPPORTED //18
157 ,FEATURE_NOT_SUPPORTED //19
158 ,FEATURE_NOT_SUPPORTED //20
159 ,FEATURE_NOT_SUPPORTED //21
Yue Mae2e09da2013-08-26 10:59:03 -0700160 ,WOW //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700161#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Mae2e09da2013-08-26 10:59:03 -0700162 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700163#else
164 ,FEATURE_NOT_SUPPORTED
165#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700166 ,FEATURE_NOT_SUPPORTED //24
167 ,FEATURE_NOT_SUPPORTED //25
168 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Mae2e09da2013-08-26 10:59:03 -0700169 ,FEATURE_NOT_SUPPORTED //27
170 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudi5aa244c2013-09-13 19:36:52 +0530171#ifdef FEATURE_WLAN_TDLS
172 ,ADVANCE_TDLS //29
173#else
174 ,FEATURE_NOT_SUPPORTED //29
175#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800176 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700177
178/*--------------------------------------------------------------------------
179 WLAN DAL State Machine
180 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700181WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700182{
183 /*WDI_INIT_ST*/
184 {{
185 WDI_MainStart, /*WDI_START_EVENT*/
186 NULL, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
189 WDI_MainClose, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
191 }},
192
193 /*WDI_STARTED_ST*/
194 {{
195 WDI_MainStartStarted, /*WDI_START_EVENT*/
196 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
197 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
198 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
199 NULL, /*WDI_CLOSE_EVENT*/
200 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
201 }},
202
203 /*WDI_STOPPED_ST*/
204 {{
205 WDI_MainStart, /*WDI_START_EVENT*/
206 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
207 NULL, /*WDI_REQUEST_EVENT*/
208 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
209 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700210 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700211 }},
212
213 /*WDI_BUSY_ST*/
214 {{
215 WDI_MainStartBusy, /*WDI_START_EVENT*/
216 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
217 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
218 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
219 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
220 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
221 }}
222};
223
Jeff Johnsone7245742012-09-05 17:12:55 -0700224/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700225 DAL Request Processing Array - the functions in this table will only be
226 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700227 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700228 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700229WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700230{
231 /*INIT*/
232 WDI_ProcessStartReq, /* WDI_START_REQ */
233 WDI_ProcessStopReq, /* WDI_STOP_REQ */
234 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
235
236 /*SCAN*/
237 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
238 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
239 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
240 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
241
242 /*ASSOCIATION*/
243 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
244 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
245 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
246 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
247 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
248
249 /* Security */
250 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
251 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
252 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
253 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
254
255 /* QoS and BA APIs */
256 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
257 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
258 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
259 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
260 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
261
262 /* Miscellaneous Control APIs */
263 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
264 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
265 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
266 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
267 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
268
269 /*BA APIs*/
270 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
271 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
272
273 /*Beacon processing APIs*/
274 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
275 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
276
277 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
278 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
279 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
280 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 /* PowerSave APIs */
283 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
284 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
285 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
286 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
287 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
288 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
289 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
290 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
291 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
292 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
293 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
294 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
295 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
296 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
297 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
298 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
299 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
300 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
301 /*NV Download APIs*/
302 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
303 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
304 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
305#ifdef WLAN_FEATURE_VOWIFI_11R
306 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
307#else
308 NULL,
309#endif /* WLAN_FEATURE_VOWIFI_11R */
310 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
311 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313
314#ifdef FEATURE_OEM_DATA_SUPPORT
315 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
316#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700318#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700319 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700320
321 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700322
323#ifdef FEATURE_WLAN_SCAN_PNO
324 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
325 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
326 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
327#else
328 NULL,
329 NULL,
330 NULL,
331#endif /* FEATURE_WLAN_SCAN_PNO */
332
333 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334
Jeff Johnson295189b2012-06-20 16:38:30 -0700335#ifdef WLAN_FEATURE_PACKET_FILTERING
336 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700337 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700338 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700339 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700340 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700341 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700343 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700344#else
345 NULL,
346 NULL,
347 NULL,
348 NULL,
349#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700350 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
352 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
353
354 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
355#ifdef FEATURE_WLAN_CCX
356 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
357#else
358 NULL,
359#endif
360
361#ifdef WLAN_FEATURE_GTK_OFFLOAD
362 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
363 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
364#else
365 NULL,
366 NULL,
367#endif // WLAN_FEATURE_GTK_OFFLOAD
368
369 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
370 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700371#ifdef WLAN_FEATURE_11AC
372 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800373#else
374 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700375#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800376#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
377 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
378#else
schangd82195a2013-03-13 18:41:24 -0700379 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800380#endif
schangd82195a2013-03-13 18:41:24 -0700381 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700382#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700383 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700384#else
385 NULL,
386#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530387#ifdef FEATURE_WLAN_TDLS
388 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
389#else
390 NULL,
391#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700392#ifdef FEATURE_WLAN_LPHB
393 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
394#else
395 NULL,
396#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530397
398#ifdef FEATURE_WLAN_BATCH_SCAN
399 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
400#else
401 NULL,
402#endif /* FEATURE_WLAN_BATCH_SCAN */
403
schangd82195a2013-03-13 18:41:24 -0700404 /*-------------------------------------------------------------------------
405 Indications
406 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700407 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800408 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530409 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
410 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700411#ifdef WLAN_FEATURE_11W
412 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
413#else
414 NULL,
415#endif
Yue Ma365933a2013-08-14 15:59:08 -0700416 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
417 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530418#ifdef FEATURE_WLAN_BATCH_SCAN
419 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
420 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
421#else
422 NULL,
423 NULL,
424#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -0700425 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700426};
427
428
Jeff Johnsone7245742012-09-05 17:12:55 -0700429/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700430 DAL Request Processing Array - the functions in this table will only be
431 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700432 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700433 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700434WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700435{
436 /*INIT*/
437 WDI_ProcessStartRsp, /* WDI_START_RESP */
438 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
439 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
440
441 /*SCAN*/
442 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
443 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
444 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
445 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
446
447 /* ASSOCIATION*/
448 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
449 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
450 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
451 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
452 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
453
454 /* Security */
455 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
456 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
457 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
458 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
459
460 /* QoS and BA APIs */
461 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
462 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
463 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
464 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
465 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
466
467 /* Miscellaneous Control APIs */
468 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
469 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
470 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
471 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
472 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
473
474 /* BA APIs*/
475 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
476 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 /* IBSS APIs*/
479 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
480 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
481
482 /*Soft AP APIs*/
483 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
484 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
485 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
486 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
487
488 /* PowerSave APIs */
489 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
490 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
491 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
492 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
493 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
494 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
495 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
496 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
497 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
498 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
499 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
500 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
501 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
502 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
503 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
504 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
505 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
506 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
509 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
510
511 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
512 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
513#ifdef WLAN_FEATURE_VOWIFI_11R
514 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
515#else
516 NULL,
517#endif /* WLAN_FEATURE_VOWIFI_11R */
518 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
519 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700520#ifdef FEATURE_OEM_DATA_SUPPORT
521 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
522#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533#ifdef FEATURE_WLAN_SCAN_PNO
534 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
535 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
536 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
537#else
538 NULL,
539 NULL,
540 NULL,
541#endif // FEATURE_WLAN_SCAN_PNO
542
543 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
544
545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548#ifdef WLAN_FEATURE_PACKET_FILTERING
549 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#else
558 NULL,
559 NULL,
560 NULL,
561 NULL,
562#endif // WLAN_FEATURE_PACKET_FILTERING
563
564 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
565 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
566
567 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
568#ifdef FEATURE_WLAN_CCX
569 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
570#else
571 NULL,
572#endif
573
574#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700575 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
576 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700577#else
578 NULL,
579 NULL,
580#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700581 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
582 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700583#ifdef WLAN_FEATURE_11AC
584 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700585#else
586 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700587#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800588#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
589 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
590#else
591 NULL,
592#endif
schangd82195a2013-03-13 18:41:24 -0700593 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700594#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700595 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700596#else
597 NULL,
598#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530599#ifdef FEATURE_WLAN_TDLS
600 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
601#else
602 NULL,
603#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700604#ifdef FEATURE_WLAN_LPHB
605 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
606#else
607 NULL,
608#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530609
610#ifdef FEATURE_WLAN_BATCH_SCAN
611 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
612#else
613 NULL,
614#endif /*FEATURE_WLAN_BATCH_SCAN*/
615
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 /*---------------------------------------------------------------------
617 Indications
618 ---------------------------------------------------------------------*/
619 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
620 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
621 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
622 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
623 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
624 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
625
626 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
627
628 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
629
Jeff Johnson295189b2012-06-20 16:38:30 -0700630 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700631
632#ifdef FEATURE_WLAN_SCAN_PNO
633 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
634#else
635 NULL,
636#endif // FEATURE_WLAN_SCAN_PNO
637
638#ifdef WLAN_WAKEUP_EVENTS
639 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
640#else // WLAN_WAKEUP_EVENTS
641 NULL,
642#endif // WLAN_WAKEUP_EVENTS
643
644 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800645
Viral Modi9dc288a2012-12-10 13:09:21 -0800646 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530647#ifdef FEATURE_WLAN_TDLS
648 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
649#else
650 NULL,
651#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700652
653#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700654 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700655#else
656 NULL,
657#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700658
659 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700660
661 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530662
663#ifdef FEATURE_WLAN_BATCH_SCAN
664 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
665#else
666 NULL,
667#endif
668
Jeff Johnson295189b2012-06-20 16:38:30 -0700669};
670
671
Jeff Johnsone7245742012-09-05 17:12:55 -0700672/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700673 WLAN DAL Global Control Block
674 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700675WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700676static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
677
Jeff Johnsone7245742012-09-05 17:12:55 -0700678const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700679
680/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700681WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700682void* WDI_GET_PAL_CTX( void )
683{
Jeff Johnsone7245742012-09-05 17:12:55 -0700684 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700685}/*WDI_GET_PAL_CTX*/
686
Jeff Johnsone7245742012-09-05 17:12:55 -0700687/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700688 Helper inline converters
689 ============================================================================*/
690/*Convert WDI driver type into HAL driver type*/
691WPT_STATIC WPT_INLINE WDI_Status
692WDI_HAL_2_WDI_STATUS
693(
694 eHalStatus halStatus
695);
696
697/*Convert WDI request type into HAL request type*/
698WPT_STATIC WPT_INLINE tHalHostMsgType
699WDI_2_HAL_REQ_TYPE
700(
701 WDI_RequestEnumType wdiReqType
702);
703
704/*Convert WDI response type into HAL response type*/
705WPT_STATIC WPT_INLINE WDI_ResponseEnumType
706HAL_2_WDI_RSP_TYPE
707(
708 tHalHostMsgType halMsg
709);
710
711/*Convert WDI driver type into HAL driver type*/
712WPT_STATIC WPT_INLINE tDriverType
713WDI_2_HAL_DRV_TYPE
714(
715 WDI_DriverType wdiDriverType
716);
717
718/*Convert WDI stop reason into HAL stop reason*/
719WPT_STATIC WPT_INLINE tHalStopType
720WDI_2_HAL_STOP_REASON
721(
722 WDI_StopType wdiStopType
723);
724
725/*Convert WDI scan mode type into HAL scan mode type*/
726WPT_STATIC WPT_INLINE eHalSysMode
727WDI_2_HAL_SCAN_MODE
728(
729 WDI_ScanMode wdiScanMode
730);
731
732/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700733WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700734WDI_2_HAL_SEC_CH_OFFSET
735(
736 WDI_HTSecondaryChannelOffset wdiSecChOffset
737);
738
739/*Convert WDI BSS type into HAL BSS type*/
740WPT_STATIC WPT_INLINE tSirBssType
741WDI_2_HAL_BSS_TYPE
742(
743 WDI_BssType wdiBSSType
744);
745
746/*Convert WDI NW type into HAL NW type*/
747WPT_STATIC WPT_INLINE tSirNwType
748WDI_2_HAL_NW_TYPE
749(
750 WDI_NwType wdiNWType
751);
752
753/*Convert WDI chanel bonding type into HAL cb type*/
754WPT_STATIC WPT_INLINE ePhyChanBondState
755WDI_2_HAL_CB_STATE
756(
757 WDI_PhyChanBondState wdiCbState
758);
759
760/*Convert WDI chanel bonding type into HAL cb type*/
761WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
762WDI_2_HAL_HT_OPER_MODE
763(
764 WDI_HTOperatingMode wdiHTOperMode
765);
766
767/*Convert WDI mimo PS type into HAL mimo PS type*/
768WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
769WDI_2_HAL_MIMO_PS
770(
771 WDI_HTMIMOPowerSaveState wdiHTOperMode
772);
773
774/*Convert WDI ENC type into HAL ENC type*/
775WPT_STATIC WPT_INLINE tAniEdType
776WDI_2_HAL_ENC_TYPE
777(
778 WDI_EncryptType wdiEncType
779);
780
781/*Convert WDI WEP type into HAL WEP type*/
782WPT_STATIC WPT_INLINE tAniWepType
783WDI_2_HAL_WEP_TYPE
784(
785 WDI_WepType wdiWEPType
786);
787
788/*Convert WDI Link State into HAL Link State*/
789WPT_STATIC WPT_INLINE tSirLinkState
790WDI_2_HAL_LINK_STATE
791(
792 WDI_LinkStateType wdiLinkState
793);
794
Jeff Johnsone7245742012-09-05 17:12:55 -0700795/*Translate a STA Context from WDI into HAL*/
796WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700797void
798WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700799(
Jeff Johnson295189b2012-06-20 16:38:30 -0700800 tConfigStaParams* phalConfigSta,
801 WDI_ConfigStaReqInfoType* pwdiConfigSta
802);
Jeff Johnsone7245742012-09-05 17:12:55 -0700803
804/*Translate a Rate set info from WDI into HAL*/
805WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700806WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700807(
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 tSirMacRateSet* pHalRateSet,
809 WDI_RateSet* pwdiRateSet
810);
811
812/*Translate an EDCA Parameter Record from WDI into HAL*/
813WPT_STATIC WPT_INLINE void
814WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700815(
Jeff Johnson295189b2012-06-20 16:38:30 -0700816 tSirMacEdcaParamRecord* phalEdcaParam,
817 WDI_EdcaParamRecord* pWDIEdcaParam
818);
819
820/*Copy a management frame header from WDI fmt into HAL fmt*/
821WPT_STATIC WPT_INLINE void
822WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
823(
824 tSirMacMgmtHdr* pmacMgmtHdr,
825 WDI_MacMgmtHdr* pwdiMacMgmtHdr
826);
827
828/*Copy config bss parameters from WDI fmt into HAL fmt*/
829WPT_STATIC WPT_INLINE void
830WDI_CopyWDIConfigBSSToHALConfigBSS
831(
832 tConfigBssParams* phalConfigBSS,
833 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
834);
835
Jeff Johnsone7245742012-09-05 17:12:55 -0700836/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700837 pointed to by user data */
838WPT_STATIC WPT_INLINE void
839WDI_ExtractRequestCBFromEvent
840(
841 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700842 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700843 void** ppUserData
844);
845
846wpt_uint8
847WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700848(
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 WDI_ControlBlockType* pWDICtx,
850 WDI_BSSSessionType** ppSession
851);
852
853void
854WDI_AddBcastSTAtoSTATable
855(
856 WDI_ControlBlockType* pWDICtx,
857 WDI_AddStaParams * staParams,
858 wpt_uint16 usBcastStaIdx
859);
860
861WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700862(
Jeff Johnson295189b2012-06-20 16:38:30 -0700863 WDI_ControlBlockType* pWDICtx,
864 WDI_EventInfoType* pEventData
865);
866
867void
868WDI_SetPowerStateCb
869(
870 wpt_status status,
871 unsigned int dxePhyAddr,
872 void *pContext
873);
874
875#define CASE_RETURN_STRING( str ) \
876 case ( ( str ) ): return( #str ); break \
877
878/**
879 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700880
881 @param wdiReqMsgId: WDI Message request Id
882
883 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700884 @return Result of the function call
885*/
886static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
887{
888 switch (wdiReqMsgId)
889 {
890 CASE_RETURN_STRING( WDI_START_REQ );
891 CASE_RETURN_STRING( WDI_STOP_REQ );
892 CASE_RETURN_STRING( WDI_CLOSE_REQ );
893 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
894 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
895 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
896 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
897 CASE_RETURN_STRING( WDI_JOIN_REQ );
898 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
899 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
900 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
901 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
902 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
903 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
904 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
905 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
906 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
907 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
908 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
909 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
910 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
911 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
912 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
913 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
914 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
915 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
916 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
917 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
918 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
919 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
920 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
921 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
922 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
923 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
924 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530925#ifdef FEATURE_WLAN_TDLS
926 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
927#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700928 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
929 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
930 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
931 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
932 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
933 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
934 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
935 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
936 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
937 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
938 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
939 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
940 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
941 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
942 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
943 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
944 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
945 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
946 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
947 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
948 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
949 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
950 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
951 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
952 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700953 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700954 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
955 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
956 #ifdef FEATURE_WLAN_SCAN_PNO
957 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
958 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
959 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
960 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700961#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700962 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700963#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
965 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
966 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
967 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
968 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
969 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
970 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
971 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
972 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800973 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800974 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700975#ifdef WLAN_FEATURE_11W
976 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
977#endif
Rajeev3db91f12013-10-05 11:03:42 +0530978#ifdef FEATURE_WLAN_BATCH_SCAN
979 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
980 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
981 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
982#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700983 default:
984 return "Unknown WDI MessageId";
985 }
986}
987
988
989
990/**
991 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700992
993 @param wdiRespMsgId: WDI Message response Id
994
995 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 @return Result of the function call
997*/
998static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
999{
1000 switch (wdiRespMsgId)
1001 {
1002 CASE_RETURN_STRING( WDI_START_RESP );
1003 CASE_RETURN_STRING( WDI_STOP_RESP );
1004 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1005 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1006 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1007 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1008 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1009 CASE_RETURN_STRING( WDI_JOIN_RESP );
1010 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1011 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1012 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1013 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1014 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1015 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1016 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1017 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1018 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1019 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1020 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1021 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1022 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1023 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1024 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1025 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1026 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1027 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1028 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1029 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1030 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1031 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1032 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1033 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1034 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1035 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1036 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301037#ifdef FEATURE_WLAN_TDLS
1038 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1039 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1040#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001041 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1042 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1043 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1044 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1045 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1046 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1047 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1048 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1049 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1050 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1051 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1052 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1053 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1054 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1055 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1056 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1057 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1058 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1059 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1060 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1061 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1062 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1063 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1064 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1065 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001066 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1068 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1069 #ifdef FEATURE_WLAN_SCAN_PNO
1070 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1071 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1072 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1073 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001074#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001075 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001076#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001077 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1078 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1079 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1080 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1081 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1082 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1083 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1084 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001085 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301086#ifdef FEATURE_WLAN_BATCH_SCAN
1087 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1088#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 default:
1090 return "Unknown WDI MessageId";
1091 }
1092}
1093
1094/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301095 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1096 Capability bitmap array.
1097 @param capabilityBitmap - Base address of Bitmap array
1098 @see
1099 @returns None
1100 */
1101void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1102{
1103 int i;
1104 char capStr[512];
1105 char *pCapStr = capStr;
1106 for (i = 0; i < 32; i++) {
1107 if ((*(capabilityBitmap + 0) & (1 << i))) {
1108 switch(i) {
1109 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1110 pCapStr += strlen("MCC");
1111 break;
1112 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1113 pCapStr += strlen("P2P");
1114 break;
1115 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1116 pCapStr += strlen("DOT11AC");
1117 break;
1118 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1119 pCapStr += strlen("SLM_SESSIONIZATION");
1120 break;
1121 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1122 pCapStr += strlen("DOT11AC_OPMODE");
1123 break;
1124 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1125 pCapStr += strlen("SAP32STA");
1126 break;
1127 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1128 pCapStr += strlen("TDLS");
1129 break;
1130 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1131 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1132 break;
1133 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1134 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1135 break;
1136 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1137 pCapStr += strlen("BEACON_OFFLOAD");
1138 break;
1139 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1140 pCapStr += strlen("SCAN_OFFLOAD");
1141 break;
1142 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1143 pCapStr += strlen("ROAM_OFFLOAD");
1144 break;
1145 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1146 pCapStr += strlen("BCN_MISS_OFFLOAD");
1147 break;
1148 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1149 pCapStr += strlen("STA_POWERSAVE");
1150 break;
1151 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1152 pCapStr += strlen("AP_UAPSD");
1153 break;
1154 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1155 pCapStr += strlen("AP_DFS");
1156 break;
1157 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1158 pCapStr += strlen("BLOCKACK");
1159 break;
1160 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1161 pCapStr += strlen("PHY_ERR");
1162 break;
1163 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1164 pCapStr += strlen("BCN_FILTER");
1165 break;
1166 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1167 pCapStr += strlen("RTT");
1168 break;
1169 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1170 pCapStr += strlen("RATECTRL");
1171 break;
1172 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1173 pCapStr += strlen("WOW");
1174 break;
1175 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1176 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1177 break;
1178 }
1179 *pCapStr++ = ',';
1180 *pCapStr++ = ' ';
1181 }
1182 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301183 pCapStr -= 2;
1184 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301185 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301187}
1188
1189/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001191
1192 @param halStatusId: HAL status Id
1193
1194 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001195 @return Result of the function call
1196*/
1197static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1198{
1199 switch (halStatusId)
1200 {
1201 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1202 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1203 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1204 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1205 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1206 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1207 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1208 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1209 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1210 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1211 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1212 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1213 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1214 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1215 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1216 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1217 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1218 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1219 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1220 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1221 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1222 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1223 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1224 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1225 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1226 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1227 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1228 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1229 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1230 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1231 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1232 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1233 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1234 default:
1235 return "Unknown HAL status";
1236 }
1237}
1238
Jeff Johnsone7245742012-09-05 17:12:55 -07001239/*========================================================================
1240
Jeff Johnson295189b2012-06-20 16:38:30 -07001241 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001242
Jeff Johnson295189b2012-06-20 16:38:30 -07001243==========================================================================*/
1244
1245/**
1246 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001247
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 DAL will allocate all the resources it needs. It will open PAL, it will also
1249 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001250 DXE/SMD or any other drivers that they need.
1251
Jeff Johnson295189b2012-06-20 16:38:30 -07001252 @param pOSContext: pointer to the OS context provided by the UMAC
1253 will be passed on to PAL on Open
1254 ppWDIGlobalCtx: output pointer of Global Context
1255 pWdiDevCapability: output pointer of device capability
1256
1257 @return Result of the function call
1258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001260WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001261(
Jeff Johnson295189b2012-06-20 16:38:30 -07001262 void* pOSContext,
1263 void** ppWDIGlobalCtx,
1264 WDI_DeviceCapabilityType* pWdiDevCapability,
1265 unsigned int driverType
1266)
1267{
1268 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001269 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001270 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001271 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1273
1274 /*---------------------------------------------------------------------
1275 Sanity check
1276 ---------------------------------------------------------------------*/
1277 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1278 {
1279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1280 "Invalid input parameters in WDI_Init");
1281
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 }
1284
1285 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001286 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 ---------------------------------------------------------------------*/
1288 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1289 {
1290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1291 "WDI module already initialized - return");
1292
Jeff Johnsone7245742012-09-05 17:12:55 -07001293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 }
1295
1296 /*Module is now initialized - this flag is to ensure the fact that multiple
1297 init will not happen on WDI
1298 !! - potential race does exist because read and set are not atomic,
1299 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001300 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001301
1302 /*Setup the control block */
1303 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001304 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001305
1306 /*Setup the STA Table*/
1307 wdiStatus = WDI_STATableInit(&gWDICb);
1308 if ( WDI_STATUS_SUCCESS != wdiStatus )
1309 {
1310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1311 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001312 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001313 goto fail_STATableInit;
1314 }
1315
1316 /*------------------------------------------------------------------------
1317 Open the PAL
1318 ------------------------------------------------------------------------*/
1319 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1320 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1321 {
1322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1323 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001324 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 goto fail_wpalOpen;
1326 }
1327
1328 /*Initialize main synchro mutex - it will be used to ensure integrity of
1329 the main WDI Control Block*/
1330 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1331 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1332 {
1333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1334 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001335 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001336 goto fail_mutex;
1337 }
1338
1339 /*Initialize the response timer - it will be used to time all messages
1340 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001341 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1342 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001343 &gWDICb);
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 response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001348 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001349 goto fail_timer;
1350 }
1351
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001352 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1353 WDI_SsrTimerCB,
1354 &gWDICb);
1355 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1356 {
1357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1358 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001359 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001360 goto fail_timer2;
1361 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 /* Initialize the WDI Pending Request Queue*/
1363 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1364 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1365 {
1366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1367 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001368 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 goto fail_pend_queue;
1370 }
1371
1372 /*Init WDI Pending Assoc Id Queue */
1373 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1374 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1375 {
1376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1377 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001378 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001379 goto fail_assoc_queue;
1380 }
1381
1382 /*Initialize the BSS sessions pending Queue */
1383 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1384 {
1385 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1386 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1387 {
1388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1389 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001390 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 goto fail_bss_queue;
1392 }
1393 }
1394
1395 /*Indicate the control block is sufficiently initialized for callbacks*/
1396 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1397
1398 /*------------------------------------------------------------------------
1399 Initialize the Data Path Utility Module
1400 ------------------------------------------------------------------------*/
1401 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1402 if ( WDI_STATUS_SUCCESS != wdiStatus )
1403 {
1404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1405 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001406 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 goto fail_dp_util_init;
1408 }
1409
1410 /* Init Set power state event */
1411 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001412 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1415 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001416 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001417 goto fail_power_event;
1418 }
1419
1420 /* Init WCTS action event */
1421 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001422 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001423 {
1424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1425 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001426 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 goto fail_wcts_event;
1428 }
1429
1430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001431 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001432 ------------------------------------------------------------------------*/
1433 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1434 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 wctsCBs.wctsRxMsgCBData = &gWDICb;
1437
Jeff Johnsone7245742012-09-05 17:12:55 -07001438 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001439 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 WDI_CT_CHANNEL_SIZE,
1441 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001442
1443 if ( NULL == gWDICb.wctsHandle )
1444 {
1445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001446 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 goto fail_wcts_open;
1448 }
1449
1450 gWDICb.driverMode = (tDriverType)driverType;
1451 /* FTM mode not need to open Transport Driver */
1452 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001453 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001454 /*------------------------------------------------------------------------
1455 Open the Data Transport
1456 ------------------------------------------------------------------------*/
1457 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1458 {
1459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001460 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 goto fail_wdts_open;
1462 }
1463 }
1464
1465 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001466 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001467
1468 /*Send the context as a ptr to the global WDI Control Block*/
1469 *ppWDIGlobalCtx = &gWDICb;
1470
1471 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001472 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001473 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1474 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1475 return WDI_STATUS_SUCCESS;
1476
1477 /* ERROR handlers
1478 Undo everything that completed successfully */
1479
1480 fail_wdts_open:
1481 {
1482 wpt_status eventStatus;
1483
1484 /* Closing WCTS in this scenario is tricky since it has to close
1485 the SMD channel and then we get notified asynchronously when
1486 the channel has been closed. So we take some of the logic from
1487 the "normal" close procedure in WDI_Close()
1488 */
1489
1490 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001491 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 {
1493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001494 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001495 }
1496
1497 WCTS_CloseTransport(gWDICb.wctsHandle);
1498
1499 /* Wait for WCTS to close the control transport. If we were able
1500 to reset the event flag, then we'll wait for the event,
1501 otherwise we'll wait for a maximum amount of time required for
1502 the channel to be closed */
1503 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1504 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001505 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 WDI_WCTS_ACTION_TIMEOUT);
1507 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1508 {
1509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001510 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 }
1512 }
1513 else
1514 {
1515 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1516 }
1517 }
1518 fail_wcts_open:
1519 wpalEventDelete(&gWDICb.wctsActionEvent);
1520 fail_wcts_event:
1521 wpalEventDelete(&gWDICb.setPowerStateEvent);
1522 fail_power_event:
1523 WDI_DP_UtilsExit(&gWDICb);
1524 fail_dp_util_init:
1525 gWDICb.magic = 0;
1526 fail_bss_queue:
1527 /* entries 0 thru i-1 were successfully initialized */
1528 while (0 < i)
1529 {
1530 i--;
1531 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1532 }
1533 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1534 fail_assoc_queue:
1535 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1536 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001537 wpalTimerDelete(&gWDICb.ssrTimer);
1538 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 wpalTimerDelete(&gWDICb.wptResponseTimer);
1540 fail_timer:
1541 wpalMutexDelete(&gWDICb.wptMutex);
1542 fail_mutex:
1543 wpalClose(gWDICb.pPALContext);
1544 fail_wpalOpen:
1545 WDI_STATableClose(&gWDICb);
1546 fail_STATableInit:
1547 gWDIInitialized = eWLAN_PAL_FALSE;
1548
1549 return WDI_STATUS_E_FAILURE;
1550
1551}/*WDI_Init*/;
1552
1553/**
1554 @brief WDI_Start will be called when the upper MAC is ready to
1555 commence operation with the WLAN Device. Upon the call
1556 of this API the WLAN DAL will pack and send a HAL Start
1557 message to the lower RIVA sub-system if the SMD channel
1558 has been fully opened and the RIVA subsystem is up.
1559
1560 If the RIVA sub-system is not yet up and running DAL
1561 will queue the request for Open and will wait for the
1562 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001564
1565 WDI_Init must have been called.
1566
Jeff Johnsone7245742012-09-05 17:12:55 -07001567 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001568 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001569
Jeff Johnson295189b2012-06-20 16:38:30 -07001570 wdiStartRspCb: callback for passing back the response of
1571 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001572
Jeff Johnson295189b2012-06-20 16:38:30 -07001573 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001574 callback
1575
Jeff Johnson295189b2012-06-20 16:38:30 -07001576 @see WDI_Start
1577 @return Result of the function call
1578*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001579WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001580WDI_Start
1581(
1582 WDI_StartReqParamsType* pwdiStartParams,
1583 WDI_StartRspCb wdiStartRspCb,
1584 void* pUserData
1585)
1586{
1587 WDI_EventInfoType wdiEventData;
1588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1589
1590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001592 ------------------------------------------------------------------------*/
1593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1596 "WDI API call before module is initialized - Fail request");
1597
Jeff Johnsone7245742012-09-05 17:12:55 -07001598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 }
1600
1601 /*------------------------------------------------------------------------
1602 Fill in Event data and post to the Main FSM
1603 ------------------------------------------------------------------------*/
1604 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001605 wdiEventData.pEventData = pwdiStartParams;
1606 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1607 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001608 wdiEventData.pUserData = pUserData;
1609
1610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1611
1612}/*WDI_Start*/
1613
1614/**
1615 @brief WDI_Stop will be called when the upper MAC is ready to
1616 stop any operation with the WLAN Device. Upon the call
1617 of this API the WLAN DAL will pack and send a HAL Stop
1618 message to the lower RIVA sub-system if the DAL Core is
1619 in started state.
1620
1621 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001622
1623 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001624
1625 WDI_Start must have been called.
1626
Jeff Johnsone7245742012-09-05 17:12:55 -07001627 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001629
Jeff Johnson295189b2012-06-20 16:38:30 -07001630 wdiStopRspCb: callback for passing back the response of
1631 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001632
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001634 callback
1635
Jeff Johnson295189b2012-06-20 16:38:30 -07001636 @see WDI_Start
1637 @return Result of the function call
1638*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001640WDI_Stop
1641(
1642 WDI_StopReqParamsType* pwdiStopParams,
1643 WDI_StopRspCb wdiStopRspCb,
1644 void* pUserData
1645)
1646{
1647 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001648 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1650
1651 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001652 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 ------------------------------------------------------------------------*/
1654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1655 {
1656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1657 "WDI API call before module is initialized - Fail request");
1658
Jeff Johnsone7245742012-09-05 17:12:55 -07001659 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 }
1661
Jeff Johnson43971f52012-07-17 12:26:56 -07001662 /*Access to the global state must be locked before cleaning */
1663 wpalMutexAcquire(&pWDICtx->wptMutex);
1664
1665 /*Clear all pending request*/
1666 WDI_ClearPendingRequests(pWDICtx);
1667
1668 /*We have completed cleaning unlock now*/
1669 wpalMutexRelease(&pWDICtx->wptMutex);
1670
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 /* Free the global variables */
1672 wpalMemoryFree(gpHostWlanFeatCaps);
1673 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001674 gpHostWlanFeatCaps = NULL;
1675 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001676
1677 /*------------------------------------------------------------------------
1678 Fill in Event data and post to the Main FSM
1679 ------------------------------------------------------------------------*/
1680 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001681 wdiEventData.pEventData = pwdiStopParams;
1682 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1683 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 wdiEventData.pUserData = pUserData;
1685
1686 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1687
1688}/*WDI_Stop*/
1689
1690
1691
1692/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 needs to interact with DAL. DAL will free its control
1695 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001696
1697 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001698
1699 WDI_Stop must have been called.
1700
1701 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001702
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 @see WDI_Stop
1704 @return Result of the function call
1705*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001707WDI_Close
1708(
1709 void
1710)
1711{
1712 wpt_uint8 i;
1713 WDI_EventInfoType wdiEventData;
1714 wpt_status wptStatus;
1715 wpt_status eventStatus;
1716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1717
1718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001719 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 ------------------------------------------------------------------------*/
1721 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1722 {
1723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1724 "WDI API call before module is initialized - Fail request");
1725
Jeff Johnsone7245742012-09-05 17:12:55 -07001726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001727 }
1728
1729 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1730 (the control transport will be closed by the FSM and we'll want
1731 to wait until that completes)*/
1732 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001733 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001734 {
1735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001736 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 /* fall through and try to finish closing via the FSM */
1738 }
1739
1740 /*------------------------------------------------------------------------
1741 Fill in Event data and post to the Main FSM
1742 ------------------------------------------------------------------------*/
1743 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 wdiEventData.pEventData = NULL;
1745 wdiEventData.uEventDataSize = 0;
1746 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 wdiEventData.pUserData = NULL;
1748
1749 gWDIInitialized = eWLAN_PAL_FALSE;
1750
1751 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1752
1753 /*Wait for WCTS to close the control transport
1754 (but only if we were able to reset the event flag*/
1755 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1756 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001757 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001758 WDI_WCTS_ACTION_TIMEOUT);
1759 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1760 {
1761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001762 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 }
1764 }
1765
1766 /* Destroy the WCTS action event */
1767 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1768 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1769 {
1770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1771 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 }
1774
1775 /* Destroy the Set Power State event */
1776 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1777 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1778 {
1779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1780 "WDI Close failed to destroy an event");
1781
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 }
1784
1785 /*------------------------------------------------------------------------
1786 Closes the Data Path Utility Module
1787 ------------------------------------------------------------------------*/
1788 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1789 {
1790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1791 "WDI Init failed to close the DP Util Module");
1792
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 }
1795
1796 /*destroy the BSS sessions pending Queue */
1797 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1798 {
1799 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1800 }
1801
1802 /* destroy the WDI Pending Assoc Id Request Queue*/
1803 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1804
1805 /* destroy the WDI Pending Request Queue*/
1806 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001807
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 /*destroy the response timer */
1809 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1810
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001811 /*destroy the SSR timer */
1812 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1813
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 /*invalidate the main synchro mutex */
1815 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1816 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1817 {
1818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1819 "Failed to delete mutex %d", wptStatus);
1820 WDI_ASSERT(0);
1821 }
1822
1823 /*Clear control block. note that this will clear the "magic"
1824 which will inhibit all asynchronous callbacks*/
1825 WDI_CleanCB(&gWDICb);
1826
1827 return wptStatus;
1828
1829}/*WDI_Close*/
1830
1831/**
1832 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1833 This will do most of the WDI stop & close
1834 operations without doing any handshake with Riva
1835
1836 This will also make sure that the control transport
1837 will NOT be closed.
1838
1839 This request will not be queued.
1840
1841
1842 WDI_Start must have been called.
1843
1844 @param closeTransport: Close control channel if this is set
1845
1846 @return Result of the function call
1847*/
1848WDI_Status
1849WDI_Shutdown
1850(
1851 wpt_boolean closeTransport
1852)
1853{
1854 WDI_EventInfoType wdiEventData;
1855 wpt_status wptStatus;
1856 int i = 0;
1857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1858
1859 /*------------------------------------------------------------------------
1860 Sanity Check
1861 ------------------------------------------------------------------------*/
1862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1863 {
1864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1865 "WDI API call before module is initialized - Fail request");
1866
1867 return WDI_STATUS_E_NOT_ALLOWED;
1868 }
1869
1870 /*------------------------------------------------------------------------
1871 Fill in Event data and post to the Main FSM
1872 ------------------------------------------------------------------------*/
1873 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1874 wdiEventData.pEventData = NULL;
1875 wdiEventData.uEventDataSize = 0;
1876
1877 /* Shutdown will not be queued, if the state is busy timer will be
1878 * stopped & this message will be processed.*/
1879 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1880 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1881 {
1882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001883 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 }
1885 /* Destroy the Set Power State event */
1886 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1887 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1888 {
1889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1890 "WDI Close failed to destroy an event");
1891
1892 WDI_ASSERT(0);
1893 }
1894 /*------------------------------------------------------------------------
1895 Closes the Data Path Utility Module
1896 ------------------------------------------------------------------------*/
1897 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1898 {
1899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1900 "WDI Init failed to close the DP Util Module");
1901
1902 WDI_ASSERT(0);
1903 }
1904 if ( closeTransport )
1905 {
1906 /* Close control transport, called from module unload */
1907 WCTS_CloseTransport(gWDICb.wctsHandle);
1908 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001909 else
1910 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001911 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001912 the pending messages in the transport queue */
1913 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1914 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 /*destroy the BSS sessions pending Queue */
1916 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1917 {
1918 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1919 }
1920
1921 /* destroy the WDI Pending Assoc Id Request Queue*/
1922 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1923 /* destroy the WDI Pending Request Queue*/
1924 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1925 /*destroy the response timer */
1926 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001927 /*destroy the SSR timer */
1928 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001929
1930 /*invalidate the main synchro mutex */
1931 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1932 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1933 {
1934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001935 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 WDI_ASSERT(0);
1937 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001938 /* Free the global variables */
1939 wpalMemoryFree(gpHostWlanFeatCaps);
1940 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001941 gpHostWlanFeatCaps = NULL;
1942 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 /*Clear control block. note that this will clear the "magic"
1944 which will inhibit all asynchronous callbacks*/
1945 WDI_CleanCB(&gWDICb);
1946 return wptStatus;
1947
1948}/*WDI_Shutdown*/
1949
1950
Jeff Johnsone7245742012-09-05 17:12:55 -07001951/*========================================================================
1952
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001954
Jeff Johnson295189b2012-06-20 16:38:30 -07001955==========================================================================*/
1956
1957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 the WLAN Device to get ready for a scan procedure. Upon
1960 the call of this API the WLAN DAL will pack and send a
1961 HAL Init Scan request message to the lower RIVA
1962 sub-system if DAL is in state STARTED.
1963
1964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001966
1967 WDI_Start must have been called.
1968
1969 @param wdiInitScanParams: the init scan parameters as specified
1970 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001971
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 wdiInitScanRspCb: callback for passing back the response
1973 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001974
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001976 callback
1977
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 @see WDI_Start
1979 @return Result of the function call
1980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001982WDI_InitScanReq
1983(
1984 WDI_InitScanReqParamsType* pwdiInitScanParams,
1985 WDI_InitScanRspCb wdiInitScanRspCb,
1986 void* pUserData
1987)
1988{
1989 WDI_EventInfoType wdiEventData;
1990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1991
1992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 ------------------------------------------------------------------------*/
1995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1996 {
1997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1998 "WDI API call before module is initialized - Fail request");
1999
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 }
2002
2003 /*------------------------------------------------------------------------
2004 Fill in Event data and post to the Main FSM
2005 ------------------------------------------------------------------------*/
2006 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002007 wdiEventData.pEventData = pwdiInitScanParams;
2008 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2009 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 wdiEventData.pUserData = pUserData;
2011
2012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2013
2014}/*WDI_InitScanReq*/
2015
2016/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 wishes to change the Scan channel on the WLAN Device.
2019 Upon the call of this API the WLAN DAL will pack and
2020 send a HAL Start Scan request message to the lower RIVA
2021 sub-system if DAL is in state STARTED.
2022
2023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002025
2026 WDI_InitScanReq must have been called.
2027
Jeff Johnsone7245742012-09-05 17:12:55 -07002028 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002030
Jeff Johnson295189b2012-06-20 16:38:30 -07002031 wdiStartScanRspCb: callback for passing back the
2032 response of the start scan operation received from the
2033 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002034
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002036 callback
2037
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 @see WDI_InitScanReq
2039 @return Result of the function call
2040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002042WDI_StartScanReq
2043(
2044 WDI_StartScanReqParamsType* pwdiStartScanParams,
2045 WDI_StartScanRspCb wdiStartScanRspCb,
2046 void* pUserData
2047)
2048{
2049 WDI_EventInfoType wdiEventData;
2050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2051
2052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 ------------------------------------------------------------------------*/
2055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2056 {
2057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2058 "WDI API call before module is initialized - Fail request");
2059
Jeff Johnsone7245742012-09-05 17:12:55 -07002060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002061 }
2062
2063 /*------------------------------------------------------------------------
2064 Fill in Event data and post to the Main FSM
2065 ------------------------------------------------------------------------*/
2066 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 wdiEventData.pEventData = pwdiStartScanParams;
2068 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2069 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 wdiEventData.pUserData = pUserData;
2071
2072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2073
2074}/*WDI_StartScanReq*/
2075
2076
2077/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 wants to end scanning for a particular channel that it
2080 had set before by calling Scan Start on the WLAN Device.
2081 Upon the call of this API the WLAN DAL will pack and
2082 send a HAL End Scan request message to the lower RIVA
2083 sub-system if DAL is in state STARTED.
2084
2085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002087
2088 WDI_StartScanReq must have been called.
2089
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002092
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 wdiEndScanRspCb: callback for passing back the response
2094 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002095
Jeff Johnson295189b2012-06-20 16:38:30 -07002096 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 callback
2098
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 @see WDI_StartScanReq
2100 @return Result of the function call
2101*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002102WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002103WDI_EndScanReq
2104(
2105 WDI_EndScanReqParamsType* pwdiEndScanParams,
2106 WDI_EndScanRspCb wdiEndScanRspCb,
2107 void* pUserData
2108)
2109{
2110 WDI_EventInfoType wdiEventData;
2111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2112
2113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002114 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 ------------------------------------------------------------------------*/
2116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2117 {
2118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2119 "WDI API call before module is initialized - Fail request");
2120
Jeff Johnsone7245742012-09-05 17:12:55 -07002121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 }
2123
2124 /*------------------------------------------------------------------------
2125 Fill in Event data and post to the Main FSM
2126 ------------------------------------------------------------------------*/
2127 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002128 wdiEventData.pEventData = pwdiEndScanParams;
2129 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2130 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002131 wdiEventData.pUserData = pUserData;
2132
2133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2134
2135}/*WDI_EndScanReq*/
2136
2137
2138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 completed the scan process on the WLAN Device. Upon the
2141 call of this API the WLAN DAL will pack and send a HAL
2142 Finish Scan Request request message to the lower RIVA
2143 sub-system if DAL is in state STARTED.
2144
2145 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002147
2148 WDI_InitScanReq must have been called.
2149
Jeff Johnsone7245742012-09-05 17:12:55 -07002150 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002152
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 wdiFinishScanRspCb: callback for passing back the
2154 response of the finish scan operation received from the
2155 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002156
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 callback
2159
Jeff Johnson295189b2012-06-20 16:38:30 -07002160 @see WDI_InitScanReq
2161 @return Result of the function call
2162*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002164WDI_FinishScanReq
2165(
2166 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2167 WDI_FinishScanRspCb wdiFinishScanRspCb,
2168 void* pUserData
2169)
2170{
2171 WDI_EventInfoType wdiEventData;
2172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2173
2174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002175 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 ------------------------------------------------------------------------*/
2177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2178 {
2179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2180 "WDI API call before module is initialized - Fail request");
2181
Jeff Johnsone7245742012-09-05 17:12:55 -07002182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 }
2184
2185 /*------------------------------------------------------------------------
2186 Fill in Event data and post to the Main FSM
2187 ------------------------------------------------------------------------*/
2188 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 wdiEventData.pEventData = pwdiFinishScanParams;
2190 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2191 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 wdiEventData.pUserData = pUserData;
2193
2194 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2195
2196}/*WDI_FinishScanReq*/
2197
Jeff Johnsone7245742012-09-05 17:12:55 -07002198/*========================================================================
2199
Jeff Johnson295189b2012-06-20 16:38:30 -07002200 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002201
Jeff Johnson295189b2012-06-20 16:38:30 -07002202==========================================================================*/
2203
2204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 to start an association procedure to a BSS. Upon the
2207 call of this API the WLAN DAL will pack and send a HAL
2208 Join request message to the lower RIVA sub-system if
2209 DAL is in state STARTED.
2210
2211 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002212 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002213
2214 WDI_Start must have been called.
2215
Jeff Johnsone7245742012-09-05 17:12:55 -07002216 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002218
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 wdiJoinRspCb: callback for passing back the response of
2220 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002221
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002223 callback
2224
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 @see WDI_Start
2226 @return Result of the function call
2227*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002228WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002229WDI_JoinReq
2230(
2231 WDI_JoinReqParamsType* pwdiJoinParams,
2232 WDI_JoinRspCb wdiJoinRspCb,
2233 void* pUserData
2234)
2235{
2236 WDI_EventInfoType wdiEventData;
2237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2238
2239 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002241 ------------------------------------------------------------------------*/
2242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2243 {
2244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2245 "WDI API call before module is initialized - Fail request");
2246
Jeff Johnsone7245742012-09-05 17:12:55 -07002247 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 }
2249
2250 /*------------------------------------------------------------------------
2251 Fill in Event data and post to the Main FSM
2252 ------------------------------------------------------------------------*/
2253 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002254 wdiEventData.pEventData = pwdiJoinParams;
2255 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2256 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 wdiEventData.pUserData = pUserData;
2258
2259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2260
2261}/*WDI_JoinReq*/
2262
2263/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 wishes to configure the newly acquired or in process of
2266 being acquired BSS to the HW . Upon the call of this API
2267 the WLAN DAL will pack and send a HAL Config BSS request
2268 message to the lower RIVA sub-system if DAL is in state
2269 STARTED.
2270
2271 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002273
2274 WDI_JoinReq must have been called.
2275
Jeff Johnsone7245742012-09-05 17:12:55 -07002276 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002278
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 wdiConfigBSSRspCb: callback for passing back the
2280 response of the config BSS operation received from the
2281 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_JoinReq
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_ConfigBSSReq
2291(
2292 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2293 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiConfigBSSParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2317 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_ConfigBSSReq*/
2323
2324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 disassociating from the BSS and wishes to notify HW.
2327 Upon the call of this API the WLAN DAL will pack and
2328 send a HAL Del BSS request message to the lower RIVA
2329 sub-system if DAL is in state STARTED.
2330
2331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002333
2334 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002338
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiDelBSSRspCb: callback for passing back the response
2340 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002341
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 callback
2344
2345 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 @return Result of the function call
2347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002349WDI_DelBSSReq
2350(
2351 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2352 WDI_DelBSSRspCb wdiDelBSSRspCb,
2353 void* pUserData
2354)
2355{
2356 WDI_EventInfoType wdiEventData;
2357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2358
2359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 ------------------------------------------------------------------------*/
2362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2363 {
2364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2365 "WDI API call before module is initialized - Fail request");
2366
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 }
2369
2370 /*------------------------------------------------------------------------
2371 Fill in Event data and post to the Main FSM
2372 ------------------------------------------------------------------------*/
2373 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 wdiEventData.pEventData = pwdiDelBSSParams;
2375 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2376 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 wdiEventData.pUserData = pUserData;
2378
2379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2380
2381}/*WDI_DelBSSReq*/
2382
2383/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002384 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 associated to a BSS and wishes to configure HW for
2386 associated state. Upon the call of this API the WLAN DAL
2387 will pack and send a HAL Post Assoc request message to
2388 the lower RIVA sub-system if DAL is in state STARTED.
2389
2390 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002391 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002392
2393 WDI_JoinReq must have been called.
2394
2395 @param wdiPostAssocReqParams: the assoc parameters as specified
2396 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002397
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 wdiPostAssocRspCb: callback for passing back the
2399 response of the post assoc operation received from the
2400 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002401
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 callback
2404
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 @see WDI_JoinReq
2406 @return Result of the function call
2407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002409WDI_PostAssocReq
2410(
2411 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2412 WDI_PostAssocRspCb wdiPostAssocRspCb,
2413 void* pUserData
2414)
2415{
2416 WDI_EventInfoType wdiEventData;
2417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2418
2419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 ------------------------------------------------------------------------*/
2422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2423 {
2424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2425 "WDI API call before module is initialized - Fail request");
2426
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 }
2429
2430 /*------------------------------------------------------------------------
2431 Fill in Event data and post to the Main FSM
2432 ------------------------------------------------------------------------*/
2433 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 wdiEventData.pEventData = pwdiPostAssocReqParams;
2435 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2436 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 wdiEventData.pUserData = pUserData;
2438
2439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2440
2441}/*WDI_PostAssocReq*/
2442
2443/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 association with another STA has ended and the station
2446 must be deleted from HW. Upon the call of this API the
2447 WLAN DAL will pack and send a HAL Del STA request
2448 message to the lower RIVA sub-system if DAL is in state
2449 STARTED.
2450
2451 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002453
2454 WDI_PostAssocReq must have been called.
2455
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002458
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 wdiDelSTARspCb: callback for passing back the response
2460 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002461
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 callback
2464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 @see WDI_PostAssocReq
2466 @return Result of the function call
2467*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002468WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002469WDI_DelSTAReq
2470(
2471 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2472 WDI_DelSTARspCb wdiDelSTARspCb,
2473 void* pUserData
2474)
2475{
2476 WDI_EventInfoType wdiEventData;
2477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2478
2479 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 ------------------------------------------------------------------------*/
2482 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2483 {
2484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2485 "WDI API call before module is initialized - Fail request");
2486
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002488 }
2489
2490 /*------------------------------------------------------------------------
2491 Fill in Event data and post to the Main FSM
2492 ------------------------------------------------------------------------*/
2493 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 wdiEventData.pEventData = pwdiDelSTAParams;
2495 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2496 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002497 wdiEventData.pUserData = pUserData;
2498
2499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2500
2501}/*WDI_DelSTAReq*/
2502
Jeff Johnsone7245742012-09-05 17:12:55 -07002503/*========================================================================
2504
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507==========================================================================*/
2508
2509/**
2510 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2511 install a BSS encryption key on the HW. Upon the call of this
2512 API the WLAN DAL will pack and send a Set BSS Key request
2513 message to the lower RIVA sub-system if DAL is in state
2514 STARTED.
2515
2516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002518
2519 WDI_PostAssocReq must have been called.
2520
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002523
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 wdiSetBSSKeyRspCb: callback for passing back the
2525 response of the set BSS Key operation received from the
2526 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002527
Jeff Johnson295189b2012-06-20 16:38:30 -07002528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 callback
2530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 @see WDI_PostAssocReq
2532 @return Result of the function call
2533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002535WDI_SetBSSKeyReq
2536(
2537 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2538 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2539 void* pUserData
2540)
2541{
2542 WDI_EventInfoType wdiEventData;
2543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2544
2545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 ------------------------------------------------------------------------*/
2548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2549 {
2550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2551 "WDI API call before module is initialized - Fail request");
2552
Jeff Johnsone7245742012-09-05 17:12:55 -07002553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 }
2555
2556 /*------------------------------------------------------------------------
2557 Fill in Event data and post to the Main FSM
2558 ------------------------------------------------------------------------*/
2559 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002560 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2561 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2562 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 wdiEventData.pUserData = pUserData;
2564
2565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2566
2567}/*WDI_SetBSSKeyReq*/
2568
2569/**
2570 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2571 uninstall a BSS key from HW. Upon the call of this API the
2572 WLAN DAL will pack and send a HAL Remove BSS Key request
2573 message to the lower RIVA sub-system if DAL is in state
2574 STARTED.
2575
2576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002578
2579 WDI_SetBSSKeyReq must have been called.
2580
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002583
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiRemoveBSSKeyRspCb: callback for passing back the
2585 response of the remove BSS key operation received from
2586 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002587
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 callback
2590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 @see WDI_SetBSSKeyReq
2592 @return Result of the function call
2593*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002594WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002595WDI_RemoveBSSKeyReq
2596(
2597 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2598 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2599 void* pUserData
2600)
2601{
2602 WDI_EventInfoType wdiEventData;
2603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2604
2605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 ------------------------------------------------------------------------*/
2608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2609 {
2610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2611 "WDI API call before module is initialized - Fail request");
2612
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 }
2615
2616 /*------------------------------------------------------------------------
2617 Fill in Event data and post to the Main FSM
2618 ------------------------------------------------------------------------*/
2619 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2621 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2622 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 wdiEventData.pUserData = pUserData;
2624
2625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2626
2627}/*WDI_RemoveBSSKeyReq*/
2628
2629
2630/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002632 ready to install a STA(ast) encryption key in HW. Upon
2633 the call of this API the WLAN DAL will pack and send a
2634 HAL Set STA Key request message to the lower RIVA
2635 sub-system if DAL is in state STARTED.
2636
2637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002639
2640 WDI_PostAssocReq must have been called.
2641
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002644
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 wdiSetSTAKeyRspCb: callback for passing back the
2646 response of the set STA key operation received from the
2647 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002648
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 callback
2651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 @see WDI_PostAssocReq
2653 @return Result of the function call
2654*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002655WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002656WDI_SetSTAKeyReq
2657(
2658 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2659 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2660 void* pUserData
2661)
2662{
2663 WDI_EventInfoType wdiEventData;
2664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2665
2666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 ------------------------------------------------------------------------*/
2669 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2670 {
2671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2672 "WDI API call before module is initialized - Fail request");
2673
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 }
2676
2677 /*------------------------------------------------------------------------
2678 Fill in Event data and post to the Main FSM
2679 ------------------------------------------------------------------------*/
2680 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002681 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2682 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2683 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 wdiEventData.pUserData = pUserData;
2685
2686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2687
2688}/*WDI_SetSTAKeyReq*/
2689
2690
2691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002693 wants to uninstall a previously set STA key in HW. Upon
2694 the call of this API the WLAN DAL will pack and send a
2695 HAL Remove STA Key request message to the lower RIVA
2696 sub-system if DAL is in state STARTED.
2697
2698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002700
2701 WDI_SetSTAKeyReq must have been called.
2702
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002704 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiRemoveSTAKeyRspCb: callback for passing back the
2707 response of the remove STA key operation received from
2708 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 callback
2712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 @see WDI_SetSTAKeyReq
2714 @return Result of the function call
2715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002717WDI_RemoveSTAKeyReq
2718(
2719 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2720 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2721 void* pUserData
2722)
2723{
2724 WDI_EventInfoType wdiEventData;
2725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2726
2727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 ------------------------------------------------------------------------*/
2730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2731 {
2732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2733 "WDI API call before module is initialized - Fail request");
2734
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 }
2737
2738 /*------------------------------------------------------------------------
2739 Fill in Event data and post to the Main FSM
2740 ------------------------------------------------------------------------*/
2741 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2743 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2744 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 wdiEventData.pUserData = pUserData;
2746
2747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2748
2749}/*WDI_RemoveSTAKeyReq*/
2750
2751
2752/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 wants to install a STA Bcast encryption key on the HW.
2755 Upon the call of this API the WLAN DAL will pack and
2756 send a HAL Start request message to the lower RIVA
2757 sub-system if DAL is in state STARTED.
2758
2759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002761
2762 WDI_PostAssocReq must have been called.
2763
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 wdiSetSTABcastKeyRspCb: callback for passing back the
2768 response of the set BSS Key operation received from the
2769 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002770
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 callback
2773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 @see WDI_PostAssocReq
2775 @return Result of the function call
2776*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002777WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002778WDI_SetSTABcastKeyReq
2779(
2780 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2781 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2782 void* pUserData
2783)
2784
2785{
2786 WDI_EventInfoType wdiEventData;
2787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2788
2789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002791 ------------------------------------------------------------------------*/
2792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2793 {
2794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2795 "WDI API call before module is initialized - Fail request");
2796
Jeff Johnsone7245742012-09-05 17:12:55 -07002797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 }
2799
2800 /*------------------------------------------------------------------------
2801 Fill in Event data and post to the Main FSM
2802 ------------------------------------------------------------------------*/
2803 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002804 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2805 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2806 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002807 wdiEventData.pUserData = pUserData;
2808
2809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2810
2811}/*WDI_SetSTABcastKeyReq*/
2812
2813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 MAC wants to uninstall a STA Bcast key from HW. Upon the
2816 call of this API the WLAN DAL will pack and send a HAL
2817 Remove STA Bcast Key request message to the lower RIVA
2818 sub-system if DAL is in state STARTED.
2819
2820 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002822
2823 WDI_SetSTABcastKeyReq must have been called.
2824
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 parameters as specified by the Device
2827 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002828
Jeff Johnson295189b2012-06-20 16:38:30 -07002829 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2830 response of the remove STA Bcast key operation received
2831 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002832
Jeff Johnson295189b2012-06-20 16:38:30 -07002833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 callback
2835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 @see WDI_SetSTABcastKeyReq
2837 @return Result of the function call
2838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002840WDI_RemoveSTABcastKeyReq
2841(
2842 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2843 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2844 void* pUserData
2845)
2846{
2847 WDI_EventInfoType wdiEventData;
2848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2849
2850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 ------------------------------------------------------------------------*/
2853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2854 {
2855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2856 "WDI API call before module is initialized - Fail request");
2857
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 }
2860
2861 /*------------------------------------------------------------------------
2862 Fill in Event data and post to the Main FSM
2863 ------------------------------------------------------------------------*/
2864 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2866 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2867 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 wdiEventData.pUserData = pUserData;
2869
2870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2871
2872}/*WDI_RemoveSTABcastKeyReq*/
2873
2874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 MAC wants to set Max Tx Power to HW. Upon the
2877 call of this API the WLAN DAL will pack and send a HAL
2878 Remove STA Bcast Key request message to the lower RIVA
2879 sub-system if DAL is in state STARTED.
2880
2881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002883
2884 WDI_SetSTABcastKeyReq must have been called.
2885
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 parameters as specified by the Device
2888 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002889
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2891 response of the remove STA Bcast key operation received
2892 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002893
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002895 callback
2896
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 @see WDI_SetMaxTxPowerReq
2898 @return Result of the function call
2899*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002900WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002901WDI_SetMaxTxPowerReq
2902(
2903 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2904 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2905 void* pUserData
2906)
2907{
2908 WDI_EventInfoType wdiEventData;
2909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2910
2911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 ------------------------------------------------------------------------*/
2914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2915 {
2916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2917 "WDI API call before module is initialized - Fail request");
2918
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 }
2921
2922 /*------------------------------------------------------------------------
2923 Fill in Event data and post to the Main FSM
2924 ------------------------------------------------------------------------*/
2925 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002926 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2927 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2928 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002929 wdiEventData.pUserData = pUserData;
2930
2931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2932}
2933
schangd82195a2013-03-13 18:41:24 -07002934/**
2935 @brief WDI_SetTxPowerReq will be called when the upper
2936 MAC wants to set Tx Power to HW.
2937 In state BUSY this request will be queued. Request won't
2938 be allowed in any other state.
2939
2940
2941 @param pwdiSetTxPowerParams: set TS Power parameters
2942 BSSID and target TX Power with dbm included
2943
2944 wdiReqStatusCb: callback for passing back the response
2945
2946 pUserData: user data will be passed back with the
2947 callback
2948
2949 @return Result of the function call
2950*/
2951WDI_Status
2952WDI_SetTxPowerReq
2953(
2954 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2955 WDA_SetTxPowerRspCb wdiReqStatusCb,
2956 void* pUserData
2957)
2958{
2959 WDI_EventInfoType wdiEventData;
2960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2961
2962 /*------------------------------------------------------------------------
2963 Sanity Check
2964 ------------------------------------------------------------------------*/
2965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2966 {
2967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2968 "WDI API call before module is initialized - Fail request");
2969
2970 return WDI_STATUS_E_NOT_ALLOWED;
2971 }
2972
2973 /*------------------------------------------------------------------------
2974 Fill in Event data and post to the Main FSM
2975 ------------------------------------------------------------------------*/
2976 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2977 wdiEventData.pEventData = pwdiSetTxPowerParams;
2978 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2979 wdiEventData.pCBfnc = wdiReqStatusCb;
2980 wdiEventData.pUserData = pUserData;
2981
2982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2983}
2984
Jeff Johnson295189b2012-06-20 16:38:30 -07002985#ifdef FEATURE_WLAN_CCX
2986WDI_Status
2987WDI_TSMStatsReq
2988(
2989 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2990 WDI_TsmRspCb wdiReqStatusCb,
2991 void* pUserData
2992)
2993{
2994 WDI_EventInfoType wdiEventData;
2995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 /*------------------------------------------------------------------------
2997 Sanity Check
2998 ------------------------------------------------------------------------*/
2999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3000 {
3001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3002 "WDI API call before module is initialized - Fail request");
3003
3004 return WDI_STATUS_E_NOT_ALLOWED;
3005 }
3006
3007 /*------------------------------------------------------------------------
3008 Fill in Event data and post to the Main FSM
3009 ------------------------------------------------------------------------*/
3010 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3011 wdiEventData.pEventData = pwdiTsmReqParams;
3012 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3013 wdiEventData.pCBfnc = wdiReqStatusCb;
3014 wdiEventData.pUserData = pUserData;
3015
3016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3017
3018}
3019#endif
3020
3021/*========================================================================
3022
3023 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025==========================================================================*/
3026
3027/**
3028 @brief WDI_AddTSReq will be called when the upper MAC to inform
3029 the device of a successful add TSpec negotiation. HW
3030 needs to receive the TSpec Info from the UMAC in order
3031 to configure properly the QoS data traffic. Upon the
3032 call of this API the WLAN DAL will pack and send a HAL
3033 Add TS request message to the lower RIVA sub-system if
3034 DAL is in state STARTED.
3035
3036 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003037 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003038
3039 WDI_PostAssocReq must have been called.
3040
3041 @param wdiAddTsReqParams: the add TS parameters as specified by
3042 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003043
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 wdiAddTsRspCb: callback for passing back the response of
3045 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003046
Jeff Johnson295189b2012-06-20 16:38:30 -07003047 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003048 callback
3049
Jeff Johnson295189b2012-06-20 16:38:30 -07003050 @see WDI_PostAssocReq
3051 @return Result of the function call
3052*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003053WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003054WDI_AddTSReq
3055(
3056 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3057 WDI_AddTsRspCb wdiAddTsRspCb,
3058 void* pUserData
3059)
3060{
3061 WDI_EventInfoType wdiEventData;
3062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3063
3064 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003066 ------------------------------------------------------------------------*/
3067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3068 {
3069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3070 "WDI API call before module is initialized - Fail request");
3071
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 }
3074
3075 /*------------------------------------------------------------------------
3076 Fill in Event data and post to the Main FSM
3077 ------------------------------------------------------------------------*/
3078 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 wdiEventData.pEventData = pwdiAddTsReqParams;
3080 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3081 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 wdiEventData.pUserData = pUserData;
3083
3084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3085
3086}/*WDI_AddTSReq*/
3087
3088
3089
3090/**
3091 @brief WDI_DelTSReq will be called when the upper MAC has ended
3092 admission on a specific AC. This is to inform HW that
3093 QoS traffic parameters must be rest. Upon the call of
3094 this API the WLAN DAL will pack and send a HAL Del TS
3095 request message to the lower RIVA sub-system if DAL is
3096 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_AddTSReq must have been called.
3102
3103 @param wdiDelTsReqParams: the del 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 wdiDelTsRspCb: callback for passing back the response of
3107 the del 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_AddTSReq
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_DelTSReq
3117(
3118 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3119 WDI_DelTsRspCb wdiDelTsRspCb,
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_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 wdiEventData.pEventData = pwdiDelTsReqParams;
3142 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3143 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 wdiEventData.pUserData = pUserData;
3145
3146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3147
3148}/*WDI_DelTSReq*/
3149
3150
3151
3152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003153 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 wishes to update the EDCA parameters used by HW for QoS
3155 data traffic. Upon the call of this API the WLAN DAL
3156 will pack and send a HAL Update EDCA Params request
3157 message to the lower RIVA sub-system if DAL is in state
3158 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_PostAssocReq must have been called.
3164
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003166 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003167
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 wdiUpdateEDCAParamsRspCb: callback for passing back the
3169 response of the start 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_PostAssocReq
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_UpdateEDCAParams
3179(
3180 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3181 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
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_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3204 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3205 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 wdiEventData.pUserData = pUserData;
3207
3208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3209
3210}/*WDI_UpdateEDCAParams*/
3211
3212
3213/**
3214 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3215 successfully a BA session and needs to notify the HW for
3216 the appropriate settings to take place. Upon the call of
3217 this API the WLAN DAL will pack and send a HAL Add BA
3218 request message to the lower RIVA sub-system if DAL is
3219 in state STARTED.
3220
3221 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003222 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003223
3224 WDI_PostAssocReq must have been called.
3225
3226 @param wdiAddBAReqParams: the add BA parameters as specified by
3227 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003228
Jeff Johnson295189b2012-06-20 16:38:30 -07003229 wdiAddBARspCb: callback for passing back the response of
3230 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003231
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 callback
3234
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 @see WDI_PostAssocReq
3236 @return Result of the function call
3237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003239WDI_AddBASessionReq
3240(
3241 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3242 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3243 void* pUserData
3244)
3245{
3246 WDI_EventInfoType wdiEventData;
3247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3248
3249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 ------------------------------------------------------------------------*/
3252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3253 {
3254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3255 "WDI API call before module is initialized - Fail request");
3256
Jeff Johnsone7245742012-09-05 17:12:55 -07003257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003258 }
3259
3260 /*------------------------------------------------------------------------
3261 Fill in Event data and post to the Main FSM
3262 ------------------------------------------------------------------------*/
3263 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3265 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3266 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 wdiEventData.pUserData = pUserData;
3268
3269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3270
3271}/*WDI_AddBASessionReq*/
3272
3273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003274 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003275 inform HW that it has deleted a previously created BA
3276 session. Upon the call of this API the WLAN DAL will
3277 pack and send a HAL Del BA request message to the lower
3278 RIVA sub-system if DAL is in state STARTED.
3279
3280 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003282
3283 WDI_AddBAReq must have been called.
3284
3285 @param wdiDelBAReqParams: the del BA parameters as specified by
3286 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003287
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiDelBARspCb: callback for passing back the response of
3289 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003292 callback
3293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 @see WDI_AddBAReq
3295 @return Result of the function call
3296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003298WDI_DelBAReq
3299(
3300 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3301 WDI_DelBARspCb wdiDelBARspCb,
3302 void* pUserData
3303)
3304{
3305 WDI_EventInfoType wdiEventData;
3306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3307
3308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 ------------------------------------------------------------------------*/
3311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3312 {
3313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3314 "WDI API call before module is initialized - Fail request");
3315
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003317 }
3318
3319 /*------------------------------------------------------------------------
3320 Fill in Event data and post to the Main FSM
3321 ------------------------------------------------------------------------*/
3322 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003323 wdiEventData.pEventData = pwdiDelBAReqParams;
3324 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3325 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 wdiEventData.pUserData = pUserData;
3327
3328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3329
3330}/*WDI_DelBAReq*/
3331
Jeff Johnsone7245742012-09-05 17:12:55 -07003332/*========================================================================
3333
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003335
Jeff Johnson295189b2012-06-20 16:38:30 -07003336==========================================================================*/
3337
3338/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 wants to set the power save related configurations of
3341 the WLAN Device. Upon the call of this API the WLAN DAL
3342 will pack and send a HAL Update CFG request message to
3343 the lower RIVA sub-system if DAL is in state STARTED.
3344
3345 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003346 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003347
3348 WDI_Start must have been called.
3349
Jeff Johnsone7245742012-09-05 17:12:55 -07003350 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003352
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 wdiSetPwrSaveCfgCb: callback for passing back the
3354 response of the set power save cfg operation received
3355 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003356
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003358 callback
3359
Jeff Johnson295189b2012-06-20 16:38:30 -07003360 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 @return Result of the function call
3362*/
3363WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003364WDI_SetPwrSaveCfgReq
3365(
3366 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3367 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3368 void* pUserData
3369)
3370{
3371 WDI_EventInfoType wdiEventData;
3372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3373
3374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 ------------------------------------------------------------------------*/
3377 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3378 {
3379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3380 "WDI API call before module is initialized - Fail request");
3381
Jeff Johnsone7245742012-09-05 17:12:55 -07003382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 }
3384
3385 /*------------------------------------------------------------------------
3386 Fill in Event data and post to the Main FSM
3387 ------------------------------------------------------------------------*/
3388 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003389 wdiEventData.pEventData = pwdiPowerSaveCfg;
3390 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3391 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 wdiEventData.pUserData = pUserData;
3393
3394 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3395
3396}/*WDI_SetPwrSaveCfgReq*/
3397
3398/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 request the device to get into IMPS power state. Upon
3401 the call of this API the WLAN DAL will send a HAL Enter
3402 IMPS request message to the lower RIVA sub-system if DAL
3403 is in state STARTED.
3404
3405 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003407
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
3409 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 response of the Enter IMPS operation received from the
3411 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 callback
3415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 @see WDI_Start
3417 @return Result of the function call
3418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003420WDI_EnterImpsReq
3421(
3422 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3423 void* pUserData
3424)
3425{
3426 WDI_EventInfoType wdiEventData;
3427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3428
3429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 ------------------------------------------------------------------------*/
3432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3433 {
3434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3435 "WDI API call before module is initialized - Fail request");
3436
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 }
3439
3440 /*------------------------------------------------------------------------
3441 Fill in Event data and post to the Main FSM
3442 ------------------------------------------------------------------------*/
3443 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003444 wdiEventData.pEventData = NULL;
3445 wdiEventData.uEventDataSize = 0;
3446 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003447 wdiEventData.pUserData = pUserData;
3448
3449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3450
3451}/*WDI_EnterImpsReq*/
3452
3453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 request the device to get out of IMPS power state. Upon
3456 the call of this API the WLAN DAL will send a HAL Exit
3457 IMPS request message to the lower RIVA sub-system if DAL
3458 is in state STARTED.
3459
3460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003462
Jeff Johnson295189b2012-06-20 16:38:30 -07003463
Jeff Johnsone7245742012-09-05 17:12:55 -07003464
3465 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 callback
3470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 @see WDI_Start
3472 @return Result of the function call
3473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003475WDI_ExitImpsReq
3476(
3477 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3478 void* pUserData
3479)
3480{
3481 WDI_EventInfoType wdiEventData;
3482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3483
3484 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003485 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003486 ------------------------------------------------------------------------*/
3487 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3488 {
3489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3490 "WDI API call before module is initialized - Fail request");
3491
Jeff Johnsone7245742012-09-05 17:12:55 -07003492 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 }
3494
3495 /*------------------------------------------------------------------------
3496 Fill in Event data and post to the Main FSM
3497 ------------------------------------------------------------------------*/
3498 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 wdiEventData.pEventData = NULL;
3500 wdiEventData.uEventDataSize = 0;
3501 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003502 wdiEventData.pUserData = pUserData;
3503
3504 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3505
3506}/*WDI_ExitImpsReq*/
3507
3508/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003509 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 request the device to get into BMPS power state. Upon
3511 the call of this API the WLAN DAL will pack and send a
3512 HAL Enter BMPS request message to the lower RIVA
3513 sub-system if DAL is in state STARTED.
3514
3515 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003516 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003517
3518 WDI_PostAssocReq must have been called.
3519
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003521 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003522
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 wdiEnterBmpsRspCb: callback for passing back the
3524 response of the Enter BMPS operation received from the
3525 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003526
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003528 callback
3529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 @see WDI_PostAssocReq
3531 @return Result of the function call
3532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003534WDI_EnterBmpsReq
3535(
3536 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3537 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3538 void* pUserData
3539)
3540{
3541 WDI_EventInfoType wdiEventData;
3542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3543
3544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 ------------------------------------------------------------------------*/
3547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3548 {
3549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3550 "WDI API call before module is initialized - Fail request");
3551
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 }
3554
3555 /*------------------------------------------------------------------------
3556 Fill in Event data and post to the Main FSM
3557 ------------------------------------------------------------------------*/
3558 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3560 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3561 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 wdiEventData.pUserData = pUserData;
3563
3564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3565
3566}/*WDI_EnterBmpsReq*/
3567
3568/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 request the device to get out of BMPS power state. Upon
3571 the call of this API the WLAN DAL will pack and send a
3572 HAL Exit BMPS request message to the lower RIVA
3573 sub-system if DAL is in state STARTED.
3574
3575 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003577
3578 WDI_PostAssocReq must have been called.
3579
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003582
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 wdiExitBmpsRspCb: callback for passing back the response
3584 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 callback
3588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 @see WDI_PostAssocReq
3590 @return Result of the function call
3591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003593WDI_ExitBmpsReq
3594(
3595 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3596 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3597 void* pUserData
3598)
3599{
3600 WDI_EventInfoType wdiEventData;
3601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3602
3603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 ------------------------------------------------------------------------*/
3606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3607 {
3608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3609 "WDI API call before module is initialized - Fail request");
3610
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 }
3613
3614 /*------------------------------------------------------------------------
3615 Fill in Event data and post to the Main FSM
3616 ------------------------------------------------------------------------*/
3617 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3619 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3620 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 wdiEventData.pUserData = pUserData;
3622
3623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3624
3625}/*WDI_ExitBmpsReq*/
3626
3627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 request the device to get into UAPSD power state. Upon
3630 the call of this API the WLAN DAL will pack and send a
3631 HAL Enter UAPSD request message to the lower RIVA
3632 sub-system if DAL is in state STARTED.
3633
3634 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003636
3637 WDI_PostAssocReq must have been called.
3638 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
3640 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 wdiEnterUapsdRspCb: callback for passing back the
3644 response of the Enter UAPSD operation received from the
3645 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 callback
3649
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3651 @return Result of the function call
3652*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003653WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003654WDI_EnterUapsdReq
3655(
3656 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3657 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3658 void* pUserData
3659)
3660{
3661 WDI_EventInfoType wdiEventData;
3662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3663
3664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 ------------------------------------------------------------------------*/
3667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3668 {
3669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3670 "WDI API call before module is initialized - Fail request");
3671
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 }
3674
3675 /*------------------------------------------------------------------------
3676 Fill in Event data and post to the Main FSM
3677 ------------------------------------------------------------------------*/
3678 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3680 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3681 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 wdiEventData.pUserData = pUserData;
3683
3684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3685
3686}/*WDI_EnterUapsdReq*/
3687
3688/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 request the device to get out of UAPSD power state. Upon
3691 the call of this API the WLAN DAL will send a HAL Exit
3692 UAPSD request message to the lower RIVA sub-system if
3693 DAL is in state STARTED.
3694
3695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003697
3698 WDI_PostAssocReq must have been called.
3699
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 response of the Exit UAPSD operation received from the
3702 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003703
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 callback
3706
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 @see WDI_PostAssocReq
3708 @return Result of the function call
3709*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003711WDI_ExitUapsdReq
3712(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003713 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3715 void* pUserData
3716)
3717{
3718 WDI_EventInfoType wdiEventData;
3719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3720
3721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 ------------------------------------------------------------------------*/
3724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3725 {
3726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3727 "WDI API call before module is initialized - Fail request");
3728
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 }
3731
3732 /*------------------------------------------------------------------------
3733 Fill in Event data and post to the Main FSM
3734 ------------------------------------------------------------------------*/
3735 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003736 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3737 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 wdiEventData.pUserData = pUserData;
3740
3741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3742
3743}/*WDI_ExitUapsdReq*/
3744
3745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 MAC wants to set the UAPSD related configurations
3748 of an associated STA (while acting as an AP) to the WLAN
3749 Device. Upon the call of this API the WLAN DAL will pack
3750 and send a HAL Update UAPSD params request message to
3751 the lower RIVA sub-system if DAL is in state STARTED.
3752
3753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003755
3756 WDI_ConfigBSSReq must have been called.
3757
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003760
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 wdiUpdateUapsdParamsCb: callback for passing back the
3762 response of the update UAPSD params operation received
3763 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 callback
3767
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 @see WDI_ConfigBSSReq
3769 @return Result of the function call
3770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003772WDI_UpdateUapsdParamsReq
3773(
3774 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3775 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3776 void* pUserData
3777)
3778{
3779 WDI_EventInfoType wdiEventData;
3780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3781
3782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 ------------------------------------------------------------------------*/
3785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3786 {
3787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3788 "WDI API call before module is initialized - Fail request");
3789
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 }
3792
3793 /*------------------------------------------------------------------------
3794 Fill in Event data and post to the Main FSM
3795 ------------------------------------------------------------------------*/
3796 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003798 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 wdiEventData.pUserData = pUserData;
3801
3802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3803
3804}/*WDI_UpdateUapsdParamsReq*/
3805
3806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 MAC wants to set the UAPSD related configurations before
3809 requesting for enter UAPSD power state to the WLAN
3810 Device. Upon the call of this API the WLAN DAL will pack
3811 and send a HAL Set UAPSD params request message to
3812 the lower RIVA sub-system if DAL is in state STARTED.
3813
3814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003816
3817 WDI_PostAssocReq must have been called.
3818
3819 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3820 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003821
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiSetUapsdAcParamsCb: callback for passing back the
3823 response of the set UAPSD params operation received from
3824 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_PostAssocReq
3830 @return Result of the function call
3831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_SetUapsdAcParamsReq
3834(
3835 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3836 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 wdiEventData.pEventData = pwdiUapsdInfo;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3860 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_SetUapsdAcParamsReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 MAC wants to set/reset the RXP filters for received pkts
3870 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3871 and send a HAL configure RXP filter request message to
3872 the lower RIVA sub-system.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
Jeff Johnsone7245742012-09-05 17:12:55 -07003877
3878 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003879 filter as specified by the Device
3880 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiConfigureRxpFilterCb: callback for passing back the
3883 response of the configure RXP filter operation received
3884 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @return Result of the function call
3890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003892WDI_ConfigureRxpFilterReq
3893(
3894 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3895 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3896 void* pUserData
3897)
3898{
3899 WDI_EventInfoType wdiEventData;
3900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3901
3902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 ------------------------------------------------------------------------*/
3905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3906 {
3907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3908 "WDI API call before module is initialized - Fail request");
3909
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 }
3912
3913 /*------------------------------------------------------------------------
3914 Fill in Event data and post to the Main FSM
3915 ------------------------------------------------------------------------*/
3916 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3918 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3919 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 wdiEventData.pUserData = pUserData;
3921
3922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3923}/*WDI_ConfigureRxpFilterReq*/
3924
3925/**
3926 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3927 wants to set the beacon filters while in power save.
3928 Upon the call of this API the WLAN DAL will pack and
3929 send a Beacon filter request message to the
3930 lower RIVA sub-system.
3931
3932 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003934
Jeff Johnsone7245742012-09-05 17:12:55 -07003935
3936 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 filter as specified by the Device
3938 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003939
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 wdiBeaconFilterCb: callback for passing back the
3941 response of the set beacon filter operation received
3942 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003943
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003945 callback
3946
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 @return Result of the function call
3948*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003950WDI_SetBeaconFilterReq
3951(
3952 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3953 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3954 void* pUserData
3955)
3956{
3957 WDI_EventInfoType wdiEventData;
3958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3959
3960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 ------------------------------------------------------------------------*/
3963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3964 {
3965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3966 "WDI API call before module is initialized - Fail request");
3967
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 }
3970
3971 /*------------------------------------------------------------------------
3972 Fill in Event data and post to the Main FSM
3973 ------------------------------------------------------------------------*/
3974 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003976 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 wdiEventData.pUserData = pUserData;
3979
3980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3981}/*WDI_SetBeaconFilterReq*/
3982
3983/**
3984 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3985 wants to remove the beacon filter for particular IE
3986 while in power save. Upon the call of this API the WLAN
3987 DAL will pack and send a remove Beacon filter request
3988 message to the lower RIVA sub-system.
3989
3990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993
3994 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 filter as specified by the Device
3996 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 wdiBeaconFilterCb: callback for passing back the
3999 response of the remove beacon filter operation received
4000 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004003 callback
4004
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 @return Result of the function call
4006*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004008WDI_RemBeaconFilterReq
4009(
4010 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4011 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4012 void* pUserData
4013)
4014{
4015 WDI_EventInfoType wdiEventData;
4016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4017
4018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 ------------------------------------------------------------------------*/
4021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4022 {
4023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4024 "WDI API call before module is initialized - Fail request");
4025
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 }
4028
4029 /*------------------------------------------------------------------------
4030 Fill in Event data and post to the Main FSM
4031 ------------------------------------------------------------------------*/
4032 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004034 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 wdiEventData.pUserData = pUserData;
4037
4038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4039}/*WDI_RemBeaconFilterReq*/
4040
4041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 MAC wants to set the RSSI thresholds related
4044 configurations while in power save. Upon the call of
4045 this API the WLAN DAL will pack and send a HAL Set RSSI
4046 thresholds request message to the lower RIVA
4047 sub-system if DAL is in state STARTED.
4048
4049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004051
4052 WDI_PostAssocReq must have been called.
4053
4054 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4055 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiSetUapsdAcParamsCb: callback for passing back the
4058 response of the set UAPSD params operation received from
4059 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 callback
4063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 @see WDI_PostAssocReq
4065 @return Result of the function call
4066*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004068WDI_SetRSSIThresholdsReq
4069(
4070 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4071 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4072 void* pUserData
4073)
4074{
4075 WDI_EventInfoType wdiEventData;
4076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4077
4078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 ------------------------------------------------------------------------*/
4081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4082 {
4083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4084 "WDI API call before module is initialized - Fail request");
4085
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 }
4088
4089 /*------------------------------------------------------------------------
4090 Fill in Event data and post to the Main FSM
4091 ------------------------------------------------------------------------*/
4092 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004094 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 wdiEventData.pUserData = pUserData;
4097
4098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4099}/* WDI_SetRSSIThresholdsReq*/
4100
4101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wants to set the filter to minimize unnecessary host
4104 wakeup due to broadcast traffic while in power save.
4105 Upon the call of this API the WLAN DAL will pack and
4106 send a HAL host offload request message to the
4107 lower RIVA sub-system if DAL is in state STARTED.
4108
4109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004111
4112 WDI_PostAssocReq must have been called.
4113
Jeff Johnsone7245742012-09-05 17:12:55 -07004114 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004115 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004116
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 wdiHostOffloadCb: callback for passing back the response
4118 of the host offload operation received from the
4119 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004120
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004122 callback
4123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 @see WDI_PostAssocReq
4125 @return Result of the function call
4126*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004128WDI_HostOffloadReq
4129(
4130 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4131 WDI_HostOffloadCb wdiHostOffloadCb,
4132 void* pUserData
4133)
4134{
4135 WDI_EventInfoType wdiEventData;
4136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4137
4138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 ------------------------------------------------------------------------*/
4141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4142 {
4143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4144 "WDI API call before module is initialized - Fail request");
4145
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 }
4148
4149 /*------------------------------------------------------------------------
4150 Fill in Event data and post to the Main FSM
4151 ------------------------------------------------------------------------*/
4152 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004154 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 wdiEventData.pUserData = pUserData;
4157
4158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4159}/*WDI_HostOffloadReq*/
4160
4161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 @brief WDI_KeepAliveReq will be called when the upper MAC
4163 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 and minimize unnecessary host wakeups due to while in power save.
4165 Upon the call of this API the WLAN DAL will pack and
4166 send a HAL Keep Alive request message to the
4167 lower RIVA sub-system if DAL is in state STARTED.
4168
4169 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004171
4172 WDI_PostAssocReq must have been called.
4173
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004176
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 wdiKeepAliveCb: callback for passing back the response
4178 of the Keep Alive operation received from the
4179 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 callback
4183
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 @see WDI_PostAssocReq
4185 @return Result of the function call
4186*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004187WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004188WDI_KeepAliveReq
4189(
4190 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4191 WDI_KeepAliveCb wdiKeepAliveCb,
4192 void* pUserData
4193)
4194{
4195 WDI_EventInfoType wdiEventData;
4196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4197
4198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 ------------------------------------------------------------------------*/
4201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4202 {
4203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4204 "WDI_KeepAliveReq: WDI API call before module "
4205 "is initialized - Fail request");
4206
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 }
4209
4210 /*------------------------------------------------------------------------
4211 Fill in Event data and post to the Main FSM
4212 ------------------------------------------------------------------------*/
4213 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pEventData = pwdiKeepAliveParams;
4215 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4216 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 wdiEventData.pUserData = pUserData;
4218
4219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4220}/*WDI_KeepAliveReq*/
4221
4222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wants to set the Wowl Bcast ptrn to minimize unnecessary
4225 host wakeup due to broadcast traffic while in power
4226 save. Upon the call of this API the WLAN DAL will pack
4227 and send a HAL Wowl Bcast ptrn request message to the
4228 lower RIVA sub-system if DAL is in state STARTED.
4229
4230 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004232
4233 WDI_PostAssocReq must have been called.
4234
Jeff Johnsone7245742012-09-05 17:12:55 -07004235 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 wdiWowlAddBcPtrnCb: callback for passing back the
4239 response of the add Wowl bcast ptrn operation received
4240 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004241
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 callback
4244
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 @see WDI_PostAssocReq
4246 @return Result of the function call
4247*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004249WDI_WowlAddBcPtrnReq
4250(
4251 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4252 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4253 void* pUserData
4254)
4255{
4256 WDI_EventInfoType wdiEventData;
4257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4258
4259 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004260 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 ------------------------------------------------------------------------*/
4262 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4263 {
4264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4265 "WDI API call before module is initialized - Fail request");
4266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 }
4269
4270 /*------------------------------------------------------------------------
4271 Fill in Event data and post to the Main FSM
4272 ------------------------------------------------------------------------*/
4273 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004275 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 wdiEventData.pUserData = pUserData;
4278
4279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4280}/*WDI_WowlAddBcPtrnReq*/
4281
4282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wants to clear the Wowl Bcast ptrn. Upon the call of
4285 this API the WLAN DAL will pack and send a HAL delete
4286 Wowl Bcast ptrn request message to the lower RIVA
4287 sub-system if DAL is in state STARTED.
4288
4289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004291
4292 WDI_WowlAddBcPtrnReq must have been called.
4293
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 wdiWowlDelBcPtrnCb: callback for passing back the
4298 response of the del Wowl bcast ptrn operation received
4299 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004302 callback
4303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 @see WDI_WowlAddBcPtrnReq
4305 @return Result of the function call
4306*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004307WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004308WDI_WowlDelBcPtrnReq
4309(
4310 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4311 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4312 void* pUserData
4313)
4314{
4315 WDI_EventInfoType wdiEventData;
4316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4317
4318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 ------------------------------------------------------------------------*/
4321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4322 {
4323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4324 "WDI API call before module is initialized - Fail request");
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 }
4328
4329 /*------------------------------------------------------------------------
4330 Fill in Event data and post to the Main FSM
4331 ------------------------------------------------------------------------*/
4332 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004334 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 wdiEventData.pUserData = pUserData;
4337
4338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4339}/*WDI_WowlDelBcPtrnReq*/
4340
4341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 wants to enter the Wowl state to minimize unnecessary
4344 host wakeup while in power save. Upon the call of this
4345 API the WLAN DAL will pack and send a HAL Wowl enter
4346 request message to the lower RIVA sub-system if DAL is
4347 in state STARTED.
4348
4349 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004351
4352 WDI_PostAssocReq must have been called.
4353
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004356
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 wdiWowlEnterReqCb: callback for passing back the
4358 response of the enter Wowl operation received from the
4359 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004360
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004362 callback
4363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 @see WDI_PostAssocReq
4365 @return Result of the function call
4366*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004367WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004368WDI_WowlEnterReq
4369(
4370 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4371 WDI_WowlEnterReqCb wdiWowlEnterCb,
4372 void* pUserData
4373)
4374{
4375 WDI_EventInfoType wdiEventData;
4376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4377
4378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 ------------------------------------------------------------------------*/
4381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4382 {
4383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4384 "WDI API call before module is initialized - Fail request");
4385
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 }
4388
4389 /*------------------------------------------------------------------------
4390 Fill in Event data and post to the Main FSM
4391 ------------------------------------------------------------------------*/
4392 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004394 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 wdiEventData.pUserData = pUserData;
4397
4398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4399}/*WDI_WowlEnterReq*/
4400
4401/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004402 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 wants to exit the Wowl state. Upon the call of this API
4404 the WLAN DAL will pack and send a HAL Wowl exit request
4405 message to the lower RIVA sub-system if DAL is in state
4406 STARTED.
4407
4408 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004410
4411 WDI_WowlEnterReq must have been called.
4412
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 wdiWowlExitReqCb: callback for passing back the response
4417 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 callback
4421
Jeff Johnson295189b2012-06-20 16:38:30 -07004422 @see WDI_WowlEnterReq
4423 @return Result of the function call
4424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004426WDI_WowlExitReq
4427(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004428 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004429 WDI_WowlExitReqCb wdiWowlExitCb,
4430 void* pUserData
4431)
4432{
4433 WDI_EventInfoType wdiEventData;
4434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4435
4436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 ------------------------------------------------------------------------*/
4439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4440 {
4441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4442 "WDI API call before module is initialized - Fail request");
4443
Jeff Johnsone7245742012-09-05 17:12:55 -07004444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 }
4446
4447 /*------------------------------------------------------------------------
4448 Fill in Event data and post to the Main FSM
4449 ------------------------------------------------------------------------*/
4450 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004451 wdiEventData.pEventData = pwdiWowlExitParams;
4452 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004453 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 wdiEventData.pUserData = pUserData;
4455
4456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4457}/*WDI_WowlExitReq*/
4458
4459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004460 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 the upper MAC wants to dynamically adjusts the listen
4462 interval based on the WLAN/MSM activity. Upon the call
4463 of this API the WLAN DAL will pack and send a HAL
4464 configure Apps Cpu Wakeup State request message to the
4465 lower RIVA sub-system.
4466
4467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004469
Jeff Johnsone7245742012-09-05 17:12:55 -07004470
4471 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004472 Apps Cpu Wakeup State as specified by the
4473 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004474
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4476 back the response of the configure Apps Cpu Wakeup State
4477 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004478
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 callback
4481
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 @return Result of the function call
4483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004485WDI_ConfigureAppsCpuWakeupStateReq
4486(
4487 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4488 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4489 void* pUserData
4490)
4491{
4492 WDI_EventInfoType wdiEventData;
4493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4494
4495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 ------------------------------------------------------------------------*/
4498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4499 {
4500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4501 "WDI API call before module is initialized - Fail request");
4502
Jeff Johnsone7245742012-09-05 17:12:55 -07004503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 }
4505
4506 /*------------------------------------------------------------------------
4507 Fill in Event data and post to the Main FSM
4508 ------------------------------------------------------------------------*/
4509 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4511 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4512 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 wdiEventData.pUserData = pUserData;
4514
4515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4516}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 to to perform a flush operation on a given AC. Upon the
4520 call of this API the WLAN DAL will pack and send a HAL
4521 Flush AC request message to the lower RIVA sub-system if
4522 DAL is in state STARTED.
4523
4524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004526
4527 WDI_AddBAReq must have been called.
4528
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004531
Jeff Johnson295189b2012-06-20 16:38:30 -07004532 wdiFlushAcRspCb: callback for passing back the response
4533 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004534
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 callback
4537
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 @see WDI_AddBAReq
4539 @return Result of the function call
4540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004542WDI_FlushAcReq
4543(
4544 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4545 WDI_FlushAcRspCb wdiFlushAcRspCb,
4546 void* pUserData
4547)
4548{
4549 WDI_EventInfoType wdiEventData;
4550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4551
4552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 ------------------------------------------------------------------------*/
4555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4556 {
4557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4558 "WDI API call before module is initialized - Fail request");
4559
Jeff Johnsone7245742012-09-05 17:12:55 -07004560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004561 }
4562
4563 /*------------------------------------------------------------------------
4564 Fill in Event data and post to the Main FSM
4565 ------------------------------------------------------------------------*/
4566 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004567 wdiEventData.pEventData = pwdiFlushAcReqParams;
4568 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4569 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 wdiEventData.pUserData = pUserData;
4571
4572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4573
4574}/*WDI_FlushAcReq*/
4575
4576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 wants to notify the lower mac on a BT AMP event. This is
4579 to inform BTC-SLM that some BT AMP event occurred. Upon
4580 the call of this API the WLAN DAL will pack and send a
4581 HAL BT AMP event request message to the lower RIVA
4582 sub-system if DAL is in state STARTED.
4583
4584 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004586
Jeff Johnsone7245742012-09-05 17:12:55 -07004587
4588 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004590
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 wdiBtAmpEventRspCb: callback for passing back the
4592 response of the BT AMP event operation received from the
4593 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004594
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 callback
4597
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 @return Result of the function call
4599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004601WDI_BtAmpEventReq
4602(
4603 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4604 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4605 void* pUserData
4606)
4607{
4608 WDI_EventInfoType wdiEventData;
4609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4610
4611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 ------------------------------------------------------------------------*/
4614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4615 {
4616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4617 "WDI API call before module is initialized - Fail request");
4618
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 }
4621
4622 /*------------------------------------------------------------------------
4623 Fill in Event data and post to the Main FSM
4624 ------------------------------------------------------------------------*/
4625 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4627 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4628 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 wdiEventData.pUserData = pUserData;
4630
4631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4632
4633}/*WDI_BtAmpEventReq*/
4634
Jeff Johnsone7245742012-09-05 17:12:55 -07004635#ifdef FEATURE_OEM_DATA_SUPPORT
4636/**
4637 @brief WDI_Start Oem Data Req will be called when the upper MAC
4638 wants to notify the lower mac on a oem data Req event.Upon
4639 the call of this API the WLAN DAL will pack and send a
4640 HAL OEM Data Req event request message to the lower RIVA
4641 sub-system if DAL is in state STARTED.
4642
4643 In state BUSY this request will be queued. Request won't
4644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004645
4646
Jeff Johnsone7245742012-09-05 17:12:55 -07004647
4648 @param pwdiOemDataReqParams: the Oem Data Req as
4649 specified by the Device Interface
4650
4651 wdiStartOemDataRspCb: callback for passing back the
4652 response of the Oem Data Req received from the
4653 device
4654
4655 pUserData: user data will be passed back with the
4656 callback
4657
4658 @return Result of the function call
4659*/
4660WDI_Status
4661WDI_StartOemDataReq
4662(
4663 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4664 WDI_oemDataRspCb wdiOemDataRspCb,
4665 void* pUserData
4666)
4667{
4668 WDI_EventInfoType wdiEventData;
4669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4670
4671 /*------------------------------------------------------------------------
4672 Sanity Check
4673 ------------------------------------------------------------------------*/
4674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4675 {
4676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4677 "WDI API call before module is initialized - Fail request");
4678
4679 return WDI_STATUS_E_NOT_ALLOWED;
4680 }
4681
4682 /*------------------------------------------------------------------------
4683 Fill in Event data and post to the Main FSM
4684 ------------------------------------------------------------------------*/
4685 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4686 wdiEventData.pEventData = pwdiOemDataReqParams;
4687 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4688 wdiEventData.pCBfnc = wdiOemDataRspCb;
4689 wdiEventData.pUserData = pUserData;
4690
4691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4692
4693
4694}
4695
4696#endif
4697
4698
4699/*========================================================================
4700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703==========================================================================*/
4704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 the WLAN HW to change the current channel of operation.
4707 Upon the call of this API the WLAN DAL will pack and
4708 send a HAL Start request message to the lower RIVA
4709 sub-system if DAL is in state STARTED.
4710
4711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004713
4714 WDI_Start must have been called.
4715
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004718
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 wdiSwitchChRspCb: callback for passing back the response
4720 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 callback
4724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 @see WDI_Start
4726 @return Result of the function call
4727*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004729WDI_SwitchChReq
4730(
4731 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4732 WDI_SwitchChRspCb wdiSwitchChRspCb,
4733 void* pUserData
4734)
4735{
4736 WDI_EventInfoType wdiEventData;
4737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4738
4739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 ------------------------------------------------------------------------*/
4742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4743 {
4744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4745 "WDI API call before module is initialized - Fail request");
4746
Jeff Johnsone7245742012-09-05 17:12:55 -07004747 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 wdiEventData.pEventData = pwdiSwitchChReqParams;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4756 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760
4761}/*WDI_SwitchChReq*/
4762
4763
4764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004765 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004766 wishes to add or update a STA in HW. Upon the call of
4767 this API the WLAN DAL will pack and send a HAL Start
4768 message request message to the lower RIVA sub-system if
4769 DAL is in state STARTED.
4770
4771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004773
4774 WDI_Start must have been called.
4775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004778
Jeff Johnson295189b2012-06-20 16:38:30 -07004779 wdiConfigSTARspCb: callback for passing back the
4780 response of the config STA operation received from the
4781 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004782
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 callback
4785
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 @see WDI_Start
4787 @return Result of the function call
4788*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004789WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004790WDI_ConfigSTAReq
4791(
4792 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4793 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4794 void* pUserData
4795)
4796{
4797 WDI_EventInfoType wdiEventData;
4798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4799
4800 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004801 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 ------------------------------------------------------------------------*/
4803 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4804 {
4805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4806 "WDI API call before module is initialized - Fail request");
4807
Jeff Johnsone7245742012-09-05 17:12:55 -07004808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 }
4810
4811 /*------------------------------------------------------------------------
4812 Fill in Event data and post to the Main FSM
4813 ------------------------------------------------------------------------*/
4814 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004815 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4816 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4817 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 wdiEventData.pUserData = pUserData;
4819
4820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4821
4822}/*WDI_ConfigSTAReq*/
4823
4824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 wants to change the state of an ongoing link. Upon the
4827 call of this API the WLAN DAL will pack and send a HAL
4828 Start message request message to the lower RIVA
4829 sub-system if DAL is in state STARTED.
4830
4831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004833
4834 WDI_JoinStartReq must have been called.
4835
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004838
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 wdiSetLinkStateRspCb: callback for passing back the
4840 response of the set link state operation received from
4841 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004842
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 callback
4845
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 @see WDI_JoinStartReq
4847 @return Result of the function call
4848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004850WDI_SetLinkStateReq
4851(
4852 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4853 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4854 void* pUserData
4855)
4856{
4857 WDI_EventInfoType wdiEventData;
4858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4859
4860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 ------------------------------------------------------------------------*/
4863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4864 {
4865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4866 "WDI API call before module is initialized - Fail request");
4867
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 }
4870
4871 /*------------------------------------------------------------------------
4872 Fill in Event data and post to the Main FSM
4873 ------------------------------------------------------------------------*/
4874 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4876 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4877 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiEventData.pUserData = pUserData;
4879
4880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4881
4882}/*WDI_SetLinkStateReq*/
4883
4884
4885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004887 to get statistics (MIB counters) from the device. Upon
4888 the call of this API the WLAN DAL will pack and send a
4889 HAL Start request message to the lower RIVA sub-system
4890 if DAL is in state STARTED.
4891
4892 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004893 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004894
4895 WDI_Start must have been called.
4896
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004899
Jeff Johnson295189b2012-06-20 16:38:30 -07004900 wdiGetStatsRspCb: callback for passing back the response
4901 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004902
Jeff Johnson295189b2012-06-20 16:38:30 -07004903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 callback
4905
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 @see WDI_Start
4907 @return Result of the function call
4908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004910WDI_GetStatsReq
4911(
4912 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4913 WDI_GetStatsRspCb wdiGetStatsRspCb,
4914 void* pUserData
4915)
4916{
4917 WDI_EventInfoType wdiEventData;
4918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4919
4920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004922 ------------------------------------------------------------------------*/
4923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4924 {
4925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4926 "WDI API call before module is initialized - Fail request");
4927
Jeff Johnsone7245742012-09-05 17:12:55 -07004928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 }
4930
4931 /*------------------------------------------------------------------------
4932 Fill in Event data and post to the Main FSM
4933 ------------------------------------------------------------------------*/
4934 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 wdiEventData.pEventData = pwdiGetStatsReqParams;
4936 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4937 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 wdiEventData.pUserData = pUserData;
4939
4940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4941
4942}/*WDI_GetStatsReq*/
4943
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004944#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4945/**
4946 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4947 to get roam rssi from the device. Upon
4948 the call of this API the WLAN DAL will pack and send a
4949 HAL Start request message to the lower RIVA sub-system
4950 if DAL is in state STARTED.
4951
4952 In state BUSY this request will be queued. Request won't
4953 be allowed in any other state.
4954
4955 WDI_Start must have been called.
4956
4957 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4958 specified by the Device Interface
4959
4960 wdiGetRoamRssiRspCb: callback for passing back the response
4961 of the get stats operation received from the device
4962
4963 pUserData: user data will be passed back with the
4964 callback
4965
4966 @see WDI_Start
4967 @return Result of the function call
4968*/
4969WDI_Status
4970WDI_GetRoamRssiReq
4971(
4972 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4973 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4974 void* pUserData
4975)
4976{
4977 WDI_EventInfoType wdiEventData;
4978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4979
4980 /*------------------------------------------------------------------------
4981 Sanity Check
4982 ------------------------------------------------------------------------*/
4983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4984 {
4985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4986 "WDI API call before module is initialized - Fail request");
4987
4988 return WDI_STATUS_E_NOT_ALLOWED;
4989 }
4990 /*------------------------------------------------------------------------
4991 Fill in Event data and post to the Main FSM
4992 ------------------------------------------------------------------------*/
4993 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4994 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4995 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4996 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4997 wdiEventData.pUserData = pUserData;
4998
4999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5000
5001}/*WDI_GetRoamRssiReq*/
5002#endif
5003
Jeff Johnson295189b2012-06-20 16:38:30 -07005004
5005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005006 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005007 it wishes to change the configuration of the WLAN
5008 Device. Upon the call of this API the WLAN DAL will pack
5009 and send a HAL Update CFG request message to the lower
5010 RIVA sub-system if DAL is in state STARTED.
5011
5012 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005014
5015 WDI_Start must have been called.
5016
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005019
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 wdiUpdateCfgsRspCb: callback for passing back the
5021 response of the update cfg operation received from the
5022 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005023
Jeff Johnson295189b2012-06-20 16:38:30 -07005024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 callback
5026
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 @see WDI_Start
5028 @return Result of the function call
5029*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005031WDI_UpdateCfgReq
5032(
5033 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5034 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5035 void* pUserData
5036)
5037{
5038 WDI_EventInfoType wdiEventData;
5039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5040
5041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005043 ------------------------------------------------------------------------*/
5044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5045 {
5046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5047 "WDI API call before module is initialized - Fail request");
5048
Jeff Johnsone7245742012-09-05 17:12:55 -07005049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005050 }
5051
5052 /*------------------------------------------------------------------------
5053 Fill in Event data and post to the Main FSM
5054 ------------------------------------------------------------------------*/
5055 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5057 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5058 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiEventData.pUserData = pUserData;
5060
5061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5062
5063}/*WDI_UpdateCfgReq*/
5064
5065
5066
5067/**
5068 @brief WDI_AddBAReq will be called when the upper MAC has setup
5069 successfully a BA session and needs to notify the HW for
5070 the appropriate settings to take place. Upon the call of
5071 this API the WLAN DAL will pack and send a HAL Add BA
5072 request message to the lower RIVA sub-system if DAL is
5073 in state STARTED.
5074
5075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005077
5078 WDI_PostAssocReq must have been called.
5079
5080 @param wdiAddBAReqParams: the add BA parameters as specified by
5081 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 wdiAddBARspCb: callback for passing back the response of
5084 the add BA operation received from the 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_PostAssocReq
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_AddBAReq
5094(
5095 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5096 WDI_AddBARspCb wdiAddBARspCb,
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_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 wdiEventData.pEventData = pwdiAddBAReqParams;
5119 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5120 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 wdiEventData.pUserData = pUserData;
5122
5123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5124
5125}/*WDI_AddBAReq*/
5126
5127
5128/**
5129 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5130 successfully a BA session and needs to notify the HW for
5131 the appropriate settings to take place. Upon the call of
5132 this API the WLAN DAL will pack and send a HAL Add BA
5133 request message to the lower RIVA sub-system if DAL is
5134 in state STARTED.
5135
5136 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005138
5139 WDI_PostAssocReq must have been called.
5140
5141 @param wdiAddBAReqParams: the add BA parameters as specified by
5142 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiAddBARspCb: callback for passing back the response of
5145 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 callback
5149
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 @see WDI_PostAssocReq
5151 @return Result of the function call
5152*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005154WDI_TriggerBAReq
5155(
5156 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5157 WDI_TriggerBARspCb wdiTriggerBARspCb,
5158 void* pUserData
5159)
5160{
5161 WDI_EventInfoType wdiEventData;
5162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5163
5164 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 ------------------------------------------------------------------------*/
5167 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5168 {
5169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5170 "WDI API call before module is initialized - Fail request");
5171
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 }
5174
5175 /*------------------------------------------------------------------------
5176 Fill in Event data and post to the Main FSM
5177 ------------------------------------------------------------------------*/
5178 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5180 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5181 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 wdiEventData.pUserData = pUserData;
5183
5184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5185
5186}/*WDI_AddBAReq*/
5187
5188/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wishes to update any of the Beacon parameters used by HW.
5191 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5192 message to the lower RIVA sub-system if DAL is in state
5193 STARTED.
5194
5195 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005197
5198 WDI_PostAssocReq must have been called.
5199
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 wdiUpdateBeaconParamsRspCb: callback for passing back the
5204 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 callback
5208
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 @see WDI_PostAssocReq
5210 @return Result of the function call
5211*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005213WDI_UpdateBeaconParamsReq
5214(
5215 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5216 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5217 void* pUserData
5218)
5219{
5220 WDI_EventInfoType wdiEventData;
5221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5222
5223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005225 ------------------------------------------------------------------------*/
5226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5227 {
5228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5229 "WDI API call before module is initialized - Fail request");
5230
Jeff Johnsone7245742012-09-05 17:12:55 -07005231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005232 }
5233
5234 /*------------------------------------------------------------------------
5235 Fill in Event data and post to the Main FSM
5236 ------------------------------------------------------------------------*/
5237 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5239 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5240 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 wdiEventData.pUserData = pUserData;
5242
5243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5244
5245}/*WDI_UpdateBeaconParamsReq*/
5246
5247/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 wishes to update the Beacon template used by HW.
5250 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5251 message to the lower RIVA sub-system if DAL is in state
5252 STARTED.
5253
5254 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005255 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005256
5257 WDI_PostAssocReq must have been called.
5258
Jeff Johnsone7245742012-09-05 17:12:55 -07005259 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005261
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 wdiSendBeaconParamsRspCb: callback for passing back the
5263 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005264
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005266 callback
5267
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @see WDI_PostAssocReq
5269 @return Result of the function call
5270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005272WDI_SendBeaconParamsReq
5273(
5274 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5275 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5276 void* pUserData
5277)
5278{
5279 WDI_EventInfoType wdiEventData;
5280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5281
5282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 ------------------------------------------------------------------------*/
5285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5286 {
5287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5288 "WDI API call before module is initialized - Fail request");
5289
Jeff Johnsone7245742012-09-05 17:12:55 -07005290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 }
5292
5293 /*------------------------------------------------------------------------
5294 Fill in Event data and post to the Main FSM
5295 ------------------------------------------------------------------------*/
5296 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 wdiEventData.pEventData = pwdiSendBeaconParams;
5298 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5299 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wdiEventData.pUserData = pUserData;
5301
5302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5303
5304}/*WDI_SendBeaconParamsReq*/
5305
5306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 upper MAC wants to update the probe response template to
5309 be transmitted as Soft AP
5310 Upon the call of this API the WLAN DAL will
5311 pack and send the probe rsp template message to the
5312 lower RIVA sub-system if DAL is in state STARTED.
5313
5314 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005315 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005316
5317
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005320
Jeff Johnson295189b2012-06-20 16:38:30 -07005321 wdiSendBeaconParamsRspCb: callback for passing back the
5322 response of the Send Beacon Params operation received
5323 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005324
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005326 callback
5327
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 @see WDI_AddBAReq
5329 @return Result of the function call
5330*/
5331
Jeff Johnsone7245742012-09-05 17:12:55 -07005332WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005333WDI_UpdateProbeRspTemplateReq
5334(
5335 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5336 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5337 void* pUserData
5338)
5339{
5340 WDI_EventInfoType wdiEventData;
5341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5342
5343 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 ------------------------------------------------------------------------*/
5346 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5347 {
5348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5349 "WDI API call before module is initialized - Fail request");
5350
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 }
5353
5354 /*------------------------------------------------------------------------
5355 Fill in Event data and post to the Main FSM
5356 ------------------------------------------------------------------------*/
5357 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5359 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5360 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 wdiEventData.pUserData = pUserData;
5362
5363 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5364
5365}/*WDI_UpdateProbeRspTemplateReq*/
5366
5367/**
5368 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5369 to the NV memory.
5370
5371
5372 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5373 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005374
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 wdiNvDownloadRspCb: callback for passing back the response of
5376 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005377
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005379 callback
5380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 @see WDI_PostAssocReq
5382 @return Result of the function call
5383*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005385WDI_NvDownloadReq
5386(
5387 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5388 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5389 void* pUserData
5390)
5391{
5392 WDI_EventInfoType wdiEventData;
5393
5394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 ------------------------------------------------------------------------*/
5397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5398 {
5399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5400 "WDI API call before module is initialized - Fail request");
5401
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 }
5404
5405 /*------------------------------------------------------------------------
5406 Fill in Event data and post to the Main FSM
5407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005408 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5409 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5410 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5411 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 wdiEventData.pUserData = pUserData;
5413
5414 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5415
5416}/*WDI_NVDownloadReq*/
5417
Jeff Johnson295189b2012-06-20 16:38:30 -07005418/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 upper MAC wants to send Notice of Absence
5421 Upon the call of this API the WLAN DAL will
5422 pack and send the probe rsp template message to the
5423 lower RIVA sub-system if DAL is in state STARTED.
5424
5425 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005427
5428
Jeff Johnsone7245742012-09-05 17:12:55 -07005429 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 wdiSendBeaconParamsRspCb: callback for passing back the
5433 response of the Send Beacon Params operation received
5434 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005435
Jeff Johnson295189b2012-06-20 16:38:30 -07005436 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 callback
5438
Jeff Johnson295189b2012-06-20 16:38:30 -07005439 @see WDI_AddBAReq
5440 @return Result of the function call
5441*/
5442WDI_Status
5443WDI_SetP2PGONOAReq
5444(
5445 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5446 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5447 void* pUserData
5448)
5449{
5450 WDI_EventInfoType wdiEventData;
5451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5452
5453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 ------------------------------------------------------------------------*/
5456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5457 {
5458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5459 "WDI API call before module is initialized - Fail request");
5460
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 }
5463
5464 /*------------------------------------------------------------------------
5465 Fill in Event data and post to the Main FSM
5466 ------------------------------------------------------------------------*/
5467 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005468 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5469 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5470 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 wdiEventData.pUserData = pUserData;
5472
5473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5474
5475}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005476
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305477#ifdef FEATURE_WLAN_TDLS
5478/**
5479 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5480 upper MAC wants to send TDLS Link Establish Request Parameters
5481 Upon the call of this API the WLAN DAL will
5482 pack and send the TDLS Link Establish Request message to the
5483 lower RIVA sub-system if DAL is in state STARTED.
5484
5485 In state BUSY this request will be queued. Request won't
5486 be allowed in any other state.
5487
5488
5489 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5490 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5491
5492 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5493 response of the TDLS Link Establish request received
5494 from the device
5495
5496 pUserData: user data will be passed back with the
5497 callback
5498
5499 @see
5500 @return Result of the function call
5501*/
5502WDI_Status
5503WDI_SetTDLSLinkEstablishReq
5504(
5505 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5506 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5507 void* pUserData
5508)
5509{
5510 WDI_EventInfoType wdiEventData;
5511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5512
5513 /*------------------------------------------------------------------------
5514 Sanity Check
5515 ------------------------------------------------------------------------*/
5516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5517 {
5518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5519 "WDI API call before module is initialized - Fail request");
5520
5521 return WDI_STATUS_E_NOT_ALLOWED;
5522 }
5523
5524 /*------------------------------------------------------------------------
5525 Fill in Event data and post to the Main FSM
5526 ------------------------------------------------------------------------*/
5527 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5528 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5529 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5530 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5531 wdiEventData.pUserData = pUserData;
5532
5533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5534
5535}/*WDI_SetTDLSLinkEstablishReq*/
5536#endif
5537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005540 UMAC wanted to add STA self while opening any new session
5541 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005543
5544
Jeff Johnsone7245742012-09-05 17:12:55 -07005545 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005546 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005547
Jeff Johnson295189b2012-06-20 16:38:30 -07005548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 callback
5550
5551 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005552 @return Result of the function call
5553*/
5554WDI_Status
5555WDI_AddSTASelfReq
5556(
5557 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5558 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5559 void* pUserData
5560)
5561{
5562 WDI_EventInfoType wdiEventData;
5563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5564
5565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 ------------------------------------------------------------------------*/
5568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5569 {
5570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5571 "WDI API call before module is initialized - Fail request");
5572
Jeff Johnsone7245742012-09-05 17:12:55 -07005573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 }
5575
5576 /*------------------------------------------------------------------------
5577 Fill in Event data and post to the Main FSM
5578 ------------------------------------------------------------------------*/
5579 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005580 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5581 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5582 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005583 wdiEventData.pUserData = pUserData;
5584
5585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5586
5587}/*WDI_AddSTASelfReq*/
5588
5589
Jeff Johnsone7245742012-09-05 17:12:55 -07005590#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005591/**
5592 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5593 the device of a successful add TSpec negotiation. HW
5594 needs to receive the TSpec Info from the UMAC in order
5595 to configure properly the QoS data traffic. Upon the
5596 call of this API the WLAN DAL will pack and send a HAL
5597 Add TS request message to the lower RIVA sub-system if
5598 DAL is in state STARTED.
5599
5600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005602
5603 WDI_PostAssocReq must have been called.
5604
5605 @param wdiAddTsReqParams: the add TS parameters as specified by
5606 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005607
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 wdiAddTsRspCb: callback for passing back the response of
5609 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005610
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 callback
5613
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 @see WDI_PostAssocReq
5615 @return Result of the function call
5616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005618WDI_AggrAddTSReq
5619(
5620 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5621 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5622 void* pUserData
5623)
5624{
5625 WDI_EventInfoType wdiEventData;
5626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5627
5628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 ------------------------------------------------------------------------*/
5631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5632 {
5633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5634 "WDI API call before module is initialized - Fail request");
5635
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 }
5638
5639 /*------------------------------------------------------------------------
5640 Fill in Event data and post to the Main FSM
5641 ------------------------------------------------------------------------*/
5642 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5644 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5645 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005646 wdiEventData.pUserData = pUserData;
5647
5648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5649
5650}/*WDI_AggrAddTSReq*/
5651
5652#endif /* WLAN_FEATURE_VOWIFI_11R */
5653
Jeff Johnson295189b2012-06-20 16:38:30 -07005654/**
5655 @brief WDI_FTMCommandReq
5656 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005657
5658 @param ftmCommandReq: FTM Command Body
5659 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 @see
5663 @return Result of the function call
5664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005666WDI_FTMCommandReq
5667(
5668 WDI_FTMCommandReqType *ftmCommandReq,
5669 WDI_FTMCommandRspCb ftmCommandRspCb,
5670 void *pUserData
5671)
5672{
5673 WDI_EventInfoType wdiEventData;
5674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5675
5676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 ------------------------------------------------------------------------*/
5679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "WDI API call before module is initialized - Fail request");
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*------------------------------------------------------------------------
5688 Fill in Event data and post to the Main FSM
5689 ------------------------------------------------------------------------*/
5690 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5691 wdiEventData.pEventData = (void *)ftmCommandReq;
5692 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5693 wdiEventData.pCBfnc = ftmCommandRspCb;
5694 wdiEventData.pUserData = pUserData;
5695
5696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5697}
Jeff Johnson295189b2012-06-20 16:38:30 -07005698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005700
5701 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005702 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005703
5704
5705 @param pwdiResumeReqParams: as specified by
5706 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005707
Jeff Johnson295189b2012-06-20 16:38:30 -07005708 wdiResumeReqRspCb: callback for passing back the response of
5709 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005710
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 callback
5713
5714 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005715 @return Result of the function call
5716*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005717WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005718WDI_HostResumeReq
5719(
5720 WDI_ResumeParamsType* pwdiResumeReqParams,
5721 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5722 void* pUserData
5723)
5724{
5725 WDI_EventInfoType wdiEventData;
5726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5727
5728 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 ------------------------------------------------------------------------*/
5731 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5732 {
5733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5734 "WDI API call before module is initialized - Fail request");
5735
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 }
5738
5739 /*------------------------------------------------------------------------
5740 Fill in Event data and post to the Main FSM
5741 ------------------------------------------------------------------------*/
5742 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 wdiEventData.pEventData = pwdiResumeReqParams;
5744 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5745 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005746 wdiEventData.pUserData = pUserData;
5747
5748 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5749
5750}/*WDI_HostResumeReq*/
5751
5752/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005754
5755 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005756 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005757
5758
5759 @param pwdiDelStaSelfReqParams: as specified by
5760 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005761
Jeff Johnson295189b2012-06-20 16:38:30 -07005762 wdiDelStaSelfRspCb: callback for passing back the response of
5763 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005766 callback
5767
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 @see WDI_PostAssocReq
5769 @return Result of the function call
5770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005772WDI_DelSTASelfReq
5773(
5774 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5775 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5776 void* pUserData
5777)
5778{
5779 WDI_EventInfoType wdiEventData;
5780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5781
5782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 ------------------------------------------------------------------------*/
5785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5786 {
5787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5788 "WDI API call before module is initialized - Fail request");
5789
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 }
5792
5793 /*------------------------------------------------------------------------
5794 Fill in Event data and post to the Main FSM
5795 ------------------------------------------------------------------------*/
5796 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5798 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5799 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005800 wdiEventData.pUserData = pUserData;
5801
5802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5803
5804}/*WDI_AggrAddTSReq*/
5805
5806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5808 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 Upon the call of this API the WLAN DAL will pack
5810 and send a HAL Set Tx Per Tracking request message to the
5811 lower RIVA sub-system if DAL is in state STARTED.
5812
5813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005815
Jeff Johnsone7245742012-09-05 17:12:55 -07005816 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005818
Jeff Johnson295189b2012-06-20 16:38:30 -07005819 pwdiSetTxPerTrackingRspCb: callback for passing back the
5820 response of the set Tx PER Tracking configurations operation received
5821 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005822
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 callback
5825
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 @return Result of the function call
5827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005829WDI_SetTxPerTrackingReq
5830(
5831 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5832 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5833 void* pUserData
5834)
5835{
5836 WDI_EventInfoType wdiEventData;
5837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5838
5839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 ------------------------------------------------------------------------*/
5842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5843 {
5844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5845 "WDI API call before module is initialized - Fail request");
5846
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 }
5849
5850 /*------------------------------------------------------------------------
5851 Fill in Event data and post to the Main FSM
5852 ------------------------------------------------------------------------*/
5853 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005854 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005855 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005857 wdiEventData.pUserData = pUserData;
5858
5859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5860
5861}/*WDI_SetTxPerTrackingReq*/
5862
5863/**
5864 @brief WDI_SetTmLevelReq
5865 If HW Thermal condition changed, driver should react based on new
5866 HW thermal condition.
5867
5868 @param pwdiSetTmLevelReq: New thermal condition information
5869
5870 pwdiSetTmLevelRspCb: callback
5871
5872 usrData: user data will be passed back with the
5873 callback
5874
5875 @return Result of the function call
5876*/
5877WDI_Status
5878WDI_SetTmLevelReq
5879(
5880 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5881 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5882 void *usrData
5883)
5884{
5885 WDI_EventInfoType wdiEventData;
5886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5887
5888 /*------------------------------------------------------------------------
5889 Sanity Check
5890 ------------------------------------------------------------------------*/
5891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5892 {
5893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5894 "WDI API call before module is initialized - Fail request");
5895
5896 return WDI_STATUS_E_NOT_ALLOWED;
5897 }
5898
5899 /*------------------------------------------------------------------------
5900 Fill in Event data and post to the Main FSM
5901 ------------------------------------------------------------------------*/
5902 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5903 wdiEventData.pEventData = pwdiSetTmLevelReq;
5904 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5905 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5906 wdiEventData.pUserData = usrData;
5907
5908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5909}
5910
5911/**
5912 @brief WDI_HostSuspendInd
5913
5914 Suspend Indication from the upper layer will be sent
5915 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005916
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005918
5919 @see
5920
Jeff Johnson295189b2012-06-20 16:38:30 -07005921 @return Status of the request
5922*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005923WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005924WDI_HostSuspendInd
5925(
5926 WDI_SuspendParamsType* pwdiSuspendIndParams
5927)
5928{
5929
5930 WDI_EventInfoType wdiEventData;
5931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5932
5933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005934 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 ------------------------------------------------------------------------*/
5936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5937 {
5938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5939 "WDI API call before module is initialized - Fail request");
5940
Jeff Johnsone7245742012-09-05 17:12:55 -07005941 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005942 }
5943
5944 /*------------------------------------------------------------------------
5945 Fill in Event data and post to the Main FSM
5946 ------------------------------------------------------------------------*/
5947 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005948 wdiEventData.pEventData = pwdiSuspendIndParams;
5949 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5950 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 wdiEventData.pUserData = NULL;
5952
5953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5954
5955}/*WDI_HostSuspendInd*/
5956
5957/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005958 @brief WDI_TrafficStatsInd
5959 Traffic Stats from the upper layer will be sent
5960 down to HAL
5961
5962 @param WDI_TrafficStatsIndType
5963
5964 @see
5965
5966 @return Status of the request
5967*/
5968WDI_Status
5969WDI_TrafficStatsInd
5970(
5971 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5972)
5973{
5974
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
5979 Sanity Check
5980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
5986 return WDI_STATUS_E_NOT_ALLOWED;
5987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5993 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5994 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5995 wdiEventData.pCBfnc = NULL;
5996 wdiEventData.pUserData = NULL;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_TrafficStatsInd*/
6001
Chet Lanctota96bb432013-03-18 10:26:30 -07006002#ifdef WLAN_FEATURE_11W
6003/**
6004 @brief WDI_ExcludeUnencryptedInd
6005 Register with HAL to receive/drop unencrypted frames
6006
6007 @param WDI_ExcludeUnencryptIndType
6008
6009 @see
6010
6011 @return Status of the request
6012*/
6013WDI_Status
6014WDI_ExcludeUnencryptedInd
6015(
6016 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6017)
6018{
6019
6020 WDI_EventInfoType wdiEventData;
6021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6022
6023 /*------------------------------------------------------------------------
6024 Sanity Check
6025 ------------------------------------------------------------------------*/
6026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6027 {
6028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6029 "WDI API call before module is initialized - Fail request");
6030
6031 return WDI_STATUS_E_NOT_ALLOWED;
6032 }
6033
6034 /*------------------------------------------------------------------------
6035 Fill in Event data and post to the Main FSM
6036 ------------------------------------------------------------------------*/
6037 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6038 wdiEventData.pEventData = pWdiExcUnencParams;
6039 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6040 wdiEventData.pCBfnc = NULL;
6041 wdiEventData.pUserData = NULL;
6042
6043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6044
6045}/*WDI_TrafficStatsInd*/
6046#endif
6047
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006048/**
Yue Ma365933a2013-08-14 15:59:08 -07006049 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6050
6051 @param addPeriodicTxPtrnParams: Add Pattern parameters
6052
6053 @see
6054
6055 @return Status of the request
6056*/
6057WDI_Status
6058WDI_AddPeriodicTxPtrnInd
6059(
6060 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6061)
6062{
6063 WDI_EventInfoType wdiEventData;
6064
6065 /*-------------------------------------------------------------------------
6066 Sanity Check
6067 ------------------------------------------------------------------------*/
6068 if (eWLAN_PAL_FALSE == gWDIInitialized)
6069 {
6070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6071 "WDI API call before module is initialized - Fail request!");
6072
6073 return WDI_STATUS_E_NOT_ALLOWED;
6074 }
6075
6076 /*-------------------------------------------------------------------------
6077 Fill in Event data and post to the Main FSM
6078 ------------------------------------------------------------------------*/
6079 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6080 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6081 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6082 wdiEventData.pCBfnc = NULL;
6083 wdiEventData.pUserData = NULL;
6084
6085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6086}
6087
6088/**
6089 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6090
6091 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6092
6093 @see
6094
6095 @return Status of the request
6096*/
6097WDI_Status
6098WDI_DelPeriodicTxPtrnInd
6099(
6100 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6101)
6102{
6103 WDI_EventInfoType wdiEventData;
6104
6105 /*-------------------------------------------------------------------------
6106 Sanity Check
6107 ------------------------------------------------------------------------*/
6108 if (eWLAN_PAL_FALSE == gWDIInitialized)
6109 {
6110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6111 "WDI API call before module is initialized - Fail request!");
6112
6113 return WDI_STATUS_E_NOT_ALLOWED;
6114 }
6115
6116 /*-------------------------------------------------------------------------
6117 Fill in Event data and post to the Main FSM
6118 ------------------------------------------------------------------------*/
6119 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6120 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6121 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6122 wdiEventData.pCBfnc = NULL;
6123 wdiEventData.pUserData = NULL;
6124
6125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6126}
6127
6128/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 @brief WDI_HALDumpCmdReq
6130 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006131
6132 @param halDumpCmdReqParams: Hal Dump Command Body
6133 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 @see
6137 @return Result of the function call
6138*/
6139WDI_Status WDI_HALDumpCmdReq
6140(
6141 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6142 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6143 void *pUserData
6144)
6145{
6146 WDI_EventInfoType wdiEventData;
6147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6148
6149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 ------------------------------------------------------------------------*/
6152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6153 {
6154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6155 "WDI API call before module is initialized - Fail request");
6156
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 }
6159
6160 /*------------------------------------------------------------------------
6161 Fill in Event data and post to the Main FSM
6162 ------------------------------------------------------------------------*/
6163 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6164 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6165 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6166 wdiEventData.pCBfnc = halDumpCmdRspCb;
6167 wdiEventData.pUserData = pUserData;
6168
6169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6170}
6171
Jeff Johnsone7245742012-09-05 17:12:55 -07006172/*============================================================================
6173
Jeff Johnson295189b2012-06-20 16:38:30 -07006174 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006175
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 ============================================================================*/
6177
6178/**
6179 @brief Main FSM Start function for all states except BUSY
6180
Jeff Johnsone7245742012-09-05 17:12:55 -07006181
6182 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 wdiEV: event posted to the main DAL FSM
6184 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 structure
6186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 @see
6188 @return Result of the function call
6189*/
6190WDI_Status
6191WDI_PostMainEvent
6192(
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 WDI_ControlBlockType* pWDICtx,
6194 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006196
Jeff Johnson295189b2012-06-20 16:38:30 -07006197)
6198{
Jeff Johnsone7245742012-09-05 17:12:55 -07006199 WDI_Status wdiStatus;
6200 WDI_MainFuncType pfnWDIMainEvHdlr;
6201 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6203
6204 /*-------------------------------------------------------------------------
6205 Sanity check
6206 -------------------------------------------------------------------------*/
6207 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6208 ( wdiEV >= WDI_MAX_EVENT ))
6209 {
6210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6211 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6212 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006214 }
6215
6216 /*Access to the global state must be locked */
6217 wpalMutexAcquire(&pWDICtx->wptMutex);
6218
6219 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006220 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006221
6222 wdiOldState = pWDICtx->uGlobalState;
6223
6224 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006225 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6226 response comes from CCPU for the request sent by host:
6227 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 -07006228 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 -07006229 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006230 CCPU:
6231 don't change the state */
6232 if ( WDI_RESPONSE_EVENT != wdiEV)
6233 {
6234 /*Transition to BUSY State - the request is now being processed by the FSM,
6235 if the request fails we shall transition back to the old state, if not
6236 the request will manage its own state transition*/
6237 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6238 }
6239 /* If the state function associated with the EV is NULL it means that this
6240 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 {
6243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006246 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 }
6248 else
6249 {
6250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006253 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 }
6255
6256 /* If a request handles itself well it will end up in a success or in a
6257 pending
6258 Success - means that the request was processed and the proper state
6259 transition already occurred or will occur when the resp is received
6260 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006261
Jeff Johnson295189b2012-06-20 16:38:30 -07006262 Pending - means the request could not be processed at this moment in time
6263 because the FSM was already busy so no state transition or dequeueing
6264 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006265
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 Success for synchronous case means that the transition may occur and
6267 processing of pending requests may continue - so it should go through
6268 and restores the state and continue processing queued requests*/
6269 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6270 ( WDI_STATUS_PENDING != wdiStatus ))
6271 {
6272 if ( WDI_RESPONSE_EVENT != wdiEV)
6273 {
6274 /*The request has failed or could not be processed - transition back to
6275 the old state - check to see if anything was queued and try to execute
6276 The dequeue logic should post a message to a thread and return - no
6277 actual processing can occur */
6278 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6279 }
6280 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006281
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 }
6283
6284 /* we have completed processing the event */
6285 wpalMutexRelease(&pWDICtx->wptMutex);
6286
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006288
6289}/*WDI_PostMainEvent*/
6290
6291
6292/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006294--------------------------------------------------------------------------*/
6295/**
6296 @brief Main FSM Start function for all states except BUSY
6297
Jeff Johnsone7245742012-09-05 17:12:55 -07006298
6299 @param pWDICtx: pointer to the WLAN DAL context
6300 pEventData: pointer to the event information structure
6301
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 @see
6303 @return Result of the function call
6304*/
6305WDI_Status
6306WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006307(
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 WDI_ControlBlockType* pWDICtx,
6309 WDI_EventInfoType* pEventData
6310)
6311{
6312
6313 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006314 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006315 ----------------------------------------------------------------------*/
6316 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6317 {
6318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006319 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006320 pWDICtx, pEventData);
6321 return WDI_STATUS_E_FAILURE;
6322 }
6323
6324 wpalMutexAcquire(&pWDICtx->wptMutex);
6325
6326 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 ----------------------------------------------------------------------*/
6329 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6330 {
6331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6332 "Control Transport not yet Open - queueing the request");
6333
6334 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006336
6337 wpalMutexRelease(&pWDICtx->wptMutex);
6338 return WDI_STATUS_PENDING;
6339 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006340
Jeff Johnson295189b2012-06-20 16:38:30 -07006341 wpalMutexRelease(&pWDICtx->wptMutex);
6342
6343 /*Return Success*/
6344 return WDI_ProcessRequest( pWDICtx, pEventData );
6345
6346}/*WDI_MainStart*/
6347
6348/**
6349 @brief Main FSM Response function for state INIT
6350
Jeff Johnsone7245742012-09-05 17:12:55 -07006351
6352 @param pWDICtx: pointer to the WLAN DAL context
6353 pEventData: pointer to the event information structure
6354
Jeff Johnson295189b2012-06-20 16:38:30 -07006355 @see
6356 @return Result of the function call
6357*/
6358WDI_Status
6359WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006360(
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 WDI_ControlBlockType* pWDICtx,
6362 WDI_EventInfoType* pEventData
6363)
6364{
6365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006366 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006368 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006369
6370 /*Return Success*/
6371 return WDI_STATUS_E_NOT_ALLOWED;
6372}/* WDI_MainRspInit */
6373
6374/**
6375 @brief Main FSM Close function for all states except BUSY
6376
Jeff Johnsone7245742012-09-05 17:12:55 -07006377
6378 @param pWDICtx: pointer to the WLAN DAL context
6379 pEventData: pointer to the event information structure
6380
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 @see
6382 @return Result of the function call
6383*/
6384WDI_Status
6385WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006386(
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 WDI_ControlBlockType* pWDICtx,
6388 WDI_EventInfoType* pEventData
6389)
6390{
6391
6392 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006393 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006394 ----------------------------------------------------------------------*/
6395 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6396 {
6397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 pWDICtx, pEventData);
6400 return WDI_STATUS_E_FAILURE;
6401 }
6402
6403 /*Return Success*/
6404 return WDI_ProcessRequest( pWDICtx, pEventData );
6405
6406}/*WDI_MainClose*/
6407/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006409--------------------------------------------------------------------------*/
6410/**
6411 @brief Main FSM Start function for state STARTED
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_MainStartStarted
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 WDI_StartRspCb wdiStartRspCb = NULL;
6428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6429
6430 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 ----------------------------------------------------------------------*/
6433 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6434 {
6435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006436 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 pWDICtx, pEventData);
6438 return WDI_STATUS_E_FAILURE;
6439 }
6440
6441 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006442 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 ----------------------------------------------------------------------*/
6444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006446
6447 wpalMutexAcquire(&pWDICtx->wptMutex);
6448
6449 /*Transition back to started because the post function transitioned us to
6450 busy*/
6451 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6452
6453 /*Check to see if any request is pending*/
6454 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006455
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 wpalMutexRelease(&pWDICtx->wptMutex);
6457
6458 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006459 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6460
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 /*Notify UMAC*/
6462 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6463
6464 /*Return Success*/
6465 return WDI_STATUS_SUCCESS;
6466
6467}/*WDI_MainStartStarted*/
6468
6469/**
6470 @brief Main FSM Stop function for state STARTED
6471
Jeff Johnsone7245742012-09-05 17:12:55 -07006472
6473 @param pWDICtx: pointer to the WLAN DAL context
6474 pEventData: pointer to the event information structure
6475
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 @see
6477 @return Result of the function call
6478*/
6479WDI_Status
6480WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006481(
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 WDI_ControlBlockType* pWDICtx,
6483 WDI_EventInfoType* pEventData
6484)
6485{
6486 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 ----------------------------------------------------------------------*/
6489 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6490 {
6491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006492 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006493 pWDICtx, pEventData);
6494 return WDI_STATUS_E_FAILURE;
6495 }
6496
6497 /*State at this point is BUSY - because we enter this state before posting
6498 an event to the FSM in order to prevent potential race conditions*/
6499
6500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6501 "Processing stop request in FSM");
6502
6503 /*Return Success*/
6504 return WDI_ProcessRequest( pWDICtx, pEventData );
6505
6506}/*WDI_MainStopStarted*/
6507/**
6508 @brief Main FSM Request function for state started
6509
Jeff Johnsone7245742012-09-05 17:12:55 -07006510
6511 @param pWDICtx: pointer to the WLAN DAL context
6512 pEventData: pointer to the event information structure
6513
Jeff Johnson295189b2012-06-20 16:38:30 -07006514 @see
6515 @return Result of the function call
6516*/
6517WDI_Status
6518WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006519(
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 WDI_ControlBlockType* pWDICtx,
6521 WDI_EventInfoType* pEventData
6522)
6523{
6524
6525 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 ----------------------------------------------------------------------*/
6528 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6529 {
6530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006531 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006532 pWDICtx, pEventData);
6533 return WDI_STATUS_E_FAILURE;
6534 }
6535
6536 /*State at this point is BUSY - because we enter this state before posting
6537 an event to the FSM in order to prevent potential race conditions*/
6538
6539 /*Return Success*/
6540 return WDI_ProcessRequest( pWDICtx, pEventData );
6541
6542}/*WDI_MainReqStarted*/
6543
6544/**
6545 @brief Main FSM Response function for all states except INIT
6546
Jeff Johnsone7245742012-09-05 17:12:55 -07006547
6548 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006549 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006550
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 @see
6552 @return Result of the function call
6553*/
6554WDI_Status
6555WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006556(
Jeff Johnson295189b2012-06-20 16:38:30 -07006557 WDI_ControlBlockType* pWDICtx,
6558 WDI_EventInfoType* pEventData
6559)
6560{
Jeff Johnsone7245742012-09-05 17:12:55 -07006561 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006562 wpt_boolean expectedResponse;
6563
6564 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006566 ----------------------------------------------------------------------*/
6567 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6568 {
6569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006570 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006571 pWDICtx, pEventData);
6572 return WDI_STATUS_E_FAILURE;
6573 }
6574
6575 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6576 {
6577 /* we received an expected response */
6578 expectedResponse = eWLAN_PAL_TRUE;
6579
6580 /*We expect that we will transition to started after this processing*/
6581 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6582
6583 /* we are no longer expecting a response */
6584 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6585 }
6586 else
6587 {
6588 /* we received an indication or unexpected response */
6589 expectedResponse = eWLAN_PAL_FALSE;
6590 /* for indications no need to update state from what it is right
6591 now, unless it explicitly does it in the indication handler (say
6592 for device failure ind) */
6593 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6594 }
6595
6596 /*Process the response and indication */
6597 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6598
6599 /*Lock the CB as we are about to do a state transition*/
6600 wpalMutexAcquire(&pWDICtx->wptMutex);
6601
6602 /*Transition to the expected state after the response processing
6603 - this should always be started state with the following exceptions:
6604 1. processing of a failed start response
6605 2. device failure detected while processing response
6606 3. stop response received*/
6607 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006608
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 /*Dequeue request that may have been queued while we were waiting for the
6610 response */
6611 if ( expectedResponse )
6612 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006613 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 }
6615
6616 wpalMutexRelease(&pWDICtx->wptMutex);
6617
6618 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006620
6621}/*WDI_MainRsp*/
6622
6623/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006625--------------------------------------------------------------------------*/
6626/**
6627 @brief Main FSM Stop function for state STOPPED
6628
Jeff Johnsone7245742012-09-05 17:12:55 -07006629
6630 @param pWDICtx: pointer to the WLAN DAL context
6631 pEventData: pointer to the event information structure
6632
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 @see
6634 @return Result of the function call
6635*/
6636WDI_Status
6637WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006638(
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 WDI_ControlBlockType* pWDICtx,
6640 WDI_EventInfoType* pEventData
6641)
6642{
6643 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 ----------------------------------------------------------------------*/
6646 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6647 {
6648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006649 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006650 pWDICtx, pEventData);
6651 return WDI_STATUS_E_FAILURE;
6652 }
6653
6654 /*We should normally not get a STOP request if we are already stopped
6655 since we should normally be stopped by the UMAC. However in some
6656 error situations we put ourselves in the stopped state without the
6657 UMAC knowing, so when we get a STOP request in this state we still
6658 process it since we need to clean up the underlying state */
6659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6660 "Processing stop request while stopped in FSM");
6661
6662 /*Return Success*/
6663 return WDI_ProcessRequest( pWDICtx, pEventData );
6664
6665}/*WDI_MainStopStopped*/
6666
6667/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006669--------------------------------------------------------------------------*/
6670/**
6671 @brief Main FSM Start function for state BUSY
6672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673
6674 @param pWDICtx: pointer to the WLAN DAL context
6675 pEventData: pointer to the event information structure
6676
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 @see
6678 @return Result of the function call
6679*/
6680WDI_Status
6681WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006682(
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 WDI_ControlBlockType* pWDICtx,
6684 WDI_EventInfoType* pEventData
6685)
6686{
6687 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006689 ----------------------------------------------------------------------*/
6690 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6691 {
6692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 pWDICtx, pEventData);
6695 return WDI_STATUS_E_FAILURE;
6696 }
6697
6698 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 ----------------------------------------------------------------------*/
6701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6702 "WDI Busy state - queue start request");
6703
6704 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006705 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006706
6707 /*Return Success*/
6708 return WDI_STATUS_PENDING;
6709}/*WDI_MainStartBusy*/
6710
6711/**
6712 @brief Main FSM Stop function for state BUSY
6713
Jeff Johnsone7245742012-09-05 17:12:55 -07006714
6715 @param pWDICtx: pointer to the WLAN DAL context
6716 pEventData: pointer to the event information structure
6717
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 @see
6719 @return Result of the function call
6720*/
6721WDI_Status
6722WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006723(
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 WDI_ControlBlockType* pWDICtx,
6725 WDI_EventInfoType* pEventData
6726)
6727{
6728 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006729 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 ----------------------------------------------------------------------*/
6731 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6732 {
6733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006734 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006735 pWDICtx, pEventData);
6736 return WDI_STATUS_E_FAILURE;
6737 }
6738
6739 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 ----------------------------------------------------------------------*/
6742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6743 "WDI Busy state - queue stop request");
6744
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006747
Jeff Johnson295189b2012-06-20 16:38:30 -07006748}/*WDI_MainStopBusy*/
6749
6750/**
6751 @brief Main FSM Request function for state BUSY
6752
Jeff Johnsone7245742012-09-05 17:12:55 -07006753
6754 @param pWDICtx: pointer to the WLAN DAL context
6755 pEventData: pointer to the event information structure
6756
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 @see
6758 @return Result of the function call
6759*/
6760WDI_Status
6761WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006762(
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 WDI_ControlBlockType* pWDICtx,
6764 WDI_EventInfoType* pEventData
6765)
6766{
6767 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 ----------------------------------------------------------------------*/
6770 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6771 {
6772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 pWDICtx, pEventData);
6775 return WDI_STATUS_E_FAILURE;
6776 }
6777
6778 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 ----------------------------------------------------------------------*/
6781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6782 "WDI Busy state - queue request %d because waiting for response %d",
6783 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6784
Jeff Johnsone7245742012-09-05 17:12:55 -07006785 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006787
Jeff Johnson295189b2012-06-20 16:38:30 -07006788}/*WDI_MainReqBusy*/
6789/**
6790 @brief Main FSM Close function for state BUSY
6791
Jeff Johnsone7245742012-09-05 17:12:55 -07006792
6793 @param pWDICtx: pointer to the WLAN DAL context
6794 pEventData: pointer to the event information structure
6795
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 @see
6797 @return Result of the function call
6798*/
6799WDI_Status
6800WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006801(
Jeff Johnson295189b2012-06-20 16:38:30 -07006802 WDI_ControlBlockType* pWDICtx,
6803 WDI_EventInfoType* pEventData
6804)
6805{
6806 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 ----------------------------------------------------------------------*/
6809 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6810 {
6811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006812 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 pWDICtx, pEventData);
6814 return WDI_STATUS_E_FAILURE;
6815 }
6816
6817 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 ----------------------------------------------------------------------*/
6820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6821 "WDI Busy state - queue close request");
6822
Jeff Johnsone7245742012-09-05 17:12:55 -07006823 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006825
Jeff Johnson295189b2012-06-20 16:38:30 -07006826}/*WDI_MainCloseBusy*/
6827
6828/**
6829 @brief Main FSM Shutdown function for INIT & STARTED states
6830
6831
6832 @param pWDICtx: pointer to the WLAN DAL context
6833 pEventData: pointer to the event information structure
6834
6835 @see
6836 @return Result of the function call
6837*/
6838WDI_Status
6839WDI_MainShutdown
6840(
6841 WDI_ControlBlockType* pWDICtx,
6842 WDI_EventInfoType* pEventData
6843)
6844{
6845 /*--------------------------------------------------------------------
6846 Sanity Check
6847 ----------------------------------------------------------------------*/
6848 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6851 "Invalid parameters on Main Start %x %x",
6852 pWDICtx, pEventData);
6853 return WDI_STATUS_E_FAILURE;
6854 }
6855
6856 /*State at this point is BUSY - because we enter this state before posting
6857 an event to the FSM in order to prevent potential race conditions*/
6858
6859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6860 "Processing shutdown request in FSM");
6861
6862 /*Return Success*/
6863 return WDI_ProcessRequest( pWDICtx, pEventData );
6864
6865}/*WDI_MainShutdown*/
6866
6867/**
6868 @brief Main FSM Shutdown function for BUSY state
6869
6870
6871 @param pWDICtx: pointer to the WLAN DAL context
6872 pEventData: pointer to the event information structure
6873
6874 @see
6875 @return Result of the function call
6876*/
6877WDI_Status
6878WDI_MainShutdownBusy
6879(
6880 WDI_ControlBlockType* pWDICtx,
6881 WDI_EventInfoType* pEventData
6882)
6883{
6884 /*--------------------------------------------------------------------
6885 Sanity Check
6886 ----------------------------------------------------------------------*/
6887 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6888 {
6889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6890 "Invalid parameters on Main Start %x %x",
6891 pWDICtx, pEventData);
6892 return WDI_STATUS_E_FAILURE;
6893 }
6894
6895 /* If you are waiting for a HAL response at this stage, you are not
6896 * going to get it. Riva is already shutdown/crashed.
6897 */
6898 wpalTimerStop(&gWDICb.wptResponseTimer);
6899
6900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6901 "Processing shutdown request in FSM: Busy state ");
6902
6903 return WDI_ProcessRequest( pWDICtx, pEventData );
6904
6905}/*WDI_MainShutdownBusy*/
6906
6907
Jeff Johnsone7245742012-09-05 17:12:55 -07006908/*=======================================================================
6909
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006911
Jeff Johnson295189b2012-06-20 16:38:30 -07006912*=======================================================================*/
6913
6914/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006915 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006916========================================================================*/
6917/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006918 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006919 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006920
6921 @param pWDICtx: pointer to the WLAN DAL context
6922 pEventData: pointer to the event information structure
6923
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 @see
6925 @return Result of the function call
6926*/
6927WDI_Status
6928WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006929(
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 WDI_ControlBlockType* pWDICtx,
6931 WDI_EventInfoType* pEventData
6932)
6933{
6934 WDI_StartReqParamsType* pwdiStartParams = NULL;
6935 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 wpt_uint16 usDataOffset = 0;
6938 wpt_uint16 usSendSize = 0;
6939
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 tHalMacStartReqMsg halStartReq;
6941 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6943
6944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 -------------------------------------------------------------------------*/
6947 if (( NULL == pEventData ) ||
6948 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6949 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6950 {
6951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 }
6956
6957 /*-----------------------------------------------------------------------
6958 Get message buffer
6959 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 pwdiStartParams->usConfigBufferLen;
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 usLen,
6965 &pSendBuffer, &usDataOffset, &usSendSize))||
6966 ( usSendSize < (usDataOffset + usLen )))
6967 {
6968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6969 "Unable to get send buffer in start req %x %x %x",
6970 pEventData, pwdiStartParams, wdiStartRspCb);
6971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 }
6974
6975 /*-----------------------------------------------------------------------
6976 Fill in the message
6977 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 halStartReq.startReqParams.driverType =
6979 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006980
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 halStartReq.startReqParams.uConfigBufferLen =
6982 pwdiStartParams->usConfigBufferLen;
6983 wpalMemoryCopy( pSendBuffer+usDataOffset,
6984 &halStartReq.startReqParams,
6985 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 usDataOffset += sizeof(halStartReq.startReqParams);
6988 wpalMemoryCopy( pSendBuffer+usDataOffset,
6989 pwdiStartParams->pConfigBuffer,
6990 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006991
6992 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006994
6995 /*Save Low Level Ind CB and associated user data - it will be used further
6996 on when an indication is coming from the lower MAC*/
6997 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006999
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007002 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7006
Jeff Johnsone7245742012-09-05 17:12:55 -07007007
Jeff Johnson295189b2012-06-20 16:38:30 -07007008}/*WDI_ProcessStartReq*/
7009
7010/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007013
7014 @param pWDICtx: pointer to the WLAN DAL context
7015 pEventData: pointer to the event information structure
7016
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 @see
7018 @return Result of the function call
7019*/
7020WDI_Status
7021WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007022(
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 WDI_ControlBlockType* pWDICtx,
7024 WDI_EventInfoType* pEventData
7025)
7026{
7027 WDI_StopReqParamsType* pwdiStopParams = NULL;
7028 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 wpt_uint16 usDataOffset = 0;
7031 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007032 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7035
7036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 -------------------------------------------------------------------------*/
7039 if (( NULL == pEventData ) ||
7040 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7041 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7042 {
7043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007046 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 }
7048
7049 /*-----------------------------------------------------------------------
7050 Get message buffer
7051 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 sizeof(halStopReq.stopReqParams),
7054 &pSendBuffer, &usDataOffset, &usSendSize))||
7055 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7056 {
7057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7058 "Unable to get send buffer in stop req %x %x %x",
7059 pEventData, pwdiStopParams, wdiStopRspCb);
7060 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007061 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 }
7063
7064 /*-----------------------------------------------------------------------
7065 Fill in the message
7066 -----------------------------------------------------------------------*/
7067 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7068 pwdiStopParams->wdiStopReason);
7069
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 wpalMemoryCopy( pSendBuffer+usDataOffset,
7071 &halStopReq.stopReqParams,
7072 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007073
7074 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076
7077 /*! TO DO: stop the data services */
7078 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7079 {
7080 /*Stop the STA Table !UT- check this logic again
7081 It is safer to do it here than on the response - because a stop is imminent*/
7082 WDI_STATableStop(pWDICtx);
7083
7084 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007085 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7086 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 {
7088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7089 "WDI Init failed to reset power state event");
7090
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007092 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 }
7094 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007095 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7096 if( eWLAN_PAL_STATUS_SUCCESS != status )
7097 {
7098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7099 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7100 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007101 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007102 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007106 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7107 WDI_SET_POWER_STATE_TIMEOUT);
7108 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 {
7110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7111 "WDI Init failed to wait on an event");
7112
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007114 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 }
7116 }
7117
7118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007122 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7123
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007124fail:
7125 // Release the message buffer so we don't leak
7126 wpalMemoryFree(pSendBuffer);
7127
7128failRequest:
7129 //WDA should have failure check to avoid the memory leak
7130 return WDI_STATUS_E_FAILURE;
7131
Jeff Johnson295189b2012-06-20 16:38:30 -07007132}/*WDI_ProcessStopReq*/
7133
7134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007135 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007137
7138 @param pWDICtx: pointer to the WLAN DAL context
7139 pEventData: pointer to the event information structure
7140
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 @see
7142 @return Result of the function call
7143*/
7144WDI_Status
7145WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007146(
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 WDI_ControlBlockType* pWDICtx,
7148 WDI_EventInfoType* pEventData
7149)
7150{
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7153
7154 /*Lock control block for cleanup*/
7155 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007156
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 /*Clear all pending request*/
7158 WDI_ClearPendingRequests(pWDICtx);
7159
7160 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007161 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007162
7163 /* Close Data transport*/
7164 /* FTM mode does not open Data Path */
7165 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7166 {
7167 WDTS_Close(pWDICtx);
7168 }
7169
7170 /*Close the STA Table !UT- check this logic again*/
7171 WDI_STATableClose(pWDICtx);
7172
7173 /*close the PAL */
7174 wptStatus = wpalClose(pWDICtx->pPALContext);
7175 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7176 {
7177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7178 "Failed to wpal Close %d", wptStatus);
7179 WDI_ASSERT(0);
7180 }
7181
7182 /*Transition back to init state*/
7183 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7184
7185 wpalMutexRelease(&pWDICtx->wptMutex);
7186
7187 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007188 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007189
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191}/*WDI_ProcessCloseReq*/
7192
7193
7194/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007196===========================================================================*/
7197
7198/**
7199 @brief Process Init Scan Request function (called when Main FSM
7200 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007201
7202 @param pWDICtx: pointer to the WLAN DAL context
7203 pEventData: pointer to the event information structure
7204
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 @see
7206 @return Result of the function call
7207*/
7208WDI_Status
7209WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007210(
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 WDI_ControlBlockType* pWDICtx,
7212 WDI_EventInfoType* pEventData
7213)
7214{
7215 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7216 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 wpt_uint16 usDataOffset = 0;
7219 wpt_uint16 usSendSize = 0;
7220 wpt_uint8 i = 0;
7221
7222 tHalInitScanReqMsg halInitScanReqMsg;
7223
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 * It shold be removed once host and riva changes are in sync*/
7226 tHalInitScanConReqMsg halInitScanConReqMsg;
7227
7228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7229
7230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 -------------------------------------------------------------------------*/
7233 if (( NULL == pEventData ) ||
7234 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7235 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7236 {
7237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 }
7242
7243#if 0
7244 wpalMutexAcquire(&pWDICtx->wptMutex);
7245 /*-----------------------------------------------------------------------
7246 Check to see if SCAN is already in progress - if so reject the req
7247 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 -----------------------------------------------------------------------*/
7250 if ( pWDICtx->bScanInProgress )
7251 {
7252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7253 "Scan is already in progress - subsequent scan is not allowed"
7254 " until the first scan completes");
7255
7256 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 }
7259
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7261 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007262
7263 wpalMutexRelease(&pWDICtx->wptMutex);
7264#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007265 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 * It shold be removed once host and riva changes are in sync*/
7269 /*-----------------------------------------------------------------------
7270 Get message buffer
7271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 sizeof(halInitScanConReqMsg.initScanParams),
7274 &pSendBuffer, &usDataOffset, &usSendSize))||
7275 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7276 {
7277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7278 "Unable to get send buffer in init scan req %x %x %x",
7279 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 }
7283
7284
7285 /*-----------------------------------------------------------------------
7286 Fill in the message
7287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7290
7291 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7292 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7293
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7300
7301 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7302 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7303
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7305 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007306
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7309
7310 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7314 }
7315
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 wpalMemoryCopy( pSendBuffer+usDataOffset,
7317 &halInitScanConReqMsg.initScanParams,
7318 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 }
7320 else
7321 {
7322 /*-----------------------------------------------------------------------
7323 Get message buffer
7324 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 sizeof(halInitScanReqMsg.initScanParams),
7327 &pSendBuffer, &usDataOffset, &usSendSize))||
7328 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7329 {
7330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7331 "Unable to get send buffer in init scan req %x %x %x",
7332 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 }
7336
7337
7338 /*-----------------------------------------------------------------------
7339 Fill in the message
7340 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7343
7344 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7345 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007351 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7353
7354 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7355 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7356
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7359
7360 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7361 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7364 }
7365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 wpalMemoryCopy( pSendBuffer+usDataOffset,
7367 &halInitScanReqMsg.initScanParams,
7368 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 }
7370
7371 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007372 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007373
7374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7379
7380}/*WDI_ProcessInitScanReq*/
7381
7382/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007383 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007384 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007385
7386 @param pWDICtx: pointer to the WLAN DAL context
7387 pEventData: pointer to the event information structure
7388
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 @see
7390 @return Result of the function call
7391*/
7392WDI_Status
7393WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007394(
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 WDI_ControlBlockType* pWDICtx,
7396 WDI_EventInfoType* pEventData
7397)
7398{
7399 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7400 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 wpt_uint16 usDataOffset = 0;
7403 wpt_uint16 usSendSize = 0;
7404
Jeff Johnsone7245742012-09-05 17:12:55 -07007405 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7407
7408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 -------------------------------------------------------------------------*/
7411 if (( NULL == pEventData ) ||
7412 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7413 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7414 {
7415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 }
7420
7421#if 0
7422 wpalMutexAcquire(&pWDICtx->wptMutex);
7423 /*-----------------------------------------------------------------------
7424 Check to see if SCAN is already in progress - start scan is only
7425 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7430 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7431 {
7432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7433 "Scan start not allowed in this state %d %d",
7434 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007435
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 }
7439
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007441
7442 wpalMutexRelease(&pWDICtx->wptMutex);
7443#endif
7444
7445 /*-----------------------------------------------------------------------
7446 Get message buffer
7447 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 sizeof(halStartScanReqMsg.startScanParams),
7450 &pSendBuffer, &usDataOffset, &usSendSize))||
7451 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7452 {
7453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7454 "Unable to get send buffer in start scan req %x %x %x",
7455 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 }
7459
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 wpalMemoryCopy( pSendBuffer+usDataOffset,
7463 &halStartScanReqMsg.startScanParams,
7464 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007465
7466 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468
7469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007470 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7474}/*WDI_ProcessStartScanReq*/
7475
7476
7477/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007480
7481 @param pWDICtx: pointer to the WLAN DAL context
7482 pEventData: pointer to the event information structure
7483
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 @see
7485 @return Result of the function call
7486*/
7487WDI_Status
7488WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007489(
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 WDI_ControlBlockType* pWDICtx,
7491 WDI_EventInfoType* pEventData
7492)
7493{
7494 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7495 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 wpt_uint16 usDataOffset = 0;
7498 wpt_uint16 usSendSize = 0;
7499
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7502
7503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 -------------------------------------------------------------------------*/
7506 if (( NULL == pEventData ) ||
7507 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7508 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7509 {
7510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 }
7515
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7517 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 * forwarded to HAL and result in hang*/
7519#if 0
7520 wpalMutexAcquire(&pWDICtx->wptMutex);
7521 /*-----------------------------------------------------------------------
7522 Check to see if SCAN is already in progress - end scan is only
7523 allowed when a scan is ongoing and the state of the scan procedure
7524 is started
7525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7528 {
7529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7530 "End start not allowed in this state %d %d",
7531 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007532
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 }
7536
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007538
7539 wpalMutexRelease(&pWDICtx->wptMutex);
7540#endif
7541
7542 /*-----------------------------------------------------------------------
7543 Get message buffer
7544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 sizeof(halEndScanReqMsg.endScanParams),
7547 &pSendBuffer, &usDataOffset, &usSendSize))||
7548 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7549 {
7550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7551 "Unable to get send buffer in start scan req %x %x %x",
7552 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007555 }
7556
7557 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 wpalMemoryCopy( pSendBuffer+usDataOffset,
7560 &halEndScanReqMsg.endScanParams,
7561 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007562
7563 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007565
7566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7571}/*WDI_ProcessEndScanReq*/
7572
7573
7574/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007577
7578 @param pWDICtx: pointer to the WLAN DAL context
7579 pEventData: pointer to the event information structure
7580
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 @see
7582 @return Result of the function call
7583*/
7584WDI_Status
7585WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007586(
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 WDI_ControlBlockType* pWDICtx,
7588 WDI_EventInfoType* pEventData
7589)
7590{
7591 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7592 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 wpt_uint16 usDataOffset = 0;
7595 wpt_uint16 usSendSize = 0;
7596 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007597 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007598 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7600
7601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 -------------------------------------------------------------------------*/
7604 if (( NULL == pEventData ) ||
7605 ( NULL == pEventData->pEventData) ||
7606 ( NULL == pEventData->pCBfnc))
7607 {
7608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 }
7613
7614 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7615 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7617 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 * forwarded to HAL and result in hang*/
7619#if 0
7620 wpalMutexAcquire(&pWDICtx->wptMutex);
7621 /*-----------------------------------------------------------------------
7622 Check to see if SCAN is already in progress
7623 Finish scan gets invoked any scan states. ie. abort scan
7624 It should be allowed in any states.
7625 -----------------------------------------------------------------------*/
7626 if ( !pWDICtx->bScanInProgress )
7627 {
7628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7629 "Finish start not allowed in this state %d",
7630 pWDICtx->bScanInProgress );
7631
7632 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 }
7635
7636 /*-----------------------------------------------------------------------
7637 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7641 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 wpalMutexRelease(&pWDICtx->wptMutex);
7643#endif
7644
7645 if ( pWDICtx->bInBmps )
7646 {
7647 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007648 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7649 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7650 {
7651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7652 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7653 WDI_ASSERT(0);
7654 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 }
7656
7657 /*-----------------------------------------------------------------------
7658 Get message buffer
7659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 sizeof(halFinishScanReqMsg.finishScanParams),
7662 &pSendBuffer, &usDataOffset, &usSendSize))||
7663 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7664 {
7665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7666 "Unable to get send buffer in start scan req %x %x %x",
7667 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 }
7671
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7674
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7677
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7680
7681 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7682 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7683
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7690
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7693
7694 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7695 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7698 }
7699
7700 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7701 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 wpalMemoryCopy( pSendBuffer+usDataOffset,
7704 &halFinishScanReqMsg.finishScanParams,
7705 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007706
7707 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007709
7710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7715}/*WDI_ProcessFinishScanReq*/
7716
7717
7718/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007720==========================================================================*/
7721/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 @brief Process BSS Join for a given Session
7723
7724 @param pWDICtx: pointer to the WLAN DAL context
7725 pEventData: pointer to the event information structure
7726
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 @see
7728 @return Result of the function call
7729*/
7730WDI_Status
7731WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007732(
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 WDI_ControlBlockType* pWDICtx,
7734 WDI_JoinReqParamsType* pwdiJoinParams,
7735 WDI_JoinRspCb wdiJoinRspCb,
7736 void* pUserData
7737)
7738{
7739 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 wpt_uint16 usDataOffset = 0;
7742 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007744
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7747
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007748 wpalMutexAcquire(&pWDICtx->wptMutex);
7749
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 /*------------------------------------------------------------------------
7751 Check to see if we have any session with this BSSID already stored, we
7752 should not
7753 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7755 pwdiJoinParams->wdiReqInfo.macBSSID,
7756 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007757
7758 if ( NULL != pBSSSes )
7759 {
7760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007761 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7762 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007763
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007764 /*reset the bAssociationInProgress otherwise the next
7765 *join request will be queued*/
7766 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7767 wpalMutexRelease(&pWDICtx->wptMutex);
7768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 }
7770
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 if ( NULL == pBSSSes )
7776 {
7777
7778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7779 "DAL has no free sessions - cannot run another join");
7780
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007781 /*reset the bAssociationInProgress otherwise the next
7782 *join request will be queued*/
7783 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 }
7787
7788 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7790 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 WDI_MAC_ADDR_LEN);
7792
7793 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007796
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 wpalMutexRelease(&pWDICtx->wptMutex);
7798
7799 /*-----------------------------------------------------------------------
7800 Get message buffer
7801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 sizeof(halJoinReqMsg.joinReqParams),
7804 &pSendBuffer, &usDataOffset, &usSendSize))||
7805 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7806 {
7807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7808 "Unable to get send buffer in join req %x %x %x",
7809 pUserData, pwdiJoinParams, wdiJoinRspCb);
7810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 }
7813
7814 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007816
7817 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 pwdiJoinParams->wdiReqInfo.macSTASelf,
7819 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007820
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7823
7824 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7825
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007826#ifdef WLAN_FEATURE_VOWIFI
7827 halJoinReqMsg.joinReqParams.maxTxPower =
7828 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7829#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7832#endif
7833
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7836 wdiSecondaryChannelOffset);
7837
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 wpalMemoryCopy( pSendBuffer+usDataOffset,
7839 &halJoinReqMsg.joinReqParams,
7840 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007841
7842 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007843 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844
7845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7849 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007850
7851}/*WDI_ProcessBSSSessionJoinReq*/
7852
7853/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007856
7857 @param pWDICtx: pointer to the WLAN DAL context
7858 pEventData: pointer to the event information structure
7859
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 @see
7861 @return Result of the function call
7862*/
7863WDI_Status
7864WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007865(
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 WDI_ControlBlockType* pWDICtx,
7867 WDI_EventInfoType* pEventData
7868)
7869{
7870 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7871 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7872 WDI_JoinRspCb wdiJoinRspCb = NULL;
7873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7874
7875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 -------------------------------------------------------------------------*/
7878 if (( NULL == pEventData ) ||
7879 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7880 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7881 {
7882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007887
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 /*-------------------------------------------------------------------------
7889 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 -------------------------------------------------------------------------*/
7892 wpalMutexAcquire(&pWDICtx->wptMutex);
7893
7894 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7895 {
7896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7897 "Association is currently in progress, queueing new join req");
7898
7899 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 pwdiJoinParams->wdiReqInfo.macBSSID);
7902
7903 wpalMutexRelease(&pWDICtx->wptMutex);
7904
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 }
7907
7908 /*Starting a new association */
7909 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7910 wpalMutexRelease(&pWDICtx->wptMutex);
7911
7912 /*Process the Join Request*/
7913 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7914 wdiJoinRspCb,pEventData->pUserData);
7915
7916}/*WDI_ProcessJoinReq*/
7917
7918
7919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007922
7923 @param pWDICtx: pointer to the WLAN DAL context
7924 pEventData: pointer to the event information structure
7925
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 @see
7927 @return Result of the function call
7928*/
7929WDI_Status
7930WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007931(
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 WDI_ControlBlockType* pWDICtx,
7933 WDI_EventInfoType* pEventData
7934)
7935{
7936 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7937 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 wpt_uint16 uMsgSize = 0;
7941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 wpt_uint16 usDataOffset = 0;
7943 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7948
7949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 -------------------------------------------------------------------------*/
7952 if (( NULL == pEventData ) ||
7953 ( NULL == pEventData->pEventData ) ||
7954 ( NULL == pEventData->pCBfnc ))
7955 {
7956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 }
7961
7962 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7963 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7964 /*-------------------------------------------------------------------------
7965 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 -------------------------------------------------------------------------*/
7968 wpalMutexAcquire(&pWDICtx->wptMutex);
7969
7970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7974 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7975 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007976
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 {
7979#ifdef WLAN_FEATURE_VOWIFI_11R
7980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 if ( NULL == pBSSSes )
7985 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007986
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7988 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007989
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007993
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7996 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007998
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8002#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 * Request in case of IBSS*/
8005 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8006 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8007 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8008 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8009 {
8010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 if ( NULL == pBSSSes )
8015 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008016
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8018 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008019
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008023
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8026 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008028
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8032 }
8033 else
8034 {
8035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8037 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8038 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8039
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 /* for IBSS testing */
8041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 }
8044#endif
8045 }
8046
8047 /*------------------------------------------------------------------------
8048 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 ------------------------------------------------------------------------*/
8051 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8052 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8054 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8055 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8056 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008057
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008059
8060 wpalMutexRelease(&pWDICtx->wptMutex);
8061
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 }
8064
8065 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8067 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 sizeof(pWDICtx->wdiCachedConfigBssReq));
8069
8070 wpalMutexRelease(&pWDICtx->wptMutex);
8071
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8073#ifdef WLAN_FEATURE_11AC
8074 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008075 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 else
8077#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008078 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008079
8080 /*-----------------------------------------------------------------------
8081 Get message buffer
8082 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8085 ( usSendSize < (usDataOffset + uMsgSize )))
8086 {
8087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8088 "Unable to get send buffer in config bss req %x %x %x",
8089 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 }
8093
8094 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008095#ifdef WLAN_FEATURE_11AC
8096 if (WDI_getFwWlanFeatCaps(DOT11AC))
8097 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8098 &pwdiConfigBSSParams->wdiReqInfo);
8099 else
8100#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 &pwdiConfigBSSParams->wdiReqInfo);
8103
8104 /* Need to fill in the STA Index to invalid, since at this point we have not
8105 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008107
8108 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8110
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008111#ifdef WLAN_FEATURE_11AC
8112 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8113 wpalMemoryCopy( pSendBuffer+usDataOffset,
8114 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8115 uMsgSize);
8116 }else
8117#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008118 {
8119 if ( uMsgSize <= sizeof(tConfigBssParams) )
8120 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008121 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008122 &halConfigBssReqMsg.uBssParams.configBssParams,
8123 uMsgSize);
8124 }
8125 else
8126 {
8127 return WDI_STATUS_E_FAILURE;
8128 }
8129 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008130
8131 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008133
8134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8138 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 WDI_CONFIG_BSS_RESP);
8140
8141}/*WDI_ProcessConfigBSSReq*/
8142
8143
8144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008147
8148 @param pWDICtx: pointer to the WLAN DAL context
8149 pEventData: pointer to the event information structure
8150
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 @see
8152 @return Result of the function call
8153*/
8154WDI_Status
8155WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008156(
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 WDI_ControlBlockType* pWDICtx,
8158 WDI_EventInfoType* pEventData
8159)
8160{
8161 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8162 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 wpt_uint16 usDataOffset = 0;
8167 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8172
8173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 -------------------------------------------------------------------------*/
8176 if (( NULL == pEventData ) ||
8177 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8178 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8179 {
8180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 }
8185
8186 /*-------------------------------------------------------------------------
8187 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 -------------------------------------------------------------------------*/
8190 wpalMutexAcquire(&pWDICtx->wptMutex);
8191
8192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8196 pwdiDelBSSParams->ucBssIdx,
8197 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008198
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 {
8201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 "%s: BSS does not yet exist. ucBssIdx %d",
8203 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008204
8205 wpalMutexRelease(&pWDICtx->wptMutex);
8206
8207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008209
8210 /*------------------------------------------------------------------------
8211 Check if this BSS is being currently processed or queued,
8212 if queued - queue the new request as well
8213 ------------------------------------------------------------------------*/
8214 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8217 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8218 __func__, pwdiDelBSSParams->ucBssIdx);
8219
8220 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8221
8222 wpalMutexRelease(&pWDICtx->wptMutex);
8223
8224 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008226
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 /*-----------------------------------------------------------------------
8228 If we receive a Del BSS request for an association that is already in
8229 progress, it indicates that the assoc has failed => we no longer have
8230 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 -----------------------------------------------------------------------*/
8233 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8234 {
8235 /*We can switch to false here because even if a subsequent Join comes in
8236 it will only be processed when DAL transitions out of BUSY state which
8237 happens when the Del BSS request comes */
8238 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8239
8240 /*Former association is complete - prepare next pending assoc for
8241 processing */
8242 WDI_DequeueAssocRequest(pWDICtx);
8243 }
8244
8245 wpalMutexRelease(&pWDICtx->wptMutex);
8246 /*-----------------------------------------------------------------------
8247 Get message buffer
8248 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 sizeof(halBssReqMsg.deleteBssParams),
8251 &pSendBuffer, &usDataOffset, &usSendSize))||
8252 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8253 {
8254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8255 "Unable to get send buffer in start req %x %x %x",
8256 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 }
8260
8261 /*Fill in the message request structure*/
8262
8263 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008264 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 wpalMemoryCopy( pSendBuffer+usDataOffset,
8267 &halBssReqMsg.deleteBssParams,
8268 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008269
8270 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008272
Jeff Johnsone7245742012-09-05 17:12:55 -07008273
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8279
Jeff Johnsone7245742012-09-05 17:12:55 -07008280
Jeff Johnson295189b2012-06-20 16:38:30 -07008281}/*WDI_ProcessDelBSSReq*/
8282
8283/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008286
8287 @param pWDICtx: pointer to the WLAN DAL context
8288 pEventData: pointer to the event information structure
8289
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 @see
8291 @return Result of the function call
8292*/
8293WDI_Status
8294WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008295(
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 WDI_ControlBlockType* pWDICtx,
8297 WDI_EventInfoType* pEventData
8298)
8299{
8300 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8301 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 wpt_uint16 usDataOffset = 0;
8306 wpt_uint16 usSendSize = 0;
8307 wpt_uint16 uMsgSize = 0;
8308 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8313
8314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 -------------------------------------------------------------------------*/
8317 if (( NULL == pEventData ) ||
8318 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8319 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8320 {
8321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 }
8326
8327 /*-------------------------------------------------------------------------
8328 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 -------------------------------------------------------------------------*/
8331 wpalMutexAcquire(&pWDICtx->wptMutex);
8332
8333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8337 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8338 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008339
8340 if ( NULL == pBSSSes )
8341 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8343 "%s: Association sequence for this BSS does not yet exist - "
8344 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8345 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008346
8347 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 }
8350
8351 /*------------------------------------------------------------------------
8352 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 ------------------------------------------------------------------------*/
8355 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8356 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8358 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8359 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008360
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008362
8363 wpalMutexRelease(&pWDICtx->wptMutex);
8364
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 }
8367
8368 /*-----------------------------------------------------------------------
8369 If Post Assoc was not yet received - the current association must
8370 be in progress
8371 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8374 {
8375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8376 "Association sequence for this BSS association no longer in "
8377 "progress - not allowed");
8378
8379 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 }
8382
8383 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 -----------------------------------------------------------------------*/
8386 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8387 {
8388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8389 "Post Assoc not allowed before JOIN - failing request");
8390
8391 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 }
8394
8395 wpalMutexRelease(&pWDICtx->wptMutex);
8396
8397 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8398 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8399 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008403 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8404 ( usSendSize < (usDataOffset + uMsgSize )))
8405 {
8406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8407 "Unable to get send buffer in start req %x %x %x",
8408 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 }
8412
8413 /*Copy the STA parameters */
8414 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8415 &pwdiPostAssocParams->wdiSTAParams );
8416
8417 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 WDI_STATableFindStaidByAddr(pWDICtx,
8420 pwdiPostAssocParams->wdiSTAParams.macSTA,
8421 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8422 {
8423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8424 "This station does not exist in the WDI Station Table %d");
8425 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008426 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 }
8429
8430 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 pBSSSes->ucBSSIdx;
8433
8434 /*Copy the BSS parameters */
8435 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8436 &pwdiPostAssocParams->wdiBSSParams);
8437
8438 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 WDI_STATableFindStaidByAddr(pWDICtx,
8441 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 {
8444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8445 "This station does not exist in the WDI Station Table %d");
8446 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008447 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 }
8450
8451 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 pBSSSes->ucBSSIdx;
8454
Jeff Johnsone7245742012-09-05 17:12:55 -07008455
8456 wpalMemoryCopy( pSendBuffer+usDataOffset,
8457 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8458 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008459
8460 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8461
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8463 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8464 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008465
Jeff Johnsone7245742012-09-05 17:12:55 -07008466
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008469
Jeff Johnsone7245742012-09-05 17:12:55 -07008470
8471 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008474
8475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8480
Jeff Johnsone7245742012-09-05 17:12:55 -07008481
Jeff Johnson295189b2012-06-20 16:38:30 -07008482}/*WDI_ProcessPostAssocReq*/
8483
8484/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008487
8488 @param pWDICtx: pointer to the WLAN DAL context
8489 pEventData: pointer to the event information structure
8490
Jeff Johnson295189b2012-06-20 16:38:30 -07008491 @see
8492 @return Result of the function call
8493*/
8494WDI_Status
8495WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008496(
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 WDI_ControlBlockType* pWDICtx,
8498 WDI_EventInfoType* pEventData
8499)
8500{
8501 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8502 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 wpt_uint16 usDataOffset = 0;
8507 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8510
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8513
8514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 -------------------------------------------------------------------------*/
8517 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8518 ( NULL == pEventData->pCBfnc ))
8519 {
8520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 }
8525
8526 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8527 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8528 /*-------------------------------------------------------------------------
8529 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 -------------------------------------------------------------------------*/
8532 wpalMutexAcquire(&pWDICtx->wptMutex);
8533
8534 /*------------------------------------------------------------------------
8535 Find the BSS for which the request is made and identify WDI session
8536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8538 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 &macBSSID))
8540 {
8541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8542 "This station does not exist in the WDI Station Table %d");
8543 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 }
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8548 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8551 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8552 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008553
8554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 }
8557
8558 /*------------------------------------------------------------------------
8559 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 ------------------------------------------------------------------------*/
8562 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8563 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8565 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8566 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008567
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 }
8572
8573 wpalMutexRelease(&pWDICtx->wptMutex);
8574 /*-----------------------------------------------------------------------
8575 Get message buffer
8576 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 sizeof(halDelStaReqMsg.delStaParams),
8579 &pSendBuffer, &usDataOffset, &usSendSize))||
8580 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8581 {
8582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8583 "Unable to get send buffer in start req %x %x %x",
8584 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 }
8588
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8590 wpalMemoryCopy( pSendBuffer+usDataOffset,
8591 &halDelStaReqMsg.delStaParams,
8592 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008593
8594 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008596
8597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8602
8603}/*WDI_ProcessDelSTAReq*/
8604
8605
8606/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008608==========================================================================*/
8609/**
8610 @brief Process Set BSS Key Request function (called when Main FSM
8611 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008612
8613 @param pWDICtx: pointer to the WLAN DAL context
8614 pEventData: pointer to the event information structure
8615
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 @see
8617 @return Result of the function call
8618*/
8619WDI_Status
8620WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008621(
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 WDI_ControlBlockType* pWDICtx,
8623 WDI_EventInfoType* pEventData
8624)
8625{
8626 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8627 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 wpt_uint16 usDataOffset = 0;
8632 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8635 wpt_uint8 keyIndex = 0;
8636
8637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8638
8639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 -------------------------------------------------------------------------*/
8642 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8643 ( NULL == pEventData->pCBfnc ))
8644 {
8645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 }
8650
8651 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8652 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8653 /*-------------------------------------------------------------------------
8654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 -------------------------------------------------------------------------*/
8657 wpalMutexAcquire(&pWDICtx->wptMutex);
8658
8659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8663 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8664 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008665
Jeff Johnsone7245742012-09-05 17:12:55 -07008666 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 {
8668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8670 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008671
8672 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 }
8675
8676 /*------------------------------------------------------------------------
8677 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 ------------------------------------------------------------------------*/
8680 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8681 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8683 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8684 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008685
Jeff Johnsone7245742012-09-05 17:12:55 -07008686 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 }
8690
8691
8692 wpalMutexRelease(&pWDICtx->wptMutex);
8693 /*-----------------------------------------------------------------------
8694 Get message buffer
8695 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8698 &pSendBuffer, &usDataOffset, &usSendSize))||
8699 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8700 {
8701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8702 "Unable to get send buffer in set bss key req %x %x %x",
8703 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 }
8707
8708 /*-----------------------------------------------------------------------
8709 Copy the Key parameters into the HAL message
8710 -----------------------------------------------------------------------*/
8711
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008713
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8716
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008718 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8719
8720 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8721 keyIndex++)
8722 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8725 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8726 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8727 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8728 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8729 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8736 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 WDI_MAX_KEY_LENGTH);
8739 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008740
8741 wpalMemoryCopy( pSendBuffer+usDataOffset,
8742 &halSetBssKeyReqMsg.setBssKeyParams,
8743 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008744
8745 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008747
8748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8752 wdiSetBSSKeyRspCb, pEventData->pUserData,
8753 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008754
8755}/*WDI_ProcessSetBssKeyReq*/
8756
8757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008760
8761 @param pWDICtx: pointer to the WLAN DAL context
8762 pEventData: pointer to the event information structure
8763
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 @see
8765 @return Result of the function call
8766*/
8767WDI_Status
8768WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008769(
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 WDI_ControlBlockType* pWDICtx,
8771 WDI_EventInfoType* pEventData
8772)
8773{
8774 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8775 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 wpt_uint16 usDataOffset = 0;
8780 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8784
8785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 -------------------------------------------------------------------------*/
8788 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8789 ( NULL == pEventData->pCBfnc ))
8790 {
8791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 }
8796
8797 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8798 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8799 /*-------------------------------------------------------------------------
8800 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 -------------------------------------------------------------------------*/
8803 wpalMutexAcquire(&pWDICtx->wptMutex);
8804
8805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8809 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8810 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 {
8814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8816 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008817
8818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 }
8821
8822 /*------------------------------------------------------------------------
8823 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 ------------------------------------------------------------------------*/
8826 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8827 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8829 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8830 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 }
8836
8837
8838 wpalMutexRelease(&pWDICtx->wptMutex);
8839
8840 /*-----------------------------------------------------------------------
8841 Get message buffer
8842 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8845 &pSendBuffer, &usDataOffset, &usSendSize))||
8846 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8847 {
8848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8849 "Unable to get send buffer in set bss key req %x %x %x",
8850 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 }
8854 /*-----------------------------------------------------------------------
8855 Copy the Key parameters into the HAL message
8856 -----------------------------------------------------------------------*/
8857 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8858
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8861
8862 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8863
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8866
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 wpalMemoryCopy( pSendBuffer+usDataOffset,
8868 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8869 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008870
8871 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008873
8874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008880}/*WDI_ProcessRemoveBssKeyReq*/
8881
8882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008885
8886 @param pWDICtx: pointer to the WLAN DAL context
8887 pEventData: pointer to the event information structure
8888
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 @see
8890 @return Result of the function call
8891*/
8892WDI_Status
8893WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008894(
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 WDI_ControlBlockType* pWDICtx,
8896 WDI_EventInfoType* pEventData
8897)
8898{
8899 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8900 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8901 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 wpt_uint16 usDataOffset = 0;
8904 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8909 wpt_uint8 keyIndex = 0;
8910
8911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8912
8913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 -------------------------------------------------------------------------*/
8916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8917 ( NULL == pEventData->pCBfnc ))
8918 {
8919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 }
8924
8925 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8926 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8927 /*-------------------------------------------------------------------------
8928 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 -------------------------------------------------------------------------*/
8931 wpalMutexAcquire(&pWDICtx->wptMutex);
8932
8933 /*------------------------------------------------------------------------
8934 Find the BSS for which the request is made and identify WDI session
8935 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8937 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 &macBSSID))
8939 {
8940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8941 "This station does not exist in the WDI Station Table %d");
8942 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008944 }
8945
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8947 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8950 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8951 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008952
8953 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008956
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 /*------------------------------------------------------------------------
8958 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 ------------------------------------------------------------------------*/
8961 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8962 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8964 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8965 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008966
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 }
8971
8972
8973 wpalMutexRelease(&pWDICtx->wptMutex);
8974 /*-----------------------------------------------------------------------
8975 Get message buffer
8976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8979 &pSendBuffer, &usDataOffset, &usSendSize))||
8980 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8981 {
8982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8983 "Unable to get send buffer in set bss key req %x %x %x",
8984 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 }
8988 /*-----------------------------------------------------------------------
8989 Copy the STA Key parameters into the HAL message
8990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8993
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8996
8997 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8998
8999 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9000
9001 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9002
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9004 keyIndex++)
9005 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9008 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9009 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9010 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9011 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9012 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9019 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 WDI_MAX_KEY_LENGTH);
9022 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009023
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 wpalMemoryCopy( pSendBuffer+usDataOffset,
9025 &halSetStaKeyReqMsg.setStaKeyParams,
9026 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009027
9028 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009030
9031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9035 wdiSetSTAKeyRspCb, pEventData->pUserData,
9036 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009037
9038}/*WDI_ProcessSetSTAKeyReq*/
9039
9040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009043
9044 @param pWDICtx: pointer to the WLAN DAL context
9045 pEventData: pointer to the event information structure
9046
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 @see
9048 @return Result of the function call
9049*/
9050WDI_Status
9051WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009052(
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 WDI_ControlBlockType* pWDICtx,
9054 WDI_EventInfoType* pEventData
9055)
9056{
9057 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9058 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 wpt_uint16 usDataOffset = 0;
9062 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 wpt_macAddr macBSSID;
9065 wpt_uint8 ucCurrentBSSSesIdx;
9066 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9068
9069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 -------------------------------------------------------------------------*/
9072 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9073 ( NULL == pEventData->pCBfnc ))
9074 {
9075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 }
9080
9081 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9082 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9083 /*-------------------------------------------------------------------------
9084 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 -------------------------------------------------------------------------*/
9087 wpalMutexAcquire(&pWDICtx->wptMutex);
9088
9089 /*------------------------------------------------------------------------
9090 Find the BSS for which the request is made and identify WDI session
9091 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9093 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 &macBSSID))
9095 {
9096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9097 "This station does not exist in the WDI Station Table %d");
9098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 }
9101
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9103 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9106 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9107 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009108
9109 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009112
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 /*------------------------------------------------------------------------
9114 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 ------------------------------------------------------------------------*/
9117 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9118 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9120 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9121 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009122
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 }
9127
9128
9129
9130 wpalMutexRelease(&pWDICtx->wptMutex);
9131 /*-----------------------------------------------------------------------
9132 Get message buffer
9133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9136 &pSendBuffer, &usDataOffset, &usSendSize))||
9137 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9138 {
9139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9140 "Unable to get send buffer in set bss key req %x %x %x",
9141 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 }
9145
9146 /*-----------------------------------------------------------------------
9147 Copy the Key parameters into the HAL message
9148 -----------------------------------------------------------------------*/
9149
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9152
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9155
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9158
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9161
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 wpalMemoryCopy( pSendBuffer+usDataOffset,
9163 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9164 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009165
9166 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009168
9169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009175
9176}/*WDI_ProcessRemoveSTAKeyReq*/
9177
9178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009181
9182 @param pWDICtx: pointer to the WLAN DAL context
9183 pEventData: pointer to the event information structure
9184
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 @see
9186 @return Result of the function call
9187*/
9188WDI_Status
9189WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009190(
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 WDI_ControlBlockType* pWDICtx,
9192 WDI_EventInfoType* pEventData
9193)
9194{
9195 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9196 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 wpt_uint16 usDataOffset = 0;
9200 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9205 wpt_uint8 keyIndex = 0;
9206
9207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9208
9209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 -------------------------------------------------------------------------*/
9212 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9213 ( NULL == pEventData->pCBfnc ))
9214 {
9215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
9220
9221 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9222 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9223 /*-------------------------------------------------------------------------
9224 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 -------------------------------------------------------------------------*/
9227 wpalMutexAcquire(&pWDICtx->wptMutex);
9228
9229 /*------------------------------------------------------------------------
9230 Find the BSS for which the request is made and identify WDI session
9231 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9233 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 &macBSSID))
9235 {
9236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9237 "This station does not exist in the WDI Station Table %d");
9238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 }
9241
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9243 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 {
9245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9247 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009248
9249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009252
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 /*------------------------------------------------------------------------
9254 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 ------------------------------------------------------------------------*/
9257 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9258 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9260 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9261 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009262
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 }
9267
9268
9269 wpalMutexRelease(&pWDICtx->wptMutex);
9270 /*-----------------------------------------------------------------------
9271 Get message buffer
9272 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9275 &pSendBuffer, &usDataOffset, &usSendSize))||
9276 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9277 {
9278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9279 "Unable to get send buffer in set bss key req %x %x %x",
9280 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 }
9284 /*-----------------------------------------------------------------------
9285 Copy the STA Key parameters into the HAL message
9286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9289
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9292
9293 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9294
9295 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9296
9297 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9298
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9300 keyIndex++)
9301 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9304 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9305 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9306 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9307 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9308 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9315 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 WDI_MAX_KEY_LENGTH);
9318 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009319
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 wpalMemoryCopy( pSendBuffer+usDataOffset,
9321 &halSetStaKeyReqMsg.setStaKeyParams,
9322 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009323
9324 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009326
9327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9331 wdiSetSTAKeyRspCb, pEventData->pUserData,
9332 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
9334}/*WDI_ProcessSetSTABcastKeyReq*/
9335
9336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009339
9340 @param pWDICtx: pointer to the WLAN DAL context
9341 pEventData: pointer to the event information structure
9342
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 @see
9344 @return Result of the function call
9345*/
9346WDI_Status
9347WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009348(
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 WDI_ControlBlockType* pWDICtx,
9350 WDI_EventInfoType* pEventData
9351)
9352{
9353 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9354 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9355 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 wpt_uint16 usDataOffset = 0;
9358 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 wpt_macAddr macBSSID;
9361 wpt_uint8 ucCurrentBSSSesIdx;
9362 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9364
9365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 -------------------------------------------------------------------------*/
9368 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9369 ( NULL == pEventData->pCBfnc ))
9370 {
9371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 }
9376
9377 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9378 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9379 /*-------------------------------------------------------------------------
9380 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -------------------------------------------------------------------------*/
9383 wpalMutexAcquire(&pWDICtx->wptMutex);
9384
9385 /*------------------------------------------------------------------------
9386 Find the BSS for which the request is made and identify WDI session
9387 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9389 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 &macBSSID))
9391 {
9392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9393 "This station does not exist in the WDI Station Table %d");
9394 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 }
9397
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9399 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9402 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9403 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009404
9405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009406 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009407 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009408
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 /*------------------------------------------------------------------------
9410 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 ------------------------------------------------------------------------*/
9413 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9414 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9416 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9417 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009418
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 }
9423
9424
9425
9426 wpalMutexRelease(&pWDICtx->wptMutex);
9427 /*-----------------------------------------------------------------------
9428 Get message buffer
9429 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9432 &pSendBuffer, &usDataOffset, &usSendSize))||
9433 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9434 {
9435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9436 "Unable to get send buffer in set bss key req %x %x %x",
9437 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 }
9441
9442 /*-----------------------------------------------------------------------
9443 Copy the Key parameters into the HAL message
9444 -----------------------------------------------------------------------*/
9445
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9448
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9451
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9454
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9457
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 wpalMemoryCopy( pSendBuffer+usDataOffset,
9459 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9460 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009461
9462 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464
9465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009471
9472}/*WDI_ProcessRemoveSTABcastKeyReq*/
9473
9474/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009476==========================================================================*/
9477/**
9478 @brief Process Add TSpec Request function (called when Main FSM
9479 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009480
9481 @param pWDICtx: pointer to the WLAN DAL context
9482 pEventData: pointer to the event information structure
9483
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 @see
9485 @return Result of the function call
9486*/
9487WDI_Status
9488WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009489(
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 WDI_ControlBlockType* pWDICtx,
9491 WDI_EventInfoType* pEventData
9492)
9493{
9494 WDI_AddTSReqParamsType* pwdiAddTSParams;
9495 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 wpt_uint16 usDataOffset = 0;
9500 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 wpt_macAddr macBSSID;
9503 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009504
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9506
9507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 -------------------------------------------------------------------------*/
9510 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9511 ( NULL == pEventData->pCBfnc ))
9512 {
9513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 }
9518
9519 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9520 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9521 /*-------------------------------------------------------------------------
9522 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 -------------------------------------------------------------------------*/
9525 wpalMutexAcquire(&pWDICtx->wptMutex);
9526
9527 /*------------------------------------------------------------------------
9528 Find the BSS for which the request is made and identify WDI session
9529 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9531 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 &macBSSID))
9533 {
9534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9535 "This station does not exist in the WDI Station Table %d");
9536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 }
9539
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9541 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9544 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9545 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009546
9547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009550
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 /*------------------------------------------------------------------------
9552 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 ------------------------------------------------------------------------*/
9555 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9556 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9558 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9559 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 }
9565
9566 wpalMutexRelease(&pWDICtx->wptMutex);
9567 /*-----------------------------------------------------------------------
9568 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9572 sizeof(halAddTsParams),
9573 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 &usSendSize))||
9575 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9576 {
9577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9578 "Unable to get send buffer in set bss key req %x %x %x",
9579 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583
9584 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9585 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9586
9587 //TSPEC IE
9588 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9589 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009599 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9620
9621 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9636
9637 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9642
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 wpalMemoryCopy( pSendBuffer+usDataOffset,
9644 &halAddTsParams,
9645 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009646
9647 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649
9650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009656}/*WDI_ProcessAddTSpecReq*/
9657
9658
9659/**
9660 @brief Process Del TSpec Request function (called when Main FSM
9661 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009662
9663 @param pWDICtx: pointer to the WLAN DAL context
9664 pEventData: pointer to the event information structure
9665
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 @see
9667 @return Result of the function call
9668*/
9669WDI_Status
9670WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009671(
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 WDI_ControlBlockType* pWDICtx,
9673 WDI_EventInfoType* pEventData
9674)
9675{
9676 WDI_DelTSReqParamsType* pwdiDelTSParams;
9677 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 wpt_uint16 usDataOffset = 0;
9682 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9685
9686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 -------------------------------------------------------------------------*/
9689 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9690 ( NULL == pEventData->pCBfnc ))
9691 {
9692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009693 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 }
9697
9698 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9699 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9700
9701 /*-------------------------------------------------------------------------
9702 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 -------------------------------------------------------------------------*/
9705 wpalMutexAcquire(&pWDICtx->wptMutex);
9706
9707 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9711 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9712 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009713
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9717 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9718 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9719
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 }
9723
9724 /*------------------------------------------------------------------------
9725 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 ------------------------------------------------------------------------*/
9728 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9729 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9731 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9732 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009733
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 }
9738
9739
9740 wpalMutexRelease(&pWDICtx->wptMutex);
9741 /*-----------------------------------------------------------------------
9742 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9747 &pSendBuffer, &usDataOffset, &usSendSize))||
9748 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9749 {
9750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9751 "Unable to get send buffer in set bss key req %x %x %x",
9752 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 }
9756
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 wpalMemoryCopy( pSendBuffer+usDataOffset,
9758 &pwdiDelTSParams->wdiDelTSInfo,
9759 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009760
9761 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009763
9764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9768 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009769}/*WDI_ProcessDelTSpecReq*/
9770
9771/**
9772 @brief Process Update EDCA Params Request function (called when
9773 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009774
9775 @param pWDICtx: pointer to the WLAN DAL context
9776 pEventData: pointer to the event information structure
9777
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 @see
9779 @return Result of the function call
9780*/
9781WDI_Status
9782WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009783(
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 WDI_ControlBlockType* pWDICtx,
9785 WDI_EventInfoType* pEventData
9786)
9787{
9788 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9789 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 wpt_uint16 usDataOffset = 0;
9794 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9797
9798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 -------------------------------------------------------------------------*/
9801 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9802 ( NULL == pEventData->pCBfnc ))
9803 {
9804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009808 }
9809
9810 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9811 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9812 /*-------------------------------------------------------------------------
9813 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 -------------------------------------------------------------------------*/
9816 wpalMutexAcquire(&pWDICtx->wptMutex);
9817
9818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9822 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9823 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009824
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 {
9827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9829 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009830
9831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
9835 /*------------------------------------------------------------------------
9836 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 ------------------------------------------------------------------------*/
9839 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9840 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9842 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9843 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 }
9849
9850
9851 wpalMutexRelease(&pWDICtx->wptMutex);
9852 /*-----------------------------------------------------------------------
9853 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9858 &pSendBuffer, &usDataOffset, &usSendSize))||
9859 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9860 {
9861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9862 "Unable to get send buffer in set bss key req %x %x %x",
9863 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 }
9867
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 wpalMemoryCopy( pSendBuffer+usDataOffset,
9869 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9870 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009871
9872 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009874
9875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9879 wdiUpdateEDCARspCb, pEventData->pUserData,
9880 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009881}/*WDI_ProcessUpdateEDCAParamsReq*/
9882
9883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009886
9887 @param pWDICtx: pointer to the WLAN DAL context
9888 pEventData: pointer to the event information structure
9889
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 @see
9891 @return Result of the function call
9892*/
9893WDI_Status
9894WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009895(
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 WDI_ControlBlockType* pWDICtx,
9897 WDI_EventInfoType* pEventData
9898)
9899{
9900 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9901 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 wpt_uint16 usDataOffset = 0;
9906 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 wpt_macAddr macBSSID;
9909
9910 tAddBASessionReqMsg halAddBASessionReq;
9911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9912
9913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 -------------------------------------------------------------------------*/
9916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9917 ( NULL == pEventData->pCBfnc ))
9918 {
9919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 }
9924
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9929 /*-------------------------------------------------------------------------
9930 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 -------------------------------------------------------------------------*/
9933 wpalMutexAcquire(&pWDICtx->wptMutex);
9934
9935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9939 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 &macBSSID))
9941 {
9942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9943 "This station does not exist in the WDI Station Table %d");
9944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 }
9947
9948
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009950
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9954 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9955 __func__, MAC_ADDR_ARRAY(macBSSID));
9956
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 }
9960
9961 /*------------------------------------------------------------------------
9962 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 ------------------------------------------------------------------------*/
9965 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9966 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9968 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9969 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009970
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 }
9975
9976
9977 wpalMutexRelease(&pWDICtx->wptMutex);
9978 /*-----------------------------------------------------------------------
9979 Get message buffer
9980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9982 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 sizeof(halAddBASessionReq.addBASessionParams),
9984 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9987 {
9988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9989 "Unable to get send buffer in Add BA session req %x %x %x",
9990 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 }
9994
9995 halAddBASessionReq.addBASessionParams.staIdx =
9996 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9997 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9998 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9999 WDI_MAC_ADDR_LEN);
10000 halAddBASessionReq.addBASessionParams.baTID =
10001 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10002 halAddBASessionReq.addBASessionParams.baPolicy =
10003 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10004 halAddBASessionReq.addBASessionParams.baBufferSize =
10005 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10006 halAddBASessionReq.addBASessionParams.baTimeout =
10007 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10008 halAddBASessionReq.addBASessionParams.baSSN =
10009 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10010 halAddBASessionReq.addBASessionParams.baDirection =
10011 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10012
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 wpalMemoryCopy( pSendBuffer+usDataOffset,
10014 &halAddBASessionReq.addBASessionParams,
10015 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010016
10017 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
10020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10024 wdiAddBASessionRspCb, pEventData->pUserData,
10025 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010026}/*WDI_ProcessAddBASessionReq*/
10027
10028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010031
10032 @param pWDICtx: pointer to the WLAN DAL context
10033 pEventData: pointer to the event information structure
10034
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 @see
10036 @return Result of the function call
10037*/
10038WDI_Status
10039WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010040(
Jeff Johnson295189b2012-06-20 16:38:30 -070010041 WDI_ControlBlockType* pWDICtx,
10042 WDI_EventInfoType* pEventData
10043)
10044{
10045 WDI_DelBAReqParamsType* pwdiDelBAParams;
10046 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 wpt_uint16 usDataOffset = 0;
10051 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 wpt_macAddr macBSSID;
10054 tDelBAParams halDelBAparam;
10055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10056
10057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 -------------------------------------------------------------------------*/
10060 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10061 ( NULL == pEventData->pCBfnc ))
10062 {
10063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010067 }
10068
10069 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10070 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10071 /*-------------------------------------------------------------------------
10072 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010073 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 -------------------------------------------------------------------------*/
10075 wpalMutexAcquire(&pWDICtx->wptMutex);
10076
10077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10081 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010082 &macBSSID))
10083 {
10084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10085 "This station does not exist in the WDI Station Table %d");
10086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 }
10089
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010091
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10095 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10096 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010097
10098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 }
10101
10102 /*------------------------------------------------------------------------
10103 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 ------------------------------------------------------------------------*/
10106 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10107 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10109 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10110 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 }
10116
10117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 sizeof(halDelBAparam),
10120 &pSendBuffer, &usDataOffset, &usSendSize))||
10121 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10122 {
10123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10124 "Unable to get send buffer for DEL BA req %x %x %x",
10125 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 }
10129
10130 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10131 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10132 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10133
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 wpalMemoryCopy( pSendBuffer+usDataOffset,
10135 &halDelBAparam,
10136 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010137
10138 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010140
10141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10145 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010146}/*WDI_ProcessDelBAReq*/
10147
10148#ifdef FEATURE_WLAN_CCX
10149
10150WDI_Status
10151WDI_ProcessTSMStatsReq
10152(
10153 WDI_ControlBlockType* pWDICtx,
10154 WDI_EventInfoType* pEventData
10155)
10156{
10157 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10158 WDI_TsmRspCb wdiTSMRspCb;
10159 wpt_uint8 ucCurrentBSSSesIdx = 0;
10160 WDI_BSSSessionType* pBSSSes = NULL;
10161 wpt_uint8* pSendBuffer = NULL;
10162 wpt_uint16 usDataOffset = 0;
10163 wpt_uint16 usSendSize = 0;
10164 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10165 tTsmStatsParams halTsmStatsReqParams = {0};
10166
10167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10168
10169 /*-------------------------------------------------------------------------
10170 Sanity check
10171 -------------------------------------------------------------------------*/
10172 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10173 ( NULL == pEventData->pCBfnc ))
10174 {
10175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 WDI_ASSERT(0);
10178 return WDI_STATUS_E_FAILURE;
10179 }
10180
10181 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10182 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10183 /*-------------------------------------------------------------------------
10184 Check to see if we are in the middle of an association, if so queue, if
10185 not it means it is free to process request
10186 -------------------------------------------------------------------------*/
10187 wpalMutexAcquire(&pWDICtx->wptMutex);
10188
10189 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10190 if ( NULL == pBSSSes )
10191 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10193 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10194 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010195
10196 wpalMutexRelease(&pWDICtx->wptMutex);
10197 return WDI_STATUS_E_NOT_ALLOWED;
10198 }
10199
10200 /*------------------------------------------------------------------------
10201 Check if this BSS is being currently processed or queued,
10202 if queued - queue the new request as well
10203 ------------------------------------------------------------------------*/
10204 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10205 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10207 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10208 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010209
10210 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10211 wpalMutexRelease(&pWDICtx->wptMutex);
10212 return wdiStatus;
10213 }
10214
10215 wpalMutexRelease(&pWDICtx->wptMutex);
10216 /*-----------------------------------------------------------------------
10217 Get message buffer
10218 ! TO DO : proper conversion into the HAL Message Request Format
10219 -----------------------------------------------------------------------*/
10220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10221 sizeof(halTsmStatsReqParams),
10222 &pSendBuffer, &usDataOffset, &usSendSize))||
10223 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10224 {
10225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10226 "Unable to get send buffer in set bss key req %x %x %x",
10227 pEventData, pwdiTSMParams, wdiTSMRspCb);
10228 WDI_ASSERT(0);
10229 return WDI_STATUS_E_FAILURE;
10230 }
10231
10232 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10233 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10234 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10235 WDI_MAC_ADDR_LEN);
10236 wpalMemoryCopy( pSendBuffer+usDataOffset,
10237 &halTsmStatsReqParams,
10238 sizeof(halTsmStatsReqParams));
10239
10240 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10241 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10242
10243 /*-------------------------------------------------------------------------
10244 Send TSM Stats Request to HAL
10245 -------------------------------------------------------------------------*/
10246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10247 wdiTSMRspCb, pEventData->pUserData,
10248 WDI_TSM_STATS_RESP);
10249}/*WDI_ProcessTSMStatsReq*/
10250
10251#endif
10252
10253
10254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010257
10258 @param pWDICtx: pointer to the WLAN DAL context
10259 pEventData: pointer to the event information structure
10260
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 @see
10262 @return Result of the function call
10263*/
10264WDI_Status
10265WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010266(
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 WDI_ControlBlockType* pWDICtx,
10268 WDI_EventInfoType* pEventData
10269)
10270{
10271 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10272 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274 wpt_uint16 usDataOffset = 0;
10275 wpt_uint16 usSendSize = 0;
10276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10277
10278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 -------------------------------------------------------------------------*/
10281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10282 ( NULL == pEventData->pCBfnc ))
10283 {
10284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 }
10289
10290 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10291 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10292 /*-----------------------------------------------------------------------
10293 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10298 &pSendBuffer, &usDataOffset, &usSendSize))||
10299 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10300 {
10301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10302 "Unable to get send buffer in set bss key req %x %x %x",
10303 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 }
10307
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 wpalMemoryCopy( pSendBuffer+usDataOffset,
10309 &pwdiFlushAcParams->wdiFlushAcInfo,
10310 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010311
10312 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010314
10315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10319 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010320}/*WDI_ProcessFlushAcReq*/
10321
10322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010325
10326 @param pWDICtx: pointer to the WLAN DAL context
10327 pEventData: pointer to the event information structure
10328
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 @see
10330 @return Result of the function call
10331*/
10332WDI_Status
10333WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010334(
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 WDI_ControlBlockType* pWDICtx,
10336 WDI_EventInfoType* pEventData
10337)
10338{
10339 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10340 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 wpt_uint16 usDataOffset = 0;
10343 wpt_uint16 usSendSize = 0;
10344
10345 tBtAmpEventMsg haltBtAmpEventMsg;
10346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10347
10348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 -------------------------------------------------------------------------*/
10351 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10352 ( NULL == pEventData->pCBfnc ))
10353 {
10354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 }
10359
10360 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10361 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10362 /*-----------------------------------------------------------------------
10363 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10368 &pSendBuffer, &usDataOffset, &usSendSize))||
10369 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10370 {
10371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10372 "Unable to get send buffer in BT AMP event req %x %x %x",
10373 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010376 }
10377
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 wpalMemoryCopy( pSendBuffer+usDataOffset,
10381 &haltBtAmpEventMsg.btAmpEventParams,
10382 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010383
10384 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386
10387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10391 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010392}/*WDI_ProcessBtAmpEventReq*/
10393
10394/**
10395 @brief Process Add STA self Request function (called when Main FSM
10396 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010397
10398 @param pWDICtx: pointer to the WLAN DAL context
10399 pEventData: pointer to the event information structure
10400
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 @see
10402 @return Result of the function call
10403*/
10404WDI_Status
10405WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010406(
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 WDI_ControlBlockType* pWDICtx,
10408 WDI_EventInfoType* pEventData
10409)
10410{
10411 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10412 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010413 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010414 wpt_uint16 usDataOffset = 0;
10415 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010416 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10418
10419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 -------------------------------------------------------------------------*/
10422 if (( NULL == pEventData ) ||
10423 ( NULL == pEventData->pEventData) ||
10424 ( NULL == pEventData->pCBfnc))
10425 {
10426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 }
10431
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10436 /*-----------------------------------------------------------------------
10437 Get message buffer
10438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10440 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010441 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010443 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 {
10445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10446 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10447 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
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
10452 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10455
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010457 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10458 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10459 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10460 {
10461 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10462 }
10463 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10464 VOS_P2P_CLIENT_MODE) ||
10465 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10466 VOS_P2P_DEVICE))
10467 {
10468 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10469 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010471 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010472
10473 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010475
10476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10480 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10481 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010482}/*WDI_ProcessAddSTASelfReq*/
10483
10484
10485
10486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010489
10490 @param pWDICtx: pointer to the WLAN DAL context
10491 pEventData: pointer to the event information structure
10492
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 @see
10494 @return Result of the function call
10495*/
10496WDI_Status
10497WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010498(
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 WDI_ControlBlockType* pWDICtx,
10500 WDI_EventInfoType* pEventData
10501)
10502{
10503 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10504 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 wpt_uint16 usDataOffset = 0;
10507 wpt_uint16 usSendSize = 0;
10508 tDelStaSelfParams halSetDelSelfSTAParams;
10509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10510
10511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 -------------------------------------------------------------------------*/
10514 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10515 ( NULL == pEventData->pCBfnc ))
10516 {
10517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
10522
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10525 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10526
10527 /*-----------------------------------------------------------------------
10528 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10533 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010534 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10536 {
10537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10538 "Unable to get send buffer in Del Sta Self req %x %x %x",
10539 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 }
10543
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10546
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10548 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
10550 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010552
10553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10557 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 WDI_DEL_STA_SELF_RESP);
10559
10560}
10561
Jeff Johnsone7245742012-09-05 17:12:55 -070010562#ifdef FEATURE_OEM_DATA_SUPPORT
10563/**
10564 @brief Process Start Oem Data Request function (called when Main
10565 FSM allows it)
10566
10567 @param pWDICtx: pointer to the WLAN DAL context
10568 pEventData: pointer to the event information structure
10569
10570 @see
10571 @return Result of the function call
10572*/
10573WDI_Status
10574WDI_ProcessStartOemDataReq
10575(
10576 WDI_ControlBlockType* pWDICtx,
10577 WDI_EventInfoType* pEventData
10578)
10579{
10580 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10581 WDI_oemDataRspCb wdiOemDataRspCb;
10582 wpt_uint8* pSendBuffer = NULL;
10583 wpt_uint16 usDataOffset = 0;
10584 wpt_uint16 usSendSize = 0;
10585 wpt_uint16 reqLen;
10586 tStartOemDataReqParams* halStartOemDataReqParams;
10587
10588 /*-------------------------------------------------------------------------
10589 Sanity check
10590 -------------------------------------------------------------------------*/
10591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10592 ( NULL == pEventData->pCBfnc ))
10593 {
10594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010595 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 WDI_ASSERT(0);
10597 return WDI_STATUS_E_FAILURE;
10598 }
10599
10600 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10601 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10602
10603 /*-----------------------------------------------------------------------
10604 Get message buffer
10605 -----------------------------------------------------------------------*/
10606
10607 reqLen = sizeof(tStartOemDataReqParams);
10608
10609 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10610 WDI_START_OEM_DATA_REQ, reqLen,
10611 &pSendBuffer, &usDataOffset, &usSendSize))||
10612 (usSendSize < (usDataOffset + reqLen)))
10613 {
10614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10615 "Unable to get send buffer in Start Oem Data req %x %x %x",
10616 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10617 WDI_ASSERT(0);
10618 return WDI_STATUS_E_FAILURE;
10619 }
10620
10621 //copying WDI OEM DATA REQ PARAMS to shared memory
10622 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10623
10624 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10625 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10626
10627 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10628 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10629
10630 /*-------------------------------------------------------------------------
10631 Send Start Request to HAL
10632 -------------------------------------------------------------------------*/
10633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10634 wdiOemDataRspCb, pEventData->pUserData,
10635 WDI_START_OEM_DATA_RESP);
10636}/*WDI_ProcessStartOemDataReq*/
10637#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010638
10639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010642
10643 @param pWDICtx: pointer to the WLAN DAL context
10644 pEventData: pointer to the event information structure
10645
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 @see
10647 @return Result of the function call
10648*/
10649WDI_Status
10650WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010651(
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 WDI_ControlBlockType* pWDICtx,
10653 WDI_EventInfoType* pEventData
10654)
10655{
10656 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10657 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 wpt_uint16 usDataOffset = 0;
10660 wpt_uint16 usSendSize = 0;
10661 tHalWlanHostResumeReqParam halResumeReqParams;
10662
10663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10664
10665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010667 -------------------------------------------------------------------------*/
10668 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10669 ( NULL == pEventData->pCBfnc ))
10670 {
10671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010672 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 }
10676
10677 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10678 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10679
10680 /*-----------------------------------------------------------------------
10681 Get message buffer
10682 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10685 &pSendBuffer, &usDataOffset, &usSendSize))||
10686 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10687 {
10688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 }
10694
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010697
10698 wpalMemoryCopy( pSendBuffer+usDataOffset,
10699 &halResumeReqParams,
10700 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010701
10702 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010704
10705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10709 wdiHostResumeRspCb, pEventData->pUserData,
10710 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010711}/*WDI_ProcessHostResumeReq*/
10712
10713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 when Main 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_ProcessSetTxPerTrackingReq
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_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10731 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
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 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10737
10738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 -------------------------------------------------------------------------*/
10741 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10742 ( NULL == pEventData->pCBfnc ))
10743 {
10744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010745 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 }
10749
10750 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10751 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 /*-----------------------------------------------------------------------
10754 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 sizeof(halTxPerTrackingReqParam),
10759 &pSendBuffer, &usDataOffset, &usSendSize))||
10760 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10761 {
10762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10763 "Unable to get send buffer in set tx per tracking req %x %x %x",
10764 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
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 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010768
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10770 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10771 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10772 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010773
10774 wpalMemoryCopy( pSendBuffer+usDataOffset,
10775 &halTxPerTrackingReqParam,
10776 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010777
10778 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010780
10781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10785 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010786}/*WDI_ProcessSetTxPerTrackingReq*/
10787
10788/*=========================================================================
10789 Indications
10790=========================================================================*/
10791
10792/**
10793 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010794
10795 @param pWDICtx: pointer to the WLAN DAL context
10796 pEventData: pointer to the event information structure
10797
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 @see
10799 @return Result of the function call
10800*/
10801WDI_Status
10802WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010803(
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 WDI_ControlBlockType* pWDICtx,
10805 WDI_EventInfoType* pEventData
10806)
10807{
10808 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 wpt_uint16 usDataOffset = 0;
10811 wpt_uint16 usSendSize = 0;
10812 WDI_Status wdiStatus;
10813 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10815
10816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 -------------------------------------------------------------------------*/
10819 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10820 {
10821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010822 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 }
10826
10827 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10828
10829 /*-----------------------------------------------------------------------
10830 Get message buffer
10831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10833 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 sizeof(halWlanSuspendIndparams),
10835 &pSendBuffer, &usDataOffset, &usSendSize))||
10836 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10837 {
10838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10839 "Unable to get send buffer in Suspend Ind ");
10840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 }
10843
10844 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10845 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10846
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010848 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010849
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10851 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010852
10853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 -------------------------------------------------------------------------*/
10856 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010857 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010858
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10861}/*WDI_ProcessHostSuspendInd*/
10862
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010863
10864
10865/**
10866 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10867
10868 @param pWDICtx: pointer to the WLAN DAL context
10869 pEventData: pointer to the event information structure
10870
10871 @see
10872 @return Result of the function call
10873*/
10874WDI_Status
10875WDI_ProcessTrafficStatsInd
10876(
10877 WDI_ControlBlockType* pWDICtx,
10878 WDI_EventInfoType* pEventData
10879)
10880{
10881 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10882 wpt_uint8* pSendBuffer = NULL;
10883 wpt_uint16 usDataOffset = 0;
10884 wpt_uint16 usSendSize = 0;
10885 WDI_Status wdiStatus;
10886 tStatsClassBIndParams* pStatsClassBIndParams;
10887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10888
10889 /*-------------------------------------------------------------------------
10890 Sanity check
10891 -------------------------------------------------------------------------*/
10892 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10893 {
10894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10895 "%s: Invalid parameters in Traffic Stats ind",__func__);
10896 WDI_ASSERT(0);
10897 return WDI_STATUS_E_FAILURE;
10898 }
10899
10900 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10901
10902 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10903 {
10904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10905 "%s: Invalid parameters in Traffic Stats ind",__func__);
10906 WDI_ASSERT(0);
10907 return WDI_STATUS_E_FAILURE;
10908 }
10909
10910 /*-----------------------------------------------------------------------
10911 Get message buffer
10912 -----------------------------------------------------------------------*/
10913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10914 WDI_TRAFFIC_STATS_IND,
10915 sizeof(tStatsClassBIndParams),
10916 &pSendBuffer, &usDataOffset, &usSendSize))||
10917 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10918 {
10919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10920 "Unable to get send buffer in Traffic Stats Ind ");
10921 WDI_ASSERT(0);
10922 return WDI_STATUS_E_FAILURE;
10923 }
10924
10925 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10926
10927 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10928
10929 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10930 pTrafficStatsIndParams->pTrafficStats,
10931 pTrafficStatsIndParams->length);
10932
10933 /*-------------------------------------------------------------------------
10934 Send Suspend Request to HAL
10935 -------------------------------------------------------------------------*/
10936 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10937 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10938
10939 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10940 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10941}/*WDI_ProcessTrafficStatsInd*/
10942
Chet Lanctota96bb432013-03-18 10:26:30 -070010943#ifdef WLAN_FEATURE_11W
10944/**
10945 @brief Process Exclude Unencrypted Indications function (called
10946 when Main FSM allows it)
10947
10948 @param pWDICtx: pointer to the WLAN DAL context
10949 pEventData: pointer to the event information structure
10950
10951 @see
10952 @return Result of the function call
10953*/
10954WDI_Status
10955WDI_ProcessExcludeUnencryptInd
10956(
10957 WDI_ControlBlockType* pWDICtx,
10958 WDI_EventInfoType* pEventData
10959)
10960{
10961 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10962 wpt_uint8* pSendBuffer = NULL;
10963 wpt_uint16 usDataOffset = 0;
10964 wpt_uint16 usSendSize = 0;
10965 WDI_Status wdiStatus;
10966 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10968
10969 /*-------------------------------------------------------------------------
10970 Sanity check
10971 -------------------------------------------------------------------------*/
10972 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10973 {
10974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10975 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10976 WDI_ASSERT(0);
10977 return WDI_STATUS_E_FAILURE;
10978 }
10979
10980 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10981
10982 /*-----------------------------------------------------------------------
10983 Get message buffer
10984 -----------------------------------------------------------------------*/
10985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10986 WDI_EXCLUDE_UNENCRYPTED_IND,
10987 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10988 &pSendBuffer, &usDataOffset, &usSendSize))||
10989 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10990 {
10991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10992 "Unable to get send buffer in Exclude Unencrypted Ind ");
10993 WDI_ASSERT(0);
10994 return WDI_STATUS_E_FAILURE;
10995 }
10996
10997 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10998
10999 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11000
11001 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11002 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11003
11004 /*-------------------------------------------------------------------------
11005 Send Suspend Request to HAL
11006 -------------------------------------------------------------------------*/
11007 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11008 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11009
11010 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11011 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11012}/*WDI_ProcessExcludeUnencryptInd*/
11013#endif
11014
Yue Ma365933a2013-08-14 15:59:08 -070011015/**
11016 @brief Process Add Periodic Tx Pattern Indication function (called when
11017 Main FSM allows it)
11018
11019 @param pWDICtx: pointer to the WLAN DAL context
11020 pEventData: pointer to the event information structure
11021
11022 @see
11023 @return Result of the function call
11024*/
11025WDI_Status
11026WDI_ProcessAddPeriodicTxPtrnInd
11027(
11028 WDI_ControlBlockType* pWDICtx,
11029 WDI_EventInfoType* pEventData
11030)
11031{
11032 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11033 wpt_uint8* pSendBuffer = NULL;
11034 wpt_uint16 usDataOffset = 0;
11035 wpt_uint16 usSendSize = 0;
11036 WDI_Status wdiStatus;
11037 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11038 wpt_uint8 selfStaIdx = 0;
11039
11040 /*-------------------------------------------------------------------------
11041 Sanity check
11042 -------------------------------------------------------------------------*/
11043 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11044 {
11045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11046 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11047 WDI_ASSERT(0);
11048 return WDI_STATUS_E_FAILURE;
11049 }
11050
11051 pAddPeriodicTxPtrnParams =
11052 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11053
11054 /*------------------------------------------------------------------------
11055 Get message buffer
11056 ------------------------------------------------------------------------*/
11057 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11058 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11059 &pSendBuffer, &usDataOffset, &usSendSize))||
11060 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11061 {
11062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11063 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11064 __func__);
11065 WDI_ASSERT(0);
11066 return WDI_STATUS_E_FAILURE;
11067 }
11068
11069 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11070
11071 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11072 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11073 &selfStaIdx))
11074 {
11075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11076 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011077 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011078
11079 return WDI_STATUS_E_FAILURE;
11080 }
11081
11082 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11083 halAddPeriodicTxPtrn->ucPtrnId =
11084 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11085 halAddPeriodicTxPtrn->usPtrnSize =
11086 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11087 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11088 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11089
11090 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11091 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11092 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11093
11094 /*-------------------------------------------------------------------------
11095 Send Indication to HAL
11096 -------------------------------------------------------------------------*/
11097 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11098 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11099
11100 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11101
11102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11103 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11104
11105 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11106} /* WDI_ProcessAddPeriodicTxPtrnInd */
11107
11108/**
11109 @brief Process Delete Periodic Tx Pattern Indication function (called when
11110 Main FSM allows it)
11111
11112 @param pWDICtx: pointer to the WLAN DAL context
11113 pEventData: pointer to the event information structure
11114
11115 @see
11116 @return Result of the function call
11117*/
11118WDI_Status
11119WDI_ProcessDelPeriodicTxPtrnInd
11120(
11121 WDI_ControlBlockType* pWDICtx,
11122 WDI_EventInfoType* pEventData
11123)
11124{
11125 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11126 wpt_uint8* pSendBuffer = NULL;
11127 wpt_uint16 usDataOffset = 0;
11128 wpt_uint16 usSendSize = 0;
11129 WDI_Status wdiStatus;
11130 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11131 wpt_uint8 selfStaIdx = 0;
11132
11133 /*-------------------------------------------------------------------------
11134 Sanity check
11135 -------------------------------------------------------------------------*/
11136 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11137 {
11138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11139 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11140 WDI_ASSERT(0);
11141 return WDI_STATUS_E_FAILURE;
11142 }
11143
11144 pDelPeriodicTxPtrnParams =
11145 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11146
11147 /*------------------------------------------------------------------------
11148 Get message buffer
11149 ------------------------------------------------------------------------*/
11150 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11151 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11152 &pSendBuffer, &usDataOffset, &usSendSize))||
11153 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11154 {
11155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11156 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11157 __func__);
11158 WDI_ASSERT(0);
11159 return WDI_STATUS_E_FAILURE;
11160 }
11161
11162 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11163
11164 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11165 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11166 &selfStaIdx))
11167 {
11168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11169 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011170 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011171
11172 return WDI_STATUS_E_FAILURE;
11173 }
11174
11175 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11176 halDelPeriodicTxPtrn->uPatternIdBitmap =
11177 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11178
11179 /*-------------------------------------------------------------------------
11180 Send Indication to HAL
11181 -------------------------------------------------------------------------*/
11182 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11183 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11184
11185 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11186
11187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11188 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11189
11190 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11191} /* WDI_ProcessDelPeriodicTxPtrnInd */
11192
Jeff Johnson295189b2012-06-20 16:38:30 -070011193/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011195==========================================================================*/
11196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011199
11200 @param pWDICtx: pointer to the WLAN DAL context
11201 pEventData: pointer to the event information structure
11202
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 @see
11204 @return Result of the function call
11205*/
11206WDI_Status
11207WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011208(
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 WDI_ControlBlockType* pWDICtx,
11210 WDI_EventInfoType* pEventData
11211)
11212{
11213 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11214 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 wpt_uint16 usDataOffset = 0;
11217 wpt_uint16 usSendSize = 0;
11218 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11220
11221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 -------------------------------------------------------------------------*/
11224 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11225 ( NULL == pEventData->pCBfnc ))
11226 {
11227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 }
11232
11233 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11234 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11235 /*-----------------------------------------------------------------------
11236 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011238 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011240 sizeof(halSwitchChannelReq.switchChannelParams),
11241 &pSendBuffer, &usDataOffset, &usSendSize))||
11242 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11243 {
11244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11245 "Unable to get send buffer in channel switch req %x %x %x",
11246 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 }
11250
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011253#ifndef WLAN_FEATURE_VOWIFI
11254 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11256#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11259
11260#ifdef WLAN_FEATURE_VOWIFI
11261 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011263 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11264 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11265 WDI_MAC_ADDR_LEN);
11266 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11267 pwdiSwitchChParams->wdiChInfo.macBSSId,
11268 WDI_MAC_ADDR_LEN);
11269#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 wpalMemoryCopy( pSendBuffer+usDataOffset,
11271 &halSwitchChannelReq.switchChannelParams,
11272 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011273
11274 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276
11277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11281 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011282}/*WDI_ProcessChannelSwitchReq*/
11283
11284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011285 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011287
11288 @param pWDICtx: pointer to the WLAN DAL context
11289 pEventData: pointer to the event information structure
11290
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 @see
11292 @return Result of the function call
11293*/
11294WDI_Status
11295WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011296(
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 WDI_ControlBlockType* pWDICtx,
11298 WDI_EventInfoType* pEventData
11299)
11300{
11301 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11302 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 wpt_uint16 usDataOffset = 0;
11307 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 tConfigStaReqMsg halConfigStaReqMsg;
11311 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11313
11314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 -------------------------------------------------------------------------*/
11317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11318 ( NULL == pEventData->pCBfnc ))
11319 {
11320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 }
11325
11326 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11327 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11328 /*-------------------------------------------------------------------------
11329 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 -------------------------------------------------------------------------*/
11332 wpalMutexAcquire(&pWDICtx->wptMutex);
11333
11334 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11338 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11339 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011340
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11344 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11345 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011346
11347 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 }
11350
11351 /*------------------------------------------------------------------------
11352 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 ------------------------------------------------------------------------*/
11355 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11356 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11358 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11359 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011360
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 }
11365
11366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011367
11368 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11369#ifdef WLAN_FEATURE_11AC
11370 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011371 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011372 else
11373#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011374 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011375
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 /*-----------------------------------------------------------------------
11377 Get message buffer
11378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11380 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011381 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 {
11384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11385 "Unable to get send buffer in config sta req %x %x %x",
11386 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 }
11390
11391 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 &pwdiConfigSTAParams->wdiReqInfo);
11394
11395 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11396 {
11397 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 WDI_STATableFindStaidByAddr(pWDICtx,
11400 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 {
11403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11404 "This station does not exist in the WDI Station Table %d");
11405 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011406 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 }
11409 }
11410 else
11411 {
11412 /* Need to fill in the STA Index to invalid, since at this point we have not
11413 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011414 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 }
11416
11417 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011418 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011419
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 wpalMemoryCopy( pSendBuffer+usDataOffset,
11421 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011422 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011423
11424 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011426
Jeff Johnsone7245742012-09-05 17:12:55 -070011427 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11428 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 sizeof(pWDICtx->wdiCachedConfigStaReq));
11430
11431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11435 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011436}/*WDI_ProcessConfigStaReq*/
11437
11438
11439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011441 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011442
11443 @param pWDICtx: pointer to the WLAN DAL context
11444 pEventData: pointer to the event information structure
11445
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 @see
11447 @return Result of the function call
11448*/
11449WDI_Status
11450WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011451(
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 WDI_ControlBlockType* pWDICtx,
11453 WDI_EventInfoType* pEventData
11454)
11455{
11456 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11457 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 wpt_uint16 usDataOffset = 0;
11462 wpt_uint16 usSendSize = 0;
11463 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11466
11467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 -------------------------------------------------------------------------*/
11470 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11471 ( NULL == pEventData->pCBfnc ))
11472 {
11473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 }
11478
11479 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11480 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11481 /*-------------------------------------------------------------------------
11482 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 -------------------------------------------------------------------------*/
11485 wpalMutexAcquire(&pWDICtx->wptMutex);
11486
11487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11491 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11492 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011493
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11498 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 }
11500 else
11501 {
11502 /*------------------------------------------------------------------------
11503 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 ------------------------------------------------------------------------*/
11506 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11507 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11509 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11510 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11511
11512 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 }
11516 }
11517 /* If the link is set to enter IDLE - the Session allocated for this BSS
11518 will be deleted on the Set Link State response coming from HAL
11519 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11522
11523 wpalMutexRelease(&pWDICtx->wptMutex);
11524 /*-----------------------------------------------------------------------
11525 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011528
11529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 sizeof(halLinkStateReqMsg),
11531 &pSendBuffer, &usDataOffset, &usSendSize))||
11532 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11533 {
11534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11535 "Unable to get send buffer in set bss key req %x %x %x",
11536 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 }
11540
11541 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11542 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11543
11544 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11545 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11546
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11549
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 wpalMemoryCopy( pSendBuffer+usDataOffset,
11551 &halLinkStateReqMsg,
11552 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011553
11554 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011556
11557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11561 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011562}/*WDI_ProcessSetLinkStateReq*/
11563
11564
11565/**
11566 @brief Process Get Stats Request function (called when Main FSM
11567 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011568
11569 @param pWDICtx: pointer to the WLAN DAL context
11570 pEventData: pointer to the event information structure
11571
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 @see
11573 @return Result of the function call
11574*/
11575WDI_Status
11576WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011577(
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 WDI_ControlBlockType* pWDICtx,
11579 WDI_EventInfoType* pEventData
11580)
11581{
11582 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11583 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011585 wpt_uint16 usDataOffset = 0;
11586 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 WDI_BSSSessionType* pBSSSes = NULL;
11589 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 tHalStatsReqMsg halStatsReqMsg;
11592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11593
11594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 -------------------------------------------------------------------------*/
11597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11598 ( NULL == pEventData->pCBfnc ) )
11599 {
11600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 }
11605
11606 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11607 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11608
11609 /*-------------------------------------------------------------------------
11610 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 -------------------------------------------------------------------------*/
11613 wpalMutexAcquire(&pWDICtx->wptMutex);
11614
11615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011618 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11619 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 &macBSSID))
11621 {
11622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11623 "This station does not exist in the WDI Station Table %d");
11624 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 }
11627
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11629 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11632 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11633 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011634
11635 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011637 }
11638
11639 /*------------------------------------------------------------------------
11640 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011642 ------------------------------------------------------------------------*/
11643 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11644 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11646 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11647 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011648
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 }
11653
11654
11655 wpalMutexRelease(&pWDICtx->wptMutex);
11656
11657 /*-----------------------------------------------------------------------
11658 Get message buffer
11659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 sizeof(halStatsReqMsg.statsReqParams),
11662 &pSendBuffer, &usDataOffset, &usSendSize))||
11663 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11664 {
11665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11666 "Unable to get send buffer in set bss key req %x %x %x",
11667 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 }
11671
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 wpalMemoryCopy( pSendBuffer+usDataOffset,
11677 &halStatsReqMsg.statsReqParams,
11678 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011679
11680 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011682
11683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11687 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011688}/*WDI_ProcessGetStatsReq*/
11689
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011690#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11691/**
11692 @brief Process Get Roam Rssi Request function (called when Main FSM
11693 allows it)
11694
11695 @param pWDICtx: pointer to the WLAN DAL context
11696 pEventData: pointer to the event information structure
11697
11698 @see
11699 @return Result of the function call
11700*/
11701WDI_Status
11702WDI_ProcessGetRoamRssiReq
11703(
11704 WDI_ControlBlockType* pWDICtx,
11705 WDI_EventInfoType* pEventData
11706)
11707{
11708 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11709 WDI_GetStatsRspCb wdiGetStatsRspCb;
11710 wpt_uint8* pSendBuffer = NULL;
11711 wpt_uint16 usDataOffset = 0;
11712 wpt_uint16 usSendSize = 0;
11713 wpt_uint8 ucCurrentBSSSesIdx = 0;
11714 WDI_BSSSessionType* pBSSSes = NULL;
11715 wpt_macAddr macBSSID;
11716 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11717 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11719 /*-------------------------------------------------------------------------
11720 Sanity check
11721 -------------------------------------------------------------------------*/
11722 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11723 ( NULL == pEventData->pCBfnc ) )
11724 {
11725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11726 "%s: Invalid parameters", __func__);
11727 WDI_ASSERT(0);
11728 return WDI_STATUS_E_FAILURE;
11729 }
11730
11731 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11732 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11733
11734 /*-------------------------------------------------------------------------
11735 Check to see if we are in the middle of an association, if so queue, if
11736 not it means it is free to process request
11737 -------------------------------------------------------------------------*/
11738 wpalMutexAcquire(&pWDICtx->wptMutex);
11739
11740 /*------------------------------------------------------------------------
11741 Find the BSS for which the request is made
11742 ------------------------------------------------------------------------*/
11743 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11744 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11745 &macBSSID))
11746 {
11747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11748 "This station does not exist in the WDI Station Table %d");
11749 wpalMutexRelease(&pWDICtx->wptMutex);
11750 return WDI_STATUS_E_FAILURE;
11751 }
11752
11753 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11754 if ( NULL == pBSSSes )
11755 {
11756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11757 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11758 __func__, MAC_ADDR_ARRAY(macBSSID));
11759
11760 wpalMutexRelease(&pWDICtx->wptMutex);
11761 return WDI_STATUS_E_NOT_ALLOWED;
11762 }
11763
11764 /*------------------------------------------------------------------------
11765 Check if this BSS is being currently processed or queued,
11766 if queued - queue the new request as well
11767 ------------------------------------------------------------------------*/
11768 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11769 {
11770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11771 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11772 __func__, MAC_ADDR_ARRAY(macBSSID));
11773
11774 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11775 wpalMutexRelease(&pWDICtx->wptMutex);
11776 return wdiStatus;
11777 }
11778
11779 wpalMutexRelease(&pWDICtx->wptMutex);
11780
11781 /*-----------------------------------------------------------------------
11782 Get message buffer
11783 -----------------------------------------------------------------------*/
11784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11785 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11786 &pSendBuffer, &usDataOffset, &usSendSize))||
11787 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11788 {
11789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11790 "Unable to get send buffer in set bss key req %x %x %x",
11791 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11792 WDI_ASSERT(0);
11793 return WDI_STATUS_E_FAILURE;
11794 }
11795
11796 halRssiRoamReqMsg.roamRssiReqParams.staId =
11797 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11798 wpalMemoryCopy( pSendBuffer+usDataOffset,
11799 &halRssiRoamReqMsg.roamRssiReqParams,
11800 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11801
11802 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11803 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11804
11805 /*-------------------------------------------------------------------------
11806 Send Get STA Request to HAL
11807 -------------------------------------------------------------------------*/
11808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11809 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11810}/*WDI_ProcessGetRoamRssiReq*/
11811#endif
11812
Jeff Johnson295189b2012-06-20 16:38:30 -070011813/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011816
11817 @param pWDICtx: pointer to the WLAN DAL context
11818 pEventData: pointer to the event information structure
11819
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 @see
11821 @return Result of the function call
11822*/
11823WDI_Status
11824WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011825(
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 WDI_ControlBlockType* pWDICtx,
11827 WDI_EventInfoType* pEventData
11828)
11829{
11830 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11831 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11832
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 wpt_uint16 usDataOffset = 0;
11835 wpt_uint16 usSendSize = 0;
11836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11837
11838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011840 -------------------------------------------------------------------------*/
11841 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11842 ( NULL == pEventData->pCBfnc))
11843 {
11844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 }
11849
11850 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11851 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11852
11853 /*-----------------------------------------------------------------------
11854 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 -----------------------------------------------------------------------*/
11857
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11860 &pSendBuffer, &usDataOffset, &usSendSize))||
11861 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11862 {
11863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11864 "Unable to get send buffer in set bss key req %x %x %x",
11865 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 }
11869
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 wpalMemoryCopy( pSendBuffer+usDataOffset,
11871 &pwdiUpdateCfgParams->uConfigBufferLen,
11872 sizeof(wpt_uint32));
11873 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11874 pwdiUpdateCfgParams->pConfigBuffer,
11875 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011876
11877 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011879
11880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 -------------------------------------------------------------------------*/
11883
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11885 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011886
11887}/*WDI_ProcessUpdateCfgReq*/
11888
11889
11890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011893
11894 @param pWDICtx: pointer to the WLAN DAL context
11895 pEventData: pointer to the event information structure
11896
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 @see
11898 @return Result of the function call
11899*/
11900WDI_Status
11901WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011902(
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 WDI_ControlBlockType* pWDICtx,
11904 WDI_EventInfoType* pEventData
11905)
11906{
11907 WDI_AddBAReqParamsType* pwdiAddBAParams;
11908 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011909 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 WDI_BSSSessionType* pBSSSes = NULL;
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;
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 wpt_macAddr macBSSID;
11916
11917 tAddBAReqMsg halAddBAReq;
11918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11919
11920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 -------------------------------------------------------------------------*/
11923 if (( NULL == pEventData ) ||
11924 ( NULL == pEventData->pEventData) ||
11925 ( NULL == pEventData->pCBfnc ))
11926 {
11927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 }
11932
11933 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11934 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11935
11936 /*-------------------------------------------------------------------------
11937 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011938 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 -------------------------------------------------------------------------*/
11940 wpalMutexAcquire(&pWDICtx->wptMutex);
11941
11942 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11946 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 &macBSSID))
11948 {
11949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11950 "This station does not exist in the WDI Station Table %d");
11951 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 }
11954
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11956 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11959 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11960 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011961
11962 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 }
11965
11966 /*------------------------------------------------------------------------
11967 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 ------------------------------------------------------------------------*/
11970 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11971 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11973 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11974 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011975
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 }
11980
11981
11982 wpalMutexRelease(&pWDICtx->wptMutex);
11983 /*-----------------------------------------------------------------------
11984 Get message buffer
11985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 sizeof(halAddBAReq.addBAParams),
11988 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11991 {
11992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11993 "Unable to get send buffer in Add BA req %x %x %x",
11994 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 }
11998
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12001 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12002#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12005#endif
12006
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 wpalMemoryCopy( pSendBuffer+usDataOffset,
12008 &halAddBAReq.addBAParams,
12009 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012010
12011 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012013
12014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012015 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012017 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12018 wdiAddBARspCb, pEventData->pUserData,
12019 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012020}/*WDI_ProcessAddBAReq*/
12021
12022
12023
12024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012025 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012026 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012027
12028 @param pWDICtx: pointer to the WLAN DAL context
12029 pEventData: pointer to the event information structure
12030
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 @see
12032 @return Result of the function call
12033*/
12034WDI_Status
12035WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012036(
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 WDI_ControlBlockType* pWDICtx,
12038 WDI_EventInfoType* pEventData
12039)
12040{
12041 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12042 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012043 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 wpt_uint16 usDataOffset = 0;
12047 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 wpt_uint16 index;
12050 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012051
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 tTriggerBAReqMsg halTriggerBAReq;
12053 tTriggerBaReqCandidate* halTriggerBACandidate;
12054 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12056
12057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 -------------------------------------------------------------------------*/
12060 if (( NULL == pEventData ) ||
12061 ( NULL == pEventData->pEventData ) ||
12062 ( NULL == pEventData->pCBfnc ))
12063 {
12064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012068 }
12069
12070 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12071 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12072 /*-------------------------------------------------------------------------
12073 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012075 -------------------------------------------------------------------------*/
12076 wpalMutexAcquire(&pWDICtx->wptMutex);
12077
12078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12082 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 &macBSSID))
12084 {
12085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12086 "This station does not exist in the WDI Station Table %d");
12087 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012089 }
12090
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12092 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12095 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12096 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012097
12098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 }
12101
12102 /*------------------------------------------------------------------------
12103 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 ------------------------------------------------------------------------*/
12106 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12107 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12109 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12110 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012111
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 }
12116
12117
12118 wpalMutexRelease(&pWDICtx->wptMutex);
12119 /*-----------------------------------------------------------------------
12120 Get message buffer
12121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12123 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12127 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12132 {
12133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12134 "Unable to get send buffer in Trigger BA req %x %x %x",
12135 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 }
12139
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012141 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12144
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 wpalMemoryCopy( pSendBuffer+usDataOffset,
12146 &halTriggerBAReq.triggerBAParams,
12147 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012148
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12151 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12152 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012153
12154 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012155 index++)
12156 {
12157 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12158 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12159 halTriggerBACandidate++;
12160 wdiTriggerBACandidate++;
12161 }
12162
12163 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012165
12166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012167 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12170 wdiTriggerBARspCb, pEventData->pUserData,
12171 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012172}/*WDI_ProcessTriggerBAReq*/
12173
12174
12175
12176/**
12177 @brief Process Update Beacon Params Request function (called when Main FSM
12178 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012179
12180 @param pWDICtx: pointer to the WLAN DAL context
12181 pEventData: pointer to the event information structure
12182
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 @see
12184 @return Result of the function call
12185*/
12186WDI_Status
12187WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012188(
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 WDI_ControlBlockType* pWDICtx,
12190 WDI_EventInfoType* pEventData
12191)
12192{
12193 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12194 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 wpt_uint16 usDataOffset = 0;
12197 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12200
12201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 -------------------------------------------------------------------------*/
12204 if (( NULL == pEventData ) ||
12205 ( NULL == pEventData->pEventData) ||
12206 ( NULL == pEventData->pCBfnc))
12207 {
12208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012212 }
12213
12214 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12215 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12216 /*-----------------------------------------------------------------------
12217 Get message buffer
12218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 sizeof(halUpdateBeaconParams),
12221 &pSendBuffer, &usDataOffset, &usSendSize))||
12222 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12223 {
12224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12225 "Unable to get send buffer in set bss key req %x %x %x",
12226 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 }
12230
12231 /*BSS Index of the BSS*/
12232 halUpdateBeaconParams.bssIdx =
12233 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12234 /*shortPreamble mode. HAL should update all the STA rates when it
12235 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12238 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12241 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12244
12245 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012251 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012252 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12258 halUpdateBeaconParams.fRIFSMode =
12259 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12262
Jeff Johnsone7245742012-09-05 17:12:55 -070012263 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12264 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012265
12266 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012268
12269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12273 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012274}/*WDI_ProcessUpdateBeaconParamsReq*/
12275
12276
12277
12278/**
12279 @brief Process Send Beacon template Request function (called when Main FSM
12280 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012281
12282 @param pWDICtx: pointer to the WLAN DAL context
12283 pEventData: pointer to the event information structure
12284
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 @see
12286 @return Result of the function call
12287*/
12288WDI_Status
12289WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012290(
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 WDI_ControlBlockType* pWDICtx,
12292 WDI_EventInfoType* pEventData
12293)
12294{
12295 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12296 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 wpt_uint16 usDataOffset = 0;
12299 wpt_uint16 usSendSize = 0;
12300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12301
12302 tSendBeaconReqMsg halSendBeaconReq;
12303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 -------------------------------------------------------------------------*/
12306 if (( NULL == pEventData ) ||
12307 ( NULL == pEventData->pEventData ) ||
12308 ( NULL == pEventData->pCBfnc ))
12309 {
12310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 }
12315
12316 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12317 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12318 /*-----------------------------------------------------------------------
12319 Get message buffer
12320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 sizeof(halSendBeaconReq.sendBeaconParam),
12323 &pSendBuffer, &usDataOffset, &usSendSize))||
12324 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12325 {
12326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12327 "Unable to get send buffer in send beacon req %x %x %x",
12328 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 }
12332
12333 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12334 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12335 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12338 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12339 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12340 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012342 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012343 /* usP2PIeOffset should be atleast greater than timIeOffset */
12344 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12345 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12346 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12347 {
12348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12349 "Invalid usP2PIeOffset %hu",
12350 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12351 WDI_ASSERT(0);
12352 return WDI_STATUS_E_FAILURE;
12353 }
12354
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012357
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 wpalMemoryCopy( pSendBuffer+usDataOffset,
12359 &halSendBeaconReq.sendBeaconParam,
12360 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012361
12362 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012364
12365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12369 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012370}/*WDI_ProcessSendBeaconParamsReq*/
12371
12372/**
12373 @brief Process Update Beacon Params Request function (called when Main FSM
12374 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012375
12376 @param pWDICtx: pointer to the WLAN DAL context
12377 pEventData: pointer to the event information structure
12378
Jeff Johnson295189b2012-06-20 16:38:30 -070012379 @see
12380 @return Result of the function call
12381*/
12382WDI_Status
12383WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012384(
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 WDI_ControlBlockType* pWDICtx,
12386 WDI_EventInfoType* pEventData
12387)
12388{
12389 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12390 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 wpt_uint16 usDataOffset = 0;
12393 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012394 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12396
12397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 -------------------------------------------------------------------------*/
12400 if (( NULL == pEventData ) ||
12401 ( NULL == pEventData->pEventData) ||
12402 ( NULL == pEventData->pCBfnc))
12403 {
12404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12414 /*-----------------------------------------------------------------------
12415 Get message buffer
12416 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 sizeof(halUpdateProbeRspTmplParams),
12419 &pSendBuffer, &usDataOffset, &usSendSize))||
12420 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12421 {
12422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12423 "Unable to get send buffer in set bss key req %x %x %x",
12424 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 }
12428
12429 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 WDI_MAC_ADDR_LEN);
12432
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12435
12436 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12437 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012439
12440
12441 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12442 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12443 WDI_PROBE_REQ_BITMAP_IE_LEN);
12444
Jeff Johnsone7245742012-09-05 17:12:55 -070012445 wpalMemoryCopy( pSendBuffer+usDataOffset,
12446 &halUpdateProbeRspTmplParams,
12447 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012448
12449 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012451
12452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12456 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12457 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012458}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12459
12460/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012461 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012463
12464 @param pWDICtx: pointer to the WLAN DAL context
12465 pEventData: pointer to the event information structure
12466
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 @see
12468 @return Result of the function call
12469*/
12470WDI_Status
12471WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012472(
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 WDI_ControlBlockType* pWDICtx,
12474 WDI_EventInfoType* pEventData
12475)
12476{
12477
12478 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12479 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12480
12481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 -------------------------------------------------------------------------*/
12484 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012485 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12489 {
12490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 }
12495
12496 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12499
12500 /*cache the wdi nv request message here if the the first fragment
12501 * To issue the request to HAL for the next fragment */
12502 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12503 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12505 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12507
12508 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12509 pWDICtx->pRspCBUserData = pEventData->pUserData;
12510 }
12511
12512 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12513}
12514
12515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012518
12519 @param pWDICtx: pointer to the WLAN DAL context
12520 pEventData: pointer to the event information structure
12521
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 @see
12523 @return Result of the function call
12524*/
12525WDI_Status WDI_ProcessSetMaxTxPowerReq
12526(
12527 WDI_ControlBlockType* pWDICtx,
12528 WDI_EventInfoType* pEventData
12529)
12530{
12531 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12532 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 wpt_uint16 usDataOffset = 0;
12535 wpt_uint16 usSendSize = 0;
12536 tSetMaxTxPwrReq halSetMaxTxPower;
12537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12538
12539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 -------------------------------------------------------------------------*/
12542 if (( NULL == pEventData ) ||
12543 ( NULL == pEventData->pEventData ) ||
12544 ( NULL == pEventData->pCBfnc ))
12545 {
12546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12555
12556 /*-----------------------------------------------------------------------
12557 Get message buffer
12558 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012559if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12561 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012563)))
12564 {
12565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12566 "Unable to get Set Max Tx Power req %x %x %x",
12567 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 }
12571
12572 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12573 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12574 WDI_MAC_ADDR_LEN);
12575
12576 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12577 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12578 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012581
12582 wpalMemoryCopy( pSendBuffer+usDataOffset,
12583 &halSetMaxTxPower.setMaxTxPwrParams,
12584 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012585
12586 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012588
12589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12593 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12594 WDI_SET_MAX_TX_POWER_RESP);
12595
Jeff Johnson295189b2012-06-20 16:38:30 -070012596}
12597
schangd82195a2013-03-13 18:41:24 -070012598/**
12599 @brief Process Set Tx Power Request function (called when Main
12600 FSM allows it)
12601
12602 @param pWDICtx: pointer to the WLAN DAL context
12603 pEventData: pointer to the event information structure
12604
12605 @see
12606 @return Result of the function call
12607*/
12608WDI_Status WDI_ProcessSetTxPowerReq
12609(
12610 WDI_ControlBlockType* pWDICtx,
12611 WDI_EventInfoType* pEventData
12612)
12613{
12614 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12615 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12616 wpt_uint8* pSendBuffer = NULL;
12617 wpt_uint16 usDataOffset = 0;
12618 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012619 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12621
12622 /*-------------------------------------------------------------------------
12623 Sanity check
12624 -------------------------------------------------------------------------*/
12625 if (( NULL == pEventData ) ||
12626 ( NULL == pEventData->pEventData ) ||
12627 ( NULL == pEventData->pCBfnc ))
12628 {
12629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12630 "%s: Invalid parameters", __func__);
12631 WDI_ASSERT(0);
12632 return WDI_STATUS_E_FAILURE;
12633 }
12634
12635 pwdiSetTxPowerParams =
12636 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12637 wdiSetTxPowerRspCb =
12638 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12639
12640 /*-----------------------------------------------------------------------
12641 Get message buffer
12642 -----------------------------------------------------------------------*/
12643 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12644 sizeof(tSetTxPwrReqParams),
12645 &pSendBuffer, &usDataOffset, &usSendSize))||
12646 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12647 )))
12648 {
12649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12650 "Unable to get Set Max Tx Power req %x %x %x",
12651 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12652 WDI_ASSERT(0);
12653 return WDI_STATUS_E_FAILURE;
12654 }
12655
Leo Changa37e2a92013-03-25 17:39:58 -070012656 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12657 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12658 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012659
12660 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12661 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12662
12663 /*-------------------------------------------------------------------------
12664 Send Set Tx Power Request to HAL
12665 -------------------------------------------------------------------------*/
12666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12667 wdiSetTxPowerRspCb, pEventData->pUserData,
12668 WDI_SET_TX_POWER_RESP);
12669}
Jeff Johnson295189b2012-06-20 16:38:30 -070012670
12671/**
12672 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12673 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012674
12675 @param pWDICtx: pointer to the WLAN DAL context
12676 pEventData: pointer to the event information structure
12677
Jeff Johnson295189b2012-06-20 16:38:30 -070012678 @see
12679 @return Result of the function call
12680*/
12681WDI_Status
12682WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012683(
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 WDI_ControlBlockType* pWDICtx,
12685 WDI_EventInfoType* pEventData
12686)
12687{
12688 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12689 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 wpt_uint16 usDataOffset = 0;
12692 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12695
12696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 -------------------------------------------------------------------------*/
12699 if (( NULL == pEventData ) ||
12700 ( NULL == pEventData->pEventData) ||
12701 ( NULL == pEventData->pCBfnc))
12702 {
12703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 }
12708
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12713 /*-----------------------------------------------------------------------
12714 Get message buffer
12715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12717 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 sizeof(halSetP2PGONOAParams),
12719 &pSendBuffer, &usDataOffset, &usSendSize))||
12720 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12721 {
12722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12723 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12724 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 }
12728
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12733 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012735 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12742
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 wpalMemoryCopy( pSendBuffer+usDataOffset,
12744 &halSetP2PGONOAParams,
12745 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012746
12747 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012749
12750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12754 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12755 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012756}/*WDI_ProcessP2PGONOAReq*/
12757
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012758#ifdef FEATURE_WLAN_TDLS
12759
12760/**
12761 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12762 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
12771WDI_ProcessTdlsLinkEstablishReq
12772(
12773 WDI_ControlBlockType* pWDICtx,
12774 WDI_EventInfoType* pEventData
12775)
12776{
12777 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12778 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12779 wpt_uint8* pSendBuffer = NULL;
12780 wpt_uint16 usDataOffset = 0;
12781 wpt_uint16 usSendSize = 0;
12782
12783 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12785
12786 /*-------------------------------------------------------------------------
12787 Sanity check
12788 -------------------------------------------------------------------------*/
12789 if (( NULL == pEventData ) ||
12790 ( NULL == pEventData->pEventData) ||
12791 ( NULL == pEventData->pCBfnc))
12792 {
12793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12794 "%s: Invalid parameters", __func__);
12795 WDI_ASSERT(0);
12796 return WDI_STATUS_E_FAILURE;
12797 }
12798 pwdiTDLSLinkEstablishReqParams =
12799 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12800 wdiTDLSLinkEstablishReqRspCb =
12801 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12802
12803
12804 /*-----------------------------------------------------------------------
12805 Get message buffer
12806 -----------------------------------------------------------------------*/
12807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12808 WDI_TDLS_LINK_ESTABLISH_REQ,
12809 sizeof(halSetTDLSLinkEstablishParams),
12810 &pSendBuffer, &usDataOffset, &usSendSize))||
12811 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12812 {
12813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12814 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12815 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12816 WDI_ASSERT(0);
12817 return WDI_STATUS_E_FAILURE;
12818 }
12819
12820 halSetTDLSLinkEstablishParams.staIdx =
12821 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12822 halSetTDLSLinkEstablishParams.bIsResponder =
12823 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12824 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12825 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12826 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12827 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12828 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12829 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12830 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12831 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12832 halSetTDLSLinkEstablishParams.aAck = 0;
12833 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12834 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12835 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12836
12837 wpalMemoryCopy( pSendBuffer+usDataOffset,
12838 &halSetTDLSLinkEstablishParams,
12839 sizeof(halSetTDLSLinkEstablishParams));
12840
12841 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12842 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12843
12844 /*-------------------------------------------------------------------------
12845 Send Update Probe Resp Template Request to HAL
12846 -------------------------------------------------------------------------*/
12847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12848 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12849 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12850 return 0;
12851}/*WDI_ProcessTdlsLinkEstablishReq*/
12852
12853
12854#endif
12855
Jeff Johnson295189b2012-06-20 16:38:30 -070012856
12857
12858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 @param None
12862
12863 @see
12864 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012865*/
12866void
12867WDI_SetPowerStateCb
12868(
12869 wpt_status status,
12870 unsigned int dxePhyAddr,
12871 void *pContext
12872)
12873{
12874 wpt_status wptStatus;
12875 WDI_ControlBlockType *pCB = NULL;
12876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12877 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12878 {
12879 //it shouldn't happen, put an error msg
12880 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 /*
12882 * Trigger the event to bring the Enter BMPS req function to come
12883 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012884*/
12885 if( NULL != pContext )
12886 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 }
12889 else
12890 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pCB = &gWDICb;
12893 }
12894 pCB->dxePhyAddr = dxePhyAddr;
12895 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12896 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12897 {
12898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12899 "Failed to set an event");
12900
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 }
12903 return;
12904}
12905
12906
12907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012910
12911 @param pWDICtx: pointer to the WLAN DAL context
12912 pEventData: pointer to the event information structure
12913
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 @see
12915 @return Result of the function call
12916*/
12917WDI_Status
12918WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012919(
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 WDI_ControlBlockType* pWDICtx,
12921 WDI_EventInfoType* pEventData
12922)
12923{
Jeff Johnson43971f52012-07-17 12:26:56 -070012924 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 wpt_uint16 usDataOffset = 0;
12928 wpt_uint16 usSendSize = 0;
12929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12930
12931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 -------------------------------------------------------------------------*/
12934 if (( NULL == pEventData ) ||
12935 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12936 {
12937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012940 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 }
12942
12943 /*-----------------------------------------------------------------------
12944 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 0,
12949 &pSendBuffer, &usDataOffset, &usSendSize))||
12950 ( usSendSize < (usDataOffset )))
12951 {
12952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12953 "Unable to get send buffer in Enter IMPS req %x %x",
12954 pEventData, wdiEnterImpsRspCb);
12955 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012956 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 }
12958
12959 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012960 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12961 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 {
12963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12964 "WDI Init failed to reset an event");
12965
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012967 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 }
12969
12970 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012971 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12972 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12974 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12975 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012976 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012977 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012978
12979 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012980 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012982 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12983 WDI_SET_POWER_STATE_TIMEOUT);
12984 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 {
12986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12987 "WDI Init failed to wait on an event");
12988
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012990 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 }
12992
12993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12997 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012998
12999fail:
13000 // Release the message buffer so we don't leak
13001 wpalMemoryFree(pSendBuffer);
13002
13003failRequest:
13004 //WDA should have failure check to avoid the memory leak
13005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006}/*WDI_ProcessEnterImpsReq*/
13007
13008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013011
13012 @param pWDICtx: pointer to the WLAN DAL context
13013 pEventData: pointer to the event information structure
13014
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 @see
13016 @return Result of the function call
13017*/
13018WDI_Status
13019WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013020(
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 WDI_ControlBlockType* pWDICtx,
13022 WDI_EventInfoType* pEventData
13023)
13024{
13025 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 wpt_uint16 usDataOffset = 0;
13028 wpt_uint16 usSendSize = 0;
13029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13030
13031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 -------------------------------------------------------------------------*/
13034 if (( NULL == pEventData ) ||
13035 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13036 {
13037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 }
13042
13043 /*-----------------------------------------------------------------------
13044 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 0,
13049 &pSendBuffer, &usDataOffset, &usSendSize))||
13050 ( usSendSize < (usDataOffset )))
13051 {
13052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13053 "Unable to get send buffer in Exit IMPS req %x %x",
13054 pEventData, wdiExitImpsRspCb);
13055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 }
13058
13059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13063 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013064}/*WDI_ProcessExitImpsReq*/
13065
13066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013069
13070 @param pWDICtx: pointer to the WLAN DAL context
13071 pEventData: pointer to the event information structure
13072
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 @see
13074 @return Result of the function call
13075*/
13076WDI_Status
13077WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013078(
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 WDI_ControlBlockType* pWDICtx,
13080 WDI_EventInfoType* pEventData
13081)
13082{
13083 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13084 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 wpt_uint16 usDataOffset = 0;
13087 wpt_uint16 usSendSize = 0;
13088 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013089 wpt_status wptStatus;
13090
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13098 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13099 {
13100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013103 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013104 }
13105
13106 /*-----------------------------------------------------------------------
13107 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 sizeof(enterBmpsReq),
13112 &pSendBuffer, &usDataOffset, &usSendSize))||
13113 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13114 {
13115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13116 "Unable to get send buffer in Enter BMPS req %x %x %x",
13117 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13118 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013119 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 }
13121
13122 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013123 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 {
13126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13127 "WDI Init failed to reset an event");
13128
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013130 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 }
13132
13133 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013134 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13135 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13136 {
13137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13138 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13139 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013140 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013141 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013142
13143/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013146 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13147 WDI_SET_POWER_STATE_TIMEOUT);
13148 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 {
13150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13151 "WDI Init failed to wait on an event");
13152
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013154 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013155 }
13156
13157 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13158
13159 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13160 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13161 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13162 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13163
13164 // For CCX and 11R Roaming
13165 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13166 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13167 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13168
13169 wpalMemoryCopy( pSendBuffer+usDataOffset,
13170 &enterBmpsReq,
13171 sizeof(enterBmpsReq));
13172
13173 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013174 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013175
13176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13180 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013181
13182fail:
13183 // Release the message buffer so we don't leak
13184 wpalMemoryFree(pSendBuffer);
13185
13186failRequest:
13187 //WDA should have failure check to avoid the memory leak
13188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013189}/*WDI_ProcessEnterBmpsReq*/
13190
13191/**
13192 @brief Process Exit BMPS Request function (called when Main FSM
13193 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013194
13195 @param pWDICtx: pointer to the WLAN DAL context
13196 pEventData: pointer to the event information structure
13197
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 @see
13199 @return Result of the function call
13200*/
13201WDI_Status
13202WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013203(
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 WDI_ControlBlockType* pWDICtx,
13205 WDI_EventInfoType* pEventData
13206)
13207{
13208 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13209 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 wpt_uint16 usDataOffset = 0;
13212 wpt_uint16 usSendSize = 0;
13213 tHalExitBmpsReqParams exitBmpsReq;
13214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13215
13216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 -------------------------------------------------------------------------*/
13219 if (( NULL == pEventData ) ||
13220 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13221 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13222 {
13223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 }
13228
13229 /*-----------------------------------------------------------------------
13230 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013234 sizeof(exitBmpsReq),
13235 &pSendBuffer, &usDataOffset, &usSendSize))||
13236 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13237 {
13238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13239 "Unable to get send buffer in Exit BMPS req %x %x %x",
13240 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 }
13244 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13245
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13247
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 wpalMemoryCopy( pSendBuffer+usDataOffset,
13249 &exitBmpsReq,
13250 sizeof(exitBmpsReq));
13251
13252 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013254
13255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13259 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013260}/*WDI_ProcessExitBmpsReq*/
13261
13262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013265
13266 @param pWDICtx: pointer to the WLAN DAL context
13267 pEventData: pointer to the event information structure
13268
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 @see
13270 @return Result of the function call
13271*/
13272WDI_Status
13273WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013274(
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 WDI_ControlBlockType* pWDICtx,
13276 WDI_EventInfoType* pEventData
13277)
13278{
13279 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13280 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 wpt_uint16 usDataOffset = 0;
13283 wpt_uint16 usSendSize = 0;
13284 tUapsdReqParams enterUapsdReq;
13285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13286
13287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 -------------------------------------------------------------------------*/
13290 if (( NULL == pEventData ) ||
13291 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13292 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13293 {
13294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 }
13299
13300 /*-----------------------------------------------------------------------
13301 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 sizeof(enterUapsdReq),
13306 &pSendBuffer, &usDataOffset, &usSendSize))||
13307 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13308 {
13309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13310 "Unable to get send buffer in Enter UAPSD req %x %x %x",
13311 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 }
13315
13316 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13317 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13318 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13319 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13320 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13321 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13322 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13323 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013324 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013325
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 wpalMemoryCopy( pSendBuffer+usDataOffset,
13327 &enterUapsdReq,
13328 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013329
13330 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013331 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013332
13333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013334 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13337 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013338}/*WDI_ProcessEnterUapsdReq*/
13339
13340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013343
13344 @param pWDICtx: pointer to the WLAN DAL context
13345 pEventData: pointer to the event information structure
13346
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 @see
13348 @return Result of the function call
13349*/
13350WDI_Status
13351WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013352(
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 WDI_ControlBlockType* pWDICtx,
13354 WDI_EventInfoType* pEventData
13355)
13356{
13357 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 wpt_uint16 usDataOffset = 0;
13360 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013361 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13362 wpt_uint8 bssIdx = 0;
13363
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13365
13366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 -------------------------------------------------------------------------*/
13369 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013370 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13372 {
13373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 }
13378
13379 /*-----------------------------------------------------------------------
13380 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013381 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013384 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013386 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 {
13388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13389 "Unable to get send buffer in Exit UAPSD req %x %x",
13390 pEventData, wdiExitUapsdRspCb);
13391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 }
13394
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013395 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13396
13397 wpalMemoryCopy( pSendBuffer+usDataOffset,
13398 &bssIdx,
13399 sizeof(wpt_uint8));
13400
13401 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13402 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13403
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13408 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013409}/*WDI_ProcessExitUapsdReq*/
13410
13411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013414
13415 @param pWDICtx: pointer to the WLAN DAL context
13416 pEventData: pointer to the event information structure
13417
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 @see
13419 @return Result of the function call
13420*/
13421WDI_Status
13422WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013423(
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 WDI_ControlBlockType* pWDICtx,
13425 WDI_EventInfoType* pEventData
13426)
13427{
13428 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13429 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 wpt_uint16 usDataOffset = 0;
13432 wpt_uint16 usSendSize = 0;
13433 tUapsdInfo uapsdAcParamsReq;
13434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13435
13436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 -------------------------------------------------------------------------*/
13439 if (( NULL == pEventData ) ||
13440 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13441 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13442 {
13443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 }
13448
13449 /*-----------------------------------------------------------------------
13450 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 sizeof(uapsdAcParamsReq),
13455 &pSendBuffer, &usDataOffset, &usSendSize))||
13456 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13457 {
13458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13459 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13460 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 }
13464
13465 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13466 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13467 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13468 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13469 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13470 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13471
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 wpalMemoryCopy( pSendBuffer+usDataOffset,
13473 &uapsdAcParamsReq,
13474 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013475
13476 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013478
13479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13483 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013484}/*WDI_ProcessSetUapsdAcParamsReq*/
13485
13486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013489
13490 @param pWDICtx: pointer to the WLAN DAL context
13491 pEventData: pointer to the event information structure
13492
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 @see
13494 @return Result of the function call
13495*/
13496WDI_Status
13497WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013498(
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 WDI_ControlBlockType* pWDICtx,
13500 WDI_EventInfoType* pEventData
13501)
13502{
13503 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13504 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 wpt_uint16 usDataOffset = 0;
13507 wpt_uint16 usSendSize = 0;
13508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13509
13510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 -------------------------------------------------------------------------*/
13513 if (( NULL == pEventData ) ||
13514 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13515 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13516 {
13517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 }
13522
13523 /*-----------------------------------------------------------------------
13524 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13529 &pSendBuffer, &usDataOffset, &usSendSize))||
13530 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13531 {
13532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13533 "Unable to get send buffer in Update UAPSD params req %x %x %x",
13534 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 }
13538
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 wpalMemoryCopy( pSendBuffer+usDataOffset,
13540 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13541 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013542
13543 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013545
13546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13550 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013551}/*WDI_ProcessUpdateUapsdParamsReq*/
13552
13553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013555 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013556
13557 @param pWDICtx: pointer to the WLAN DAL context
13558 pEventData: pointer to the event information structure
13559
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 @see
13561 @return Result of the function call
13562*/
13563WDI_Status
13564WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013565(
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 WDI_ControlBlockType* pWDICtx,
13567 WDI_EventInfoType* pEventData
13568)
13569{
13570 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13571 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 wpt_uint16 usDataOffset = 0;
13574 wpt_uint16 usSendSize = 0;
13575 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13576
13577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13578
13579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 -------------------------------------------------------------------------*/
13582 if (( NULL == pEventData ) ||
13583 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13584 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13585 {
13586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 }
13591
13592 /*-----------------------------------------------------------------------
13593 Get message buffer
13594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 sizeof(halRxpFilterParams),
13597 &pSendBuffer, &usDataOffset, &usSendSize))||
13598 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13599 {
13600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13601 "Unable to get send buffer in Set UAPSD params req %x %x %x",
13602 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 }
13606
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013609 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013610 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13611
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 wpalMemoryCopy( pSendBuffer+usDataOffset,
13613 &halRxpFilterParams,
13614 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013615
13616 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013618
13619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13623 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013624}/*WDI_ProcessConfigureRxpFilterReq*/
13625
13626/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013629
13630 @param pWDICtx: pointer to the WLAN DAL context
13631 pEventData: pointer to the event information structure
13632
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 @see
13634 @return Result of the function call
13635*/
13636WDI_Status
13637WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013638(
Jeff Johnson295189b2012-06-20 16:38:30 -070013639 WDI_ControlBlockType* pWDICtx,
13640 WDI_EventInfoType* pEventData
13641)
13642{
13643 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13644 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013646 wpt_uint16 usDataOffset = 0;
13647 wpt_uint16 usSendSize = 0;
13648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13649
13650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 -------------------------------------------------------------------------*/
13653 if (( NULL == pEventData ) ||
13654 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13655 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13656 {
13657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 }
13662
13663 /*-----------------------------------------------------------------------
13664 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13669 &pSendBuffer, &usDataOffset, &usSendSize))||
13670 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13671 {
13672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13673 "Unable to get send buffer in Set beacon filter req %x %x %x",
13674 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 }
13678
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 wpalMemoryCopy( pSendBuffer+usDataOffset,
13680 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13681 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13682 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13683 &pwdiBeaconFilterParams->aFilters[0],
13684 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013685
13686 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013688
13689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013692 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13693 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013694}/*WDI_ProcessSetBeaconFilterReq*/
13695
13696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013697 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013698 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013699
13700 @param pWDICtx: pointer to the WLAN DAL context
13701 pEventData: pointer to the event information structure
13702
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 @see
13704 @return Result of the function call
13705*/
13706WDI_Status
13707WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013708(
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 WDI_ControlBlockType* pWDICtx,
13710 WDI_EventInfoType* pEventData
13711)
13712{
13713 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13714 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 wpt_uint16 usDataOffset = 0;
13717 wpt_uint16 usSendSize = 0;
13718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13719
13720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 -------------------------------------------------------------------------*/
13723 if (( NULL == pEventData ) ||
13724 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13725 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13726 {
13727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 }
13732
13733 /*-----------------------------------------------------------------------
13734 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13739 &pSendBuffer, &usDataOffset, &usSendSize))||
13740 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13741 {
13742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13743 "Unable to get send buffer in remove beacon filter req %x %x %x",
13744 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 }
13748
Jeff Johnsone7245742012-09-05 17:12:55 -070013749 wpalMemoryCopy( pSendBuffer+usDataOffset,
13750 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13751 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013752
13753 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013755
13756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13760 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013761}
13762
13763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013766
13767 @param pWDICtx: pointer to the WLAN DAL context
13768 pEventData: pointer to the event information structure
13769
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 @see
13771 @return Result of the function call
13772*/
13773WDI_Status
13774WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013775(
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 WDI_ControlBlockType* pWDICtx,
13777 WDI_EventInfoType* pEventData
13778)
13779{
13780 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13781 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 wpt_uint16 usDataOffset = 0;
13784 wpt_uint16 usSendSize = 0;
13785 tHalRSSIThresholds rssiThresholdsReq;
13786 WDI_Status ret_status = 0;
13787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13788
13789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 -------------------------------------------------------------------------*/
13792 if (( NULL == pEventData ) ||
13793 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13794 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13795 {
13796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 }
13801
13802 /*-----------------------------------------------------------------------
13803 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 sizeof(rssiThresholdsReq),
13808 &pSendBuffer, &usDataOffset, &usSendSize))||
13809 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13810 {
13811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13812 "Unable to get send buffer in remove beacon filter req %x %x %x",
13813 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 }
13817
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013828 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013830 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013832 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013834 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13838
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 wpalMemoryCopy( pSendBuffer+usDataOffset,
13840 &rssiThresholdsReq,
13841 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013842
13843 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013845
13846 /*-------------------------------------------------------------------------
13847 Send Set threshold req to HAL
13848 -------------------------------------------------------------------------*/
13849 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13850 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13851 {
13852 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13853 // req. Then as a result of processing the threshold cross ind, we trigger
13854 // a Set threshold req, then we need to indicate to WDI that it needs to
13855 // go to busy state as a result of the indication as we sent a req in the
13856 // same WDI context.
13857 // Hence expected state transition is to busy.
13858 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13859 }
13860
13861 return ret_status;
13862}
13863
13864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013866 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013867
13868 @param pWDICtx: pointer to the WLAN DAL context
13869 pEventData: pointer to the event information structure
13870
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 @see
13872 @return Result of the function call
13873*/
13874WDI_Status
13875WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013876(
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 WDI_ControlBlockType* pWDICtx,
13878 WDI_EventInfoType* pEventData
13879)
13880{
13881 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13882 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 wpt_uint16 usDataOffset = 0;
13885 wpt_uint16 usSendSize = 0;
13886 tHalHostOffloadReq hostOffloadParams;
13887 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013888 wpt_uint8 ucCurrentBSSSesIdx = 0;
13889 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890
13891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13892
13893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 -------------------------------------------------------------------------*/
13896 if (( NULL == pEventData ) ||
13897 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13898 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13899 {
13900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013902 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013903 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 }
13905
13906 /*-----------------------------------------------------------------------
13907 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13912 &pSendBuffer, &usDataOffset, &usSendSize))||
13913 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13914 {
13915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13916 "Unable to get send buffer in host offload req %x %x %x",
13917 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13918 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013919 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 }
13921
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013922 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13923 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13924 &pBSSSes);
13925 if ( NULL == pBSSSes )
13926 {
13927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013928 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13929 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013930 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013931 }
13932
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13934 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013935
Jeff Johnson295189b2012-06-20 16:38:30 -070013936 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13937 {
13938 // ARP Offload
13939 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13940 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13941 4);
13942 }
13943 else
13944 {
13945 // NS Offload
13946 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13947 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13948 16);
13949
13950#ifdef WLAN_NS_OFFLOAD
13951 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13952 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13953 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13954 16);
13955 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13956 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13957 16);
13958 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13959 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13960 16);
13961 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13962 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13963 16);
13964 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13965 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13966 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013967 nsOffloadParams.srcIPv6AddrValid =
13968 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13969
13970 nsOffloadParams.targetIPv6Addr1Valid =
13971 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13972
13973 nsOffloadParams.targetIPv6Addr2Valid =
13974 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13975
13976 nsOffloadParams.slotIndex =
13977 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013978
Jeff Johnson295189b2012-06-20 16:38:30 -070013979#endif // WLAN_NS_OFFLOAD
13980 }
13981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013982 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13983
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 // copy hostOffloadParams into pSendBuffer
13985 wpalMemoryCopy( pSendBuffer+usDataOffset,
13986 &hostOffloadParams,
13987 sizeof(hostOffloadParams));
13988
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013989 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013991 // copy nsOffloadParams into pSendBuffer
13992 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 &nsOffloadParams,
13994 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013995 }
13996 else
13997 {
13998#ifdef WLAN_NS_OFFLOAD
13999 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14000 {
14001 // copy nsOffloadParams into pSendBuffer
14002 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14003 &nsOffloadParams,
14004 sizeof(nsOffloadParams));
14005 }
14006#endif
14007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014008
14009 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014011
14012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14016 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014017
14018fail:
14019 // Release the message buffer so we don't leak
14020 wpalMemoryFree(pSendBuffer);
14021
14022failRequest:
14023 //WDA should have failure check to avoid the memory leak
14024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014025}/*WDI_ProcessHostOffloadReq*/
14026
14027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014030
14031 @param pWDICtx: pointer to the WLAN DAL context
14032 pEventData: pointer to the event information structure
14033
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 @see
14035 @return Result of the function call
14036*/
14037WDI_Status
14038WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014039(
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 WDI_ControlBlockType* pWDICtx,
14041 WDI_EventInfoType* pEventData
14042)
14043{
14044 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14045 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 wpt_uint16 usDataOffset = 0;
14048 wpt_uint16 usSendSize = 0;
14049 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014050 wpt_uint8 ucCurrentBSSSesIdx = 0;
14051 WDI_BSSSessionType* pBSSSes = NULL;
14052
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14060 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14061 {
14062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14063 "Invalid parameters in Keep Alive req");
14064 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_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 sizeof(keepAliveReq),
14074 &pSendBuffer, &usDataOffset, &usSendSize))||
14075 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14076 {
14077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14078 "Unable to get send buffer in keep alive req %x %x %x",
14079 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
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 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14086 &pBSSSes);
14087 if ( NULL == pBSSSes )
14088 {
14089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014090 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014091 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014092 }
14093
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14095 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14096
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014097 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014098
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14100 {
14101 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14102 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14103 HAL_IPV4_ADDR_LEN);
14104 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14105 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 wpalMemoryCopy(keepAliveReq.destMacAddr,
14108 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14109 HAL_MAC_ADDR_LEN);
14110 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014111
14112 wpalMemoryCopy( pSendBuffer+usDataOffset,
14113 &keepAliveReq,
14114 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014115
14116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14117 "Process keep alive req %d",sizeof(keepAliveReq));
14118
14119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14120 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14121
14122 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014124
14125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14126 "Sending keep alive req to HAL");
14127
14128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014131 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14132 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014133
14134fail:
14135 // Release the message buffer so we don't leak
14136 wpalMemoryFree(pSendBuffer);
14137
14138failRequest:
14139 //WDA should have failure check to avoid the memory leak
14140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014141}/*WDI_ProcessKeepAliveReq*/
14142
14143
14144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014145 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014147
14148 @param pWDICtx: pointer to the WLAN DAL context
14149 pEventData: pointer to the event information structure
14150
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 @see
14152 @return Result of the function call
14153*/
14154WDI_Status
14155WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014156(
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 WDI_ControlBlockType* pWDICtx,
14158 WDI_EventInfoType* pEventData
14159)
14160{
14161 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14162 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 wpt_uint16 usDataOffset = 0;
14165 wpt_uint16 usSendSize = 0;
14166 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014167 wpt_uint8 ucCurrentBSSSesIdx = 0;
14168 WDI_BSSSessionType* pBSSSes = NULL;
14169
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14171
14172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 -------------------------------------------------------------------------*/
14175 if (( NULL == pEventData ) ||
14176 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14177 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14178 {
14179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014182 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 }
14184
14185 /*-----------------------------------------------------------------------
14186 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 sizeof(wowlAddBcPtrnReq),
14191 &pSendBuffer, &usDataOffset, &usSendSize))||
14192 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14193 {
14194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14195 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
14196 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14197 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014198 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 }
14200
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014201 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14202 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14203 &pBSSSes);
14204 if ( NULL == pBSSSes )
14205 {
14206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014207 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014208 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014209 }
14210
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014213 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14219
14220 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14221 {
14222 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14223 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14224 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14225 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14226 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14227 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14228 }
14229 else
14230 {
14231 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14232 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14233 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14234 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14235 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14236 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14237
14238 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14239 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14240 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14241 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14242 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14243 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14244 }
14245
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014246 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14247
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 wpalMemoryCopy( pSendBuffer+usDataOffset,
14249 &wowlAddBcPtrnReq,
14250 sizeof(wowlAddBcPtrnReq));
14251
14252 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014254
14255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14259 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014260fail:
14261 // Release the message buffer so we don't leak
14262 wpalMemoryFree(pSendBuffer);
14263
14264failRequest:
14265 //WDA should have failure check to avoid the memory leak
14266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014267}/*WDI_ProcessWowlAddBcPtrnReq*/
14268
14269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014271 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014272
14273 @param pWDICtx: pointer to the WLAN DAL context
14274 pEventData: pointer to the event information structure
14275
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 @see
14277 @return Result of the function call
14278*/
14279WDI_Status
14280WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014281(
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 WDI_ControlBlockType* pWDICtx,
14283 WDI_EventInfoType* pEventData
14284)
14285{
14286 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14287 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 wpt_uint16 usDataOffset = 0;
14290 wpt_uint16 usSendSize = 0;
14291 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014292 wpt_uint8 ucCurrentBSSSesIdx = 0;
14293 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14295
14296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 -------------------------------------------------------------------------*/
14299 if (( NULL == pEventData ) ||
14300 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14301 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14302 {
14303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014306 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 }
14308
14309 /*-----------------------------------------------------------------------
14310 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 sizeof(wowlDelBcPtrnReq),
14315 &pSendBuffer, &usDataOffset, &usSendSize))||
14316 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14317 {
14318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14319 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
14320 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14321 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014322 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 }
14324
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014325 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14326 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14327 &pBSSSes);
14328 if ( NULL == pBSSSes )
14329 {
14330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014331 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014332 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014333 }
14334
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014336 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014337
14338 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14339
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 wpalMemoryCopy( pSendBuffer+usDataOffset,
14341 &wowlDelBcPtrnReq,
14342 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014343
14344 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014346
14347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14351 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014352
14353fail:
14354 // Release the message buffer so we don't leak
14355 wpalMemoryFree(pSendBuffer);
14356
14357failRequest:
14358 //WDA should have failure check to avoid the memory leak
14359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014360}/*WDI_ProcessWowlDelBcPtrnReq*/
14361
14362/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014365
14366 @param pWDICtx: pointer to the WLAN DAL context
14367 pEventData: pointer to the event information structure
14368
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 @see
14370 @return Result of the function call
14371*/
14372WDI_Status
14373WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014374(
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 WDI_ControlBlockType* pWDICtx,
14376 WDI_EventInfoType* pEventData
14377)
14378{
14379 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14380 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 wpt_uint16 usDataOffset = 0;
14383 wpt_uint16 usSendSize = 0;
14384 tHalWowlEnterParams wowlEnterReq;
14385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14386
14387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 -------------------------------------------------------------------------*/
14390 if (( NULL == pEventData ) ||
14391 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14392 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14393 {
14394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 }
14399
14400 /*-----------------------------------------------------------------------
14401 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 sizeof(wowlEnterReq),
14406 &pSendBuffer, &usDataOffset, &usSendSize))||
14407 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14408 {
14409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14410 "Unable to get send buffer in Wowl enter req %x %x %x",
14411 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 }
14415
Kumar Anand21a26022013-07-22 14:35:34 -070014416 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14417
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014432 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14434
14435#ifdef WLAN_WAKEUP_EVENTS
14436 wowlEnterReq.ucWoWEAPIDRequestEnable =
14437 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14438
14439 wowlEnterReq.ucWoWEAPOL4WayEnable =
14440 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14441
14442 wowlEnterReq.ucWowNetScanOffloadMatch =
14443 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14444
14445 wowlEnterReq.ucWowGTKRekeyError =
14446 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14447
14448 wowlEnterReq.ucWoWBSSConnLoss =
14449 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14450#endif // WLAN_WAKEUP_EVENTS
14451
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014452 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14453
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14455 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14456 sizeof(tSirMacAddr));
14457
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 wpalMemoryCopy( pSendBuffer+usDataOffset,
14459 &wowlEnterReq,
14460 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014461
14462 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464
14465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14469 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014470}/*WDI_ProcessWowlEnterReq*/
14471
14472/**
14473 @brief Process Wowl exit Request function (called when Main FSM
14474 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014475
14476 @param pWDICtx: pointer to the WLAN DAL context
14477 pEventData: pointer to the event information structure
14478
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 @see
14480 @return Result of the function call
14481*/
14482WDI_Status
14483WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014484(
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 WDI_ControlBlockType* pWDICtx,
14486 WDI_EventInfoType* pEventData
14487)
14488{
14489 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014490 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 wpt_uint16 usDataOffset = 0;
14493 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014494 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14496
14497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 -------------------------------------------------------------------------*/
14500 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014501 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014502 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14503 {
14504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014508 }
14509
14510 /*-----------------------------------------------------------------------
14511 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014515 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014516 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014517 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 {
14519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14520 "Unable to get send buffer in Wowl Exit req %x %x",
14521 pEventData, wdiWowlExitCb);
14522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 }
14525
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014526 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14527
14528 wpalMemoryCopy( pSendBuffer+usDataOffset,
14529 &wowlExitparams,
14530 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14535 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014536}/*WDI_ProcessWowlExitReq*/
14537
14538/**
14539 @brief Process Configure Apps Cpu Wakeup State Request function
14540 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014541
14542 @param pWDICtx: pointer to the WLAN DAL context
14543 pEventData: pointer to the event information structure
14544
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 @see
14546 @return Result of the function call
14547*/
14548WDI_Status
14549WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014550(
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 WDI_ControlBlockType* pWDICtx,
14552 WDI_EventInfoType* pEventData
14553)
14554{
14555 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14556 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 wpt_uint16 usDataOffset = 0;
14559 wpt_uint16 usSendSize = 0;
14560 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14562
14563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 -------------------------------------------------------------------------*/
14566 if (( NULL == pEventData ) ||
14567 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14568 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14569 {
14570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 }
14575
14576 /*-----------------------------------------------------------------------
14577 Get message buffer
14578 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 sizeof(halCfgAppsCpuWakeupStateReqParams),
14581 &pSendBuffer, &usDataOffset, &usSendSize))||
14582 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14583 {
14584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14585 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
14586 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 }
14590
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14593
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 wpalMemoryCopy( pSendBuffer+usDataOffset,
14595 &halCfgAppsCpuWakeupStateReqParams,
14596 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014597
14598 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014600
14601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14605 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14606 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014607}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14608
14609#ifdef WLAN_FEATURE_VOWIFI_11R
14610/**
14611 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14612 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014613
14614 @param pWDICtx: pointer to the WLAN DAL context
14615 pEventData: pointer to the event information structure
14616
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 @see
14618 @return Result of the function call
14619*/
14620WDI_Status
14621WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014622(
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 WDI_ControlBlockType* pWDICtx,
14624 WDI_EventInfoType* pEventData
14625)
14626{
14627 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14628 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 wpt_uint16 usDataOffset = 0;
14633 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 wpt_macAddr macBSSID;
14636 tAggrAddTsReq halAggrAddTsReq;
14637 int i;
14638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14639
14640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 -------------------------------------------------------------------------*/
14643 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14644 ( NULL == pEventData->pCBfnc ))
14645 {
14646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 }
14651 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14652 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14653 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14654 /*-------------------------------------------------------------------------
14655 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 -------------------------------------------------------------------------*/
14658 wpalMutexAcquire(&pWDICtx->wptMutex);
14659
14660 /*------------------------------------------------------------------------
14661 Find the BSS for which the request is made and identify WDI session
14662 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14664 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 &macBSSID))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14668 "This station does not exist in the WDI Station Table %d");
14669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 }
14672
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14674 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14677 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14678 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014679
14680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014683
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 /*------------------------------------------------------------------------
14685 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 ------------------------------------------------------------------------*/
14688 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14689 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14691 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14692 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014693
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 }
14698
14699 wpalMutexRelease(&pWDICtx->wptMutex);
14700 /*-----------------------------------------------------------------------
14701 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 sizeof(tAggrAddTsParams),
14706 &pSendBuffer, &usDataOffset, &usSendSize))||
14707 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14708 {
14709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14710 "Unable to get send buffer in set bss key req %x %x %x",
14711 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 }
14715
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14720
14721 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14722 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14729 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14732 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14735 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14738 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14741 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14744 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14747 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14750 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014755
14756
14757 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014783 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014785 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14787 }
14788
Jeff Johnsone7245742012-09-05 17:12:55 -070014789 wpalMemoryCopy( pSendBuffer+usDataOffset,
14790 &halAggrAddTsReq,
14791 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014792
14793 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014795
14796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014802}/*WDI_ProcessAggrAddTSpecReq*/
14803#endif /* WLAN_FEATURE_VOWIFI_11R */
14804
14805/**
14806 @brief Process Shutdown Request function (called when Main FSM
14807 allows it)
14808
14809 @param pWDICtx: pointer to the WLAN DAL context
14810 pEventData: pointer to the event information structure
14811
14812 @see
14813 @return Result of the function call
14814*/
14815WDI_Status
14816WDI_ProcessShutdownReq
14817(
14818 WDI_ControlBlockType* pWDICtx,
14819 WDI_EventInfoType* pEventData
14820 )
14821{
14822 wpt_status wptStatus;
14823
14824
14825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14826
14827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 -------------------------------------------------------------------------*/
14830 if ( NULL == pEventData )
14831 {
14832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 WDI_ASSERT(0);
14835 return WDI_STATUS_E_FAILURE;
14836 }
14837
14838 wpalMutexAcquire(&pWDICtx->wptMutex);
14839
14840
14841 gWDIInitialized = eWLAN_PAL_FALSE;
14842 /*! TO DO: stop the data services */
14843 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14844 {
14845 /*Stop the STA Table !UT- check this logic again
14846 It is safer to do it here than on the response - because a stop is imminent*/
14847 WDI_STATableStop(pWDICtx);
14848
14849 /* Stop Transport Driver, DXE */
14850 WDTS_Stop(pWDICtx);
14851 }
14852
14853 /*Clear all pending request*/
14854 WDI_ClearPendingRequests(pWDICtx);
14855 /* Close Data transport*/
14856 /* FTM mode does not open Data Path */
14857 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14858 {
14859 WDTS_Close(pWDICtx);
14860 }
14861 /*Close the STA Table !UT- check this logic again*/
14862 WDI_STATableClose(pWDICtx);
14863 /*close the PAL */
14864 wptStatus = wpalClose(pWDICtx->pPALContext);
14865 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14866 {
14867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14868 "Failed to wpal Close %d", wptStatus);
14869 WDI_ASSERT(0);
14870 }
14871
14872 /*Transition back to init state*/
14873 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14874
14875 wpalMutexRelease(&pWDICtx->wptMutex);
14876
14877 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014879
14880
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014882}/*WDI_ProcessShutdownReq*/
14883
14884/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014886========================================================================*/
14887
14888/**
14889 @brief Process Start Response function (called when a response
14890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014891
14892 @param pWDICtx: pointer to the WLAN DAL context
14893 pEventData: pointer to the event information structure
14894
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 @see
14896 @return Result of the function call
14897*/
14898WDI_Status
14899WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014900(
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 WDI_ControlBlockType* pWDICtx,
14902 WDI_EventInfoType* pEventData
14903)
14904{
14905 WDI_StartRspParamsType wdiRspParams;
14906 WDI_StartRspCb wdiStartRspCb = NULL;
14907
14908 tHalMacStartRspParams* startRspParams;
14909
14910#ifndef HAL_SELF_STA_PER_BSS
14911 WDI_AddStaParams wdiAddSTAParam = {0};
14912#endif
14913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14914
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 -------------------------------------------------------------------------*/
14919 if (( NULL == pEventData ) ||
14920 ( NULL == pEventData->pEventData) ||
14921 ( NULL == wdiStartRspCb ))
14922 {
14923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 }
14928
14929 /*-------------------------------------------------------------------------
14930 Extract response and send it to UMAC
14931 -------------------------------------------------------------------------*/
14932 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14933 {
14934 // not enough data was received
14935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14936 "Invalid response length in Start Resp Expect %x Rcvd %x",
14937 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 }
14941
14942 /*-------------------------------------------------------------------------
14943 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 -------------------------------------------------------------------------*/
14946 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14947
14948 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14949 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14950 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14951 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14952 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14953 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14954 wdiRspParams.wlanReportedVersion.major =
14955 startRspParams->wcnssWlanVersion.major;
14956 wdiRspParams.wlanReportedVersion.minor =
14957 startRspParams->wcnssWlanVersion.minor;
14958 wdiRspParams.wlanReportedVersion.version =
14959 startRspParams->wcnssWlanVersion.version;
14960 wdiRspParams.wlanReportedVersion.revision =
14961 startRspParams->wcnssWlanVersion.revision;
14962 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14963 startRspParams->wcnssCrmVersionString,
14964 sizeof(wdiRspParams.wcnssSoftwareVersion));
14965 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14966 startRspParams->wcnssWlanVersionString,
14967 sizeof(wdiRspParams.wcnssHardwareVersion));
14968 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14969
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014970 /*Save the HAL Version*/
14971 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14972
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 wpalMutexAcquire(&pWDICtx->wptMutex);
14974 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14975 {
14976 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14977
14978 /*Cache the start response for further use*/
14979 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 sizeof(pWDICtx->wdiCachedStartRspParams));
14982
14983 }
14984 else
14985 {
14986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14987 "Failed to start device with status %s(%d)",
14988 WDI_getHALStatusMsgString(startRspParams->status),
14989 startRspParams->status);
14990
14991 /*Set the expected state transition to stopped - because the start has
14992 failed*/
14993 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14994
14995 wpalMutexRelease(&pWDICtx->wptMutex);
14996
14997 /*Notify UMAC*/
14998 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014999
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15001
15002 /*Although the response is an error - it was processed by our function
15003 so as far as the caller is concerned this is a succesful reponse processing*/
15004 return WDI_STATUS_SUCCESS;
15005 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015006
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 wpalMutexRelease(&pWDICtx->wptMutex);
15008
15009 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15010 {
15011 /* FTM mode does not need to execute below */
15012 /* Notify UMAC */
15013 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15014 return WDI_STATUS_SUCCESS;
15015 }
15016
15017 /* START the Data transport */
15018 WDTS_startTransport(pWDICtx);
15019
15020 /*Start the STA Table !- check this logic again*/
15021 WDI_STATableStart(pWDICtx);
15022
15023#ifndef HAL_SELF_STA_PER_BSS
15024 /* Store the Self STA Index */
15025 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15026
15027 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15028 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15029 WDI_MAC_ADDR_LEN);
15030
15031 /* At this point add the self-STA */
15032
15033 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15034 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15035 /*! TO DO: wdiAddSTAParam.dpuSig */
15036 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15037 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15038 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15039
15040 //all DPU indices are the same for self STA
15041 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15042 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015043 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015044 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15045 WDI_MAC_ADDR_LEN);
15046 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15047 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15048
15049 /* Note: Since we don't get an explicit config STA request for self STA, we
15050 add the self STA upon receiving the Start response message. But the
15051 self STA entry in the table is deleted when WDI gets an explicit delete STA
15052 request */
15053 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15054#endif
15055
15056 /*Notify UMAC*/
15057 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15058
Jeff Johnsone7245742012-09-05 17:12:55 -070015059 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015060}/*WDI_ProcessStartRsp*/
15061
15062
15063/**
15064 @brief Process Stop Response function (called when a response
15065 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015066
15067 @param pWDICtx: pointer to the WLAN DAL context
15068 pEventData: pointer to the event information structure
15069
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 @see
15071 @return Result of the function call
15072*/
15073WDI_Status
15074WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015075(
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 WDI_ControlBlockType* pWDICtx,
15077 WDI_EventInfoType* pEventData
15078)
15079{
15080 WDI_Status wdiStatus;
15081 WDI_StopRspCb wdiStopRspCb = NULL;
15082
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15085
Jeff Johnsone7245742012-09-05 17:12:55 -070015086 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 -------------------------------------------------------------------------*/
15090 if (( NULL == pEventData ) ||
15091 ( NULL == pEventData->pEventData) ||
15092 ( NULL == wdiStopRspCb ))
15093 {
15094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015095 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 }
15099
15100 /*-------------------------------------------------------------------------
15101 Extract response and send it to UMAC
15102 -------------------------------------------------------------------------*/
15103 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15104 {
15105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15106 "Invalid response length in Stop Resp %x %x",
15107 pEventData->uEventDataSize);
15108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 }
15111
15112 /*-------------------------------------------------------------------------
15113 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15117 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015118 sizeof(halMacStopRspMsg.stopRspParams));
15119
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015121
15122 wpalMutexAcquire(&pWDICtx->wptMutex);
15123
15124 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015125 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 --------------------------------------------------------------------------*/
15127 if ( WDI_STATUS_SUCCESS != wdiStatus )
15128 {
15129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15130 "Failed to stop the device with status %s (%d)",
15131 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15132 halMacStopRspMsg.stopRspParams.status);
15133
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15135
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015139
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15141
15142 /*Transition now as WDI may get preempted imediately after it sends
15143 up the Stop Response and it will not get to process the state transition
15144 from Main Rsp function*/
15145 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15146 wpalMutexRelease(&pWDICtx->wptMutex);
15147
15148 /*! TO DO: - STOP the Data transport */
15149
15150 /*Notify UMAC*/
15151 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15152
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015154}/*WDI_ProcessStopRsp*/
15155
15156/**
15157 @brief Process Close Rsp function (called when a response
15158 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015159
15160 @param pWDICtx: pointer to the WLAN DAL context
15161 pEventData: pointer to the event information structure
15162
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 @see
15164 @return Result of the function call
15165*/
15166WDI_Status
15167WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015168(
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 WDI_ControlBlockType* pWDICtx,
15170 WDI_EventInfoType* pEventData
15171)
15172{
15173 /*There is no close response comming from HAL - function just kept for
15174 simmetry */
15175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015177}/*WDI_ProcessCloseRsp*/
15178
15179
15180/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015182============================================================================*/
15183
15184/**
15185 @brief Process Init Scan Rsp function (called when a response
15186 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015187
15188 @param pWDICtx: pointer to the WLAN DAL context
15189 pEventData: pointer to the event information structure
15190
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 @see
15192 @return Result of the function call
15193*/
15194WDI_Status
15195WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015196(
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 WDI_ControlBlockType* pWDICtx,
15198 WDI_EventInfoType* pEventData
15199)
15200{
15201 WDI_Status wdiStatus;
15202 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015204 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15206
15207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 -------------------------------------------------------------------------*/
15210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15211 ( NULL == pEventData->pEventData))
15212 {
15213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 }
15218
15219 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15220 if( NULL == wdiInitScanRspCb)
15221 {
15222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015223 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015226 }
15227
15228 /*-------------------------------------------------------------------------
15229 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015232 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15233 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 sizeof(halInitScanRspMsg.initScanRspParams));
15235
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015237
15238 if ( pWDICtx->bInBmps )
15239 {
15240 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015241 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15242 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15244 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15245 WDI_ASSERT(0);
15246 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 }
15248
15249 /*Notify UMAC*/
15250 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15251
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015253}/*WDI_ProcessInitScanRsp*/
15254
15255
15256/**
15257 @brief Process Start Scan Rsp function (called when a response
15258 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015259
15260 @param pWDICtx: pointer to the WLAN DAL context
15261 pEventData: pointer to the event information structure
15262
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 @see
15264 @return Result of the function call
15265*/
15266WDI_Status
15267WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015268(
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 WDI_ControlBlockType* pWDICtx,
15270 WDI_EventInfoType* pEventData
15271)
15272{
15273 WDI_StartScanRspParamsType wdiStartScanParams;
15274 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015275
15276 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15278
15279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 -------------------------------------------------------------------------*/
15282 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15283 ( NULL == pEventData->pEventData))
15284 {
15285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 }
15290
15291 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15292 if( NULL == wdiStartScanRspCb)
15293 {
15294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015295 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 }
15299
15300 /*-------------------------------------------------------------------------
15301 Extract response and send it to UMAC
15302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15304 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 sizeof(halStartScanRspMsg.startScanRspParams));
15306
15307 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15308 halStartScanRspMsg.startScanRspParams.status);
15309#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015312 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 halStartScanRspMsg.startScanRspParams.startTSF,
15314 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015315#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015316
15317 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15318 {
15319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15320 "Start scan failed with status %s (%d)",
15321 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15322 halStartScanRspMsg.startScanRspParams.status);
15323 /* send the status to UMAC, don't return from here*/
15324 }
15325
15326 /*Notify UMAC*/
15327 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15328
Jeff Johnsone7245742012-09-05 17:12:55 -070015329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015330
15331}/*WDI_ProcessStartScanRsp*/
15332
15333
15334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015335 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015337
15338 @param pWDICtx: pointer to the WLAN DAL context
15339 pEventData: pointer to the event information structure
15340
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 @see
15342 @return Result of the function call
15343*/
15344WDI_Status
15345WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015346(
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 WDI_ControlBlockType* pWDICtx,
15348 WDI_EventInfoType* pEventData
15349)
15350{
15351 WDI_Status wdiStatus;
15352 tHalEndScanRspMsg halEndScanRspMsg;
15353 WDI_EndScanRspCb wdiEndScanRspCb;
15354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15355
15356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 -------------------------------------------------------------------------*/
15359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15360 ( NULL == pEventData->pEventData))
15361 {
15362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 }
15367
15368 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15369
15370 /*-------------------------------------------------------------------------
15371 Extract response and send it to UMAC
15372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15374 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 sizeof(halEndScanRspMsg.endScanRspParams));
15376
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015378
15379 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15380 {
15381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15382 "End Scan failed with status %s (%d )",
15383 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15384 halEndScanRspMsg.endScanRspParams.status);
15385 /* send the status to UMAC, don't return from here*/
15386 }
15387
15388 /*Notify UMAC*/
15389 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15390
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015392}/*WDI_ProcessEndScanRsp*/
15393
15394
15395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015398
15399 @param pWDICtx: pointer to the WLAN DAL context
15400 pEventData: pointer to the event information structure
15401
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 @see
15403 @return Result of the function call
15404*/
15405WDI_Status
15406WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015407(
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 WDI_ControlBlockType* pWDICtx,
15409 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015410)
Jeff Johnson295189b2012-06-20 16:38:30 -070015411{
15412 WDI_Status wdiStatus;
15413 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015414
15415 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15417
15418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 -------------------------------------------------------------------------*/
15421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15422 ( NULL == pEventData->pEventData))
15423 {
15424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 }
15429
15430 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15431
15432 /*-------------------------------------------------------------------------
15433 Extract response and send it to UMAC
15434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015435 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15436 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15438
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015440
15441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 halFinishScanRspMsg.finishScanRspParams.status);
15444
15445 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15446 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15447 {
15448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15449 "Finish Scan failed with status %s (%d)",
15450 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15451 halFinishScanRspMsg.finishScanRspParams.status);
15452 /* send the status to UMAC, don't return from here*/
15453 }
15454
15455 /*Notify UMAC*/
15456 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15457
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459}/*WDI_ProcessFinishScanRsp*/
15460
15461/**
15462 @brief Process Join Response function (called when a response
15463 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015464
15465 @param pWDICtx: pointer to the WLAN DAL context
15466 pEventData: pointer to the event information structure
15467
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 @see
15469 @return Result of the function call
15470*/
15471WDI_Status
15472WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015473(
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 WDI_ControlBlockType* pWDICtx,
15475 WDI_EventInfoType* pEventData
15476)
15477{
15478 WDI_Status wdiStatus;
15479 WDI_JoinRspCb wdiJoinRspCb;
15480 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015481
15482 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15484
15485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 -------------------------------------------------------------------------*/
15488 if (( NULL == pWDICtx ) ||
15489 ( NULL == pWDICtx->pfncRspCB ) ||
15490 ( NULL == pEventData ) ||
15491 ( NULL == pEventData->pEventData))
15492 {
15493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 }
15498
15499 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15500
15501 /*-------------------------------------------------------------------------
15502 Extract response and send it to UMAC
15503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15505 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 sizeof(halJoinRspMsg.joinRspParams));
15507
Jeff Johnsone7245742012-09-05 17:12:55 -070015508 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015509
15510 wpalMutexAcquire(&pWDICtx->wptMutex);
15511
15512 /*-----------------------------------------------------------------------
15513 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15518 {
15519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15521 "association no longer in progress %d - mysterious HAL response",
15522 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015523
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
15528
15529 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15530
15531 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 -----------------------------------------------------------------------*/
15534 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15535 {
15536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15537 "Join only allowed in Joining state - failure state is %d "
15538 "strange HAL response", pBSSSes->wdiAssocState);
15539
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15541
Jeff Johnson295189b2012-06-20 16:38:30 -070015542 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 }
15545
15546
15547 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 -----------------------------------------------------------------------*/
15550 if ( WDI_STATUS_SUCCESS != wdiStatus )
15551 {
15552 /*Association was failed by HAL - remove session*/
15553 WDI_DeleteSession(pWDICtx, pBSSSes);
15554
15555 /*Association no longer in progress */
15556 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15557
15558 /*Association no longer in progress - prepare pending assoc for processing*/
15559 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 }
15562 else
15563 {
15564 /*Transition to state Joining - this may be redundant as we are supposed
15565 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 }
15568
15569 wpalMutexRelease(&pWDICtx->wptMutex);
15570
15571 /*Notify UMAC*/
15572 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15573
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015575}/*WDI_ProcessJoinRsp*/
15576
15577
15578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015581
15582 @param pWDICtx: pointer to the WLAN DAL context
15583 pEventData: pointer to the event information structure
15584
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 @see
15586 @return Result of the function call
15587*/
15588WDI_Status
15589WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015590(
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 WDI_ControlBlockType* pWDICtx,
15592 WDI_EventInfoType* pEventData
15593)
15594{
15595 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15596 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 WDI_BSSSessionType* pBSSSes = NULL;
15599
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15602 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015603
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15605
15606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 -------------------------------------------------------------------------*/
15609 if (( NULL == pEventData ) ||
15610 ( NULL == pEventData->pEventData))
15611 {
15612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 }
15617
15618 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15619
15620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015623 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15624 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 sizeof(halConfigBssRspMsg.configBssRspParams));
15626
15627 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15628 halConfigBssRspMsg.configBssRspParams.status);
15629 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15630 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15633 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015634
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636
15637 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639
15640 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015644
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15648 #endif
15649 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15650 halConfigBssRspMsg.configBssRspParams.staMac,
15651 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015652
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 wpalMutexAcquire(&pWDICtx->wptMutex);
15654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15658 wdiConfigBSSParams.macBSSID,
15659 &pBSSSes);
15660
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 /*-----------------------------------------------------------------------
15662 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 -----------------------------------------------------------------------*/
15665 if ( NULL == pBSSSes )
15666 {
15667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15668 "Association sequence for this BSS does not yet exist "
15669 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015670
15671 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15672
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015676
Jeff Johnson295189b2012-06-20 16:38:30 -070015677 /*Save data for this BSS*/
15678 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15679 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15690 pBSSSes->bcastStaIdx =
15691 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015692
Jeff Johnson295189b2012-06-20 16:38:30 -070015693 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015694
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 /*-------------------------------------------------------------------------
15696 Add Peer STA
15697 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15700 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015701
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 wdiAddSTAParam.ucHTCapable =
15706 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15707 wdiAddSTAParam.ucStaType =
15708 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15709
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15712 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015713 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015714
15715 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15716 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15717 WDI_MAC_ADDR_LEN);
15718
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015720 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015732
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15734 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015735
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15737 /*-------------------------------------------------------------------------
15738 Add Broadcast STA only in AP mode
15739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015741 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 {
15743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15744 "Add BCAST STA to table for index: %d",
15745 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015746
15747 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015749
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15751 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15752 }
15753 wpalMutexRelease(&pWDICtx->wptMutex);
15754 }
15755 else
15756 {
15757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15758 "Config BSS RSP failed with status : %s(%d)",
15759 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 halConfigBssRspMsg.configBssRspParams.status);
15762
Jeff Johnsone7245742012-09-05 17:12:55 -070015763
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 /*Association was failed by HAL - remove session*/
15765 WDI_DeleteSession(pWDICtx, pBSSSes);
15766
15767 /*Association no longer in progress */
15768 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15769
15770 /*Association no longer in progress - prepare pending assoc for processing*/
15771 WDI_DequeueAssocRequest(pWDICtx);
15772
15773 }
15774
15775 /*Notify UMAC*/
15776 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15777
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015779}/*WDI_ProcessConfigBSSRsp*/
15780
15781
15782/**
15783 @brief Process Del BSS Response function (called when a response
15784 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015785
15786 @param pWDICtx: pointer to the WLAN DAL context
15787 pEventData: pointer to the event information structure
15788
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 @see
15790 @return Result of the function call
15791*/
15792WDI_Status
15793WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015794(
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 WDI_ControlBlockType* pWDICtx,
15796 WDI_EventInfoType* pEventData
15797)
15798{
15799 WDI_DelBSSRspParamsType wdiDelBSSParams;
15800 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 WDI_BSSSessionType* pBSSSes = NULL;
15803
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15806
15807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 -------------------------------------------------------------------------*/
15810 if (( NULL == pEventData ) ||
15811 ( NULL == pEventData->pEventData))
15812 {
15813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 }
15818
15819 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15820
15821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15825 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 sizeof(halDelBssRspMsg.deleteBssRspParams));
15827
15828
15829 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015830 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015831
15832 wpalMutexAcquire(&pWDICtx->wptMutex);
15833
15834 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15838 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15839 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015840
15841 /*-----------------------------------------------------------------------
15842 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 -----------------------------------------------------------------------*/
15845 if ( NULL == pBSSSes )
15846 {
15847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15848 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015849 "association no longer in progress - mysterious HAL response");
15850
15851 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15852
15853 wpalMutexRelease(&pWDICtx->wptMutex);
15854 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015856
15857 /*Extract BSSID for the response to UMAC*/
15858 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15859 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15860
15861 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15862
15863 /*-----------------------------------------------------------------------
15864 The current session will be deleted
15865 -----------------------------------------------------------------------*/
15866 WDI_DeleteSession(pWDICtx, pBSSSes);
15867
15868
15869 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070015870 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
15871 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015873 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015874 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015875
15876 /* Delete the STA's in this BSS */
15877 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15878
Jeff Johnson295189b2012-06-20 16:38:30 -070015879 wpalMutexRelease(&pWDICtx->wptMutex);
15880
15881 /*Notify UMAC*/
15882 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15883
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015885}/*WDI_ProcessDelBSSRsp*/
15886
15887/**
15888 @brief Process Post Assoc Rsp function (called when a response
15889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015890
15891 @param pWDICtx: pointer to the WLAN DAL context
15892 pEventData: pointer to the event information structure
15893
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 @see
15895 @return Result of the function call
15896*/
15897WDI_Status
15898WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015899(
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 WDI_ControlBlockType* pWDICtx,
15901 WDI_EventInfoType* pEventData
15902)
15903{
15904 WDI_PostAssocRspParamsType wdiPostAssocParams;
15905 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015906 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015907 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015908 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15910
15911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 -------------------------------------------------------------------------*/
15914 if (( NULL == pEventData ) ||
15915 ( NULL == pEventData->pEventData))
15916 {
15917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 }
15922
15923 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15924
15925 /*-------------------------------------------------------------------------
15926 Extract response and send it to UMAC
15927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15929 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 sizeof(halPostAssocRspMsg.postAssocRspParams));
15931
15932 /*Extract the Post Assoc STA Params */
15933
Jeff Johnsone7245742012-09-05 17:12:55 -070015934 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015936 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 wdiPostAssocParams.wdiStatus =
15942 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015943
15944 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15945 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15947 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 WDI_MAC_ADDR_LEN);
15949
15950 /* Extract Post Assoc BSS Params */
15951
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15953 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15954 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015955
15956 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15957 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15960 .macSTA, WDI_MAC_ADDR_LEN);
15961
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15967
15968 wdiPostAssocParams.bssParams.ucBSSIdx =
15969 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15970
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15973
15974 wpalMutexAcquire(&pWDICtx->wptMutex);
15975
15976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015982
15983 /*-----------------------------------------------------------------------
15984 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 -----------------------------------------------------------------------*/
15987 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15990 {
15991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15992 "Association sequence for this BSS does not yet exist or "
15993 "association no longer in progress - mysterious HAL response");
15994
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15996
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 }
16000
16001 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016003 -----------------------------------------------------------------------*/
16004 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16007 "Post Assoc not allowed before JOIN - failing request "
16008 "strange HAL response");
16009
Jeff Johnsone7245742012-09-05 17:12:55 -070016010 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16011
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 }
16015
16016 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016017 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 -----------------------------------------------------------------------*/
16019 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16020 {
16021 /*Association was failed by HAL - remove session*/
16022 WDI_DeleteSession(pWDICtx, pBSSSes);
16023 }
16024 else
16025 {
16026 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016028
16029 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16038
Jeff Johnsone7245742012-09-05 17:12:55 -070016039 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16041 }
16042
16043 /*Association no longer in progress */
16044 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16045
16046 /*Association no longer in progress - prepare pending assoc for processing*/
16047 WDI_DequeueAssocRequest(pWDICtx);
16048
16049 wpalMutexRelease(&pWDICtx->wptMutex);
16050
16051 /*Notify UMAC*/
16052 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16053
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016055}/*WDI_ProcessPostAssocRsp*/
16056
16057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016058 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016060
16061 @param pWDICtx: pointer to the WLAN DAL context
16062 pEventData: pointer to the event information structure
16063
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 @see
16065 @return Result of the function call
16066*/
16067WDI_Status
16068WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016069(
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 WDI_ControlBlockType* pWDICtx,
16071 WDI_EventInfoType* pEventData
16072)
16073{
16074 WDI_DelSTARspParamsType wdiDelSTARsp;
16075 WDI_DelSTARspCb wdiDelSTARspCb;
16076 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16079
16080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 -------------------------------------------------------------------------*/
16083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16084 ( NULL == pEventData->pEventData))
16085 {
16086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 }
16091
16092 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16093
16094 /*-------------------------------------------------------------------------
16095 Extract response and send it to UMAC
16096 -------------------------------------------------------------------------*/
16097 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 sizeof(halDelStaRspMsg.delStaRspParams));
16100
16101 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 wdiDelSTARsp.wdiStatus =
16103 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016104
16105 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16106
16107 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16108 if(staType == WDI_STA_ENTRY_SELF)
16109 {
16110 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16111
16112 /* At this point add the self-STA */
16113
16114 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16115 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16116 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16117
16118#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16119#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16120
16121 //all DPU indices are the same for self STA
16122 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16123 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16124 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16125 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16126 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16127 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016128
16129 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 }
16131 else
16132 {
16133 //Delete the station in the table
16134 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16135 }
16136
16137 /*Notify UMAC*/
16138 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16139
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016141}/*WDI_ProcessDelSTARsp*/
16142
16143
16144/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016145 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016146==========================================================================*/
16147
16148/**
16149 @brief Process Set BSS Key Rsp function (called when a response
16150 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016151
16152 @param pWDICtx: pointer to the WLAN DAL context
16153 pEventData: pointer to the event information structure
16154
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 @see
16156 @return Result of the function call
16157*/
16158WDI_Status
16159WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016160(
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 WDI_ControlBlockType* pWDICtx,
16162 WDI_EventInfoType* pEventData
16163)
16164{
16165 WDI_Status wdiStatus;
16166 eHalStatus halStatus;
16167 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16169
16170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 -------------------------------------------------------------------------*/
16173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16174 ( NULL == pEventData->pEventData))
16175 {
16176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 }
16181
16182 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16183
16184 /*-------------------------------------------------------------------------
16185 Extract response and send it to UMAC
16186 -------------------------------------------------------------------------*/
16187 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016189
16190 if ( eHAL_STATUS_SUCCESS != halStatus )
16191 {
16192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16193 "Set BSS Key failed with status %s (%d)",
16194 WDI_getHALStatusMsgString(halStatus),
16195 halStatus);
16196 /* send the status to UMAC, don't return from here*/
16197 }
16198
16199 /*Notify UMAC*/
16200 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16201
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016203}/*WDI_ProcessSetBssKeyRsp*/
16204
16205/**
16206 @brief Process Remove BSS Key Rsp function (called when a response
16207 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016208
16209 @param pWDICtx: pointer to the WLAN DAL context
16210 pEventData: pointer to the event information structure
16211
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 @see
16213 @return Result of the function call
16214*/
16215WDI_Status
16216WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016217(
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 WDI_ControlBlockType* pWDICtx,
16219 WDI_EventInfoType* pEventData
16220)
16221{
16222 WDI_Status wdiStatus;
16223 eHalStatus halStatus;
16224 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16226
16227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 -------------------------------------------------------------------------*/
16230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16231 ( NULL == pEventData->pEventData))
16232 {
16233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 }
16238
16239 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16240
16241 /*-------------------------------------------------------------------------
16242 Extract response and send it to UMAC
16243 -------------------------------------------------------------------------*/
16244 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016246
16247 if ( eHAL_STATUS_SUCCESS != halStatus )
16248 {
16249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16250 "Remove BSS Key failed with status %s (%d )",
16251 WDI_getHALStatusMsgString(halStatus),
16252 halStatus);
16253 /* send the status to UMAC, don't return from here*/
16254 }
16255
16256 /*Notify UMAC*/
16257 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16258
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016260}/*WDI_ProcessSetBssKeyRsp*/
16261
16262
16263/**
16264 @brief Process Set STA Key Rsp function (called when a response
16265 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016266
16267 @param pWDICtx: pointer to the WLAN DAL context
16268 pEventData: pointer to the event information structure
16269
Jeff Johnson295189b2012-06-20 16:38:30 -070016270 @see
16271 @return Result of the function call
16272*/
16273WDI_Status
16274WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016275(
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 WDI_ControlBlockType* pWDICtx,
16277 WDI_EventInfoType* pEventData
16278)
16279{
16280 WDI_Status wdiStatus;
16281 eHalStatus halStatus;
16282 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16284
16285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 -------------------------------------------------------------------------*/
16288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16289 ( NULL == pEventData->pEventData))
16290 {
16291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 }
16296
16297 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16298
16299 /*-------------------------------------------------------------------------
16300 Extract response and send it to UMAC
16301 -------------------------------------------------------------------------*/
16302 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016304
16305 if ( eHAL_STATUS_SUCCESS != halStatus )
16306 {
16307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16308 "Set STA Key failed with status %s (%d)",
16309 WDI_getHALStatusMsgString(halStatus),
16310 halStatus);
16311 /* send the status to UMAC, don't return from here*/
16312 }
16313
16314 /*Notify UMAC*/
16315 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16316
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016318}/*WDI_ProcessSetSTAKeyRsp*/
16319
16320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016323
16324 @param pWDICtx: pointer to the WLAN DAL context
16325 pEventData: pointer to the event information structure
16326
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 @see
16328 @return Result of the function call
16329*/
16330WDI_Status
16331WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016332(
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 WDI_ControlBlockType* pWDICtx,
16334 WDI_EventInfoType* pEventData
16335)
16336{
16337 WDI_Status wdiStatus;
16338 eHalStatus halStatus;
16339 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16341
16342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016344 -------------------------------------------------------------------------*/
16345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16346 ( NULL == pEventData->pEventData))
16347 {
16348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 }
16353
16354 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16355
16356 /*-------------------------------------------------------------------------
16357 Extract response and send it to UMAC
16358 -------------------------------------------------------------------------*/
16359 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016361
16362 if ( eHAL_STATUS_SUCCESS != halStatus )
16363 {
16364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16365 "Remove STA Key failed with status %s (%d)",
16366 WDI_getHALStatusMsgString(halStatus),
16367 halStatus);
16368 /* send the status to UMAC, don't return from here*/
16369 }
16370
16371 /*Notify UMAC*/
16372 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16373
Jeff Johnsone7245742012-09-05 17:12:55 -070016374 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016375}/*WDI_ProcessRemoveStaKeyRsp*/
16376
16377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016378 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016380
16381 @param pWDICtx: pointer to the WLAN DAL context
16382 pEventData: pointer to the event information structure
16383
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 @see
16385 @return Result of the function call
16386*/
16387WDI_Status
16388WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016389(
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 WDI_ControlBlockType* pWDICtx,
16391 WDI_EventInfoType* pEventData
16392)
16393{
16394 WDI_Status wdiStatus;
16395 eHalStatus halStatus;
16396 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16398
16399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 -------------------------------------------------------------------------*/
16402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16403 ( NULL == pEventData->pEventData))
16404 {
16405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 }
16410
16411 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16412
16413 /*-------------------------------------------------------------------------
16414 Extract response and send it to UMAC
16415 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016416 wpalMemoryCopy( &halStatus,
16417 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 sizeof(halStatus));
16419
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016421
16422 if ( eHAL_STATUS_SUCCESS != halStatus )
16423 {
16424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16425 "Set STA Key failed with status %s (%d)",
16426 WDI_getHALStatusMsgString(halStatus),
16427 halStatus);
16428 /* send the status to UMAC, don't return from here*/
16429 }
16430
16431 /*Notify UMAC*/
16432 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16433
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016435}/*WDI_ProcessSetSTABcastKeyRsp*/
16436
16437/**
16438 @brief Process Remove STA Bcast Key Rsp function (called when a
16439 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016440
16441 @param pWDICtx: pointer to the WLAN DAL context
16442 pEventData: pointer to the event information structure
16443
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 @see
16445 @return Result of the function call
16446*/
16447WDI_Status
16448WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016449(
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 WDI_ControlBlockType* pWDICtx,
16451 WDI_EventInfoType* pEventData
16452)
16453{
16454 WDI_Status wdiStatus;
16455 eHalStatus halStatus;
16456 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16458
16459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 -------------------------------------------------------------------------*/
16462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16463 ( NULL == pEventData->pEventData))
16464 {
16465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 }
16470
16471 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16472
16473 /*-------------------------------------------------------------------------
16474 Extract response and send it to UMAC
16475 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016476 wpalMemoryCopy( &halStatus,
16477 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016478 sizeof(halStatus));
16479
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016481
16482 if ( eHAL_STATUS_SUCCESS != halStatus )
16483 {
16484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16485 "Remove STA Key failed with status %s (%d)",
16486 WDI_getHALStatusMsgString(halStatus),
16487 halStatus);
16488 /* send the status to UMAC, don't return from here*/
16489 }
16490
16491 /*Notify UMAC*/
16492 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16493
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016495}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16496
16497
16498/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016500==========================================================================*/
16501
16502/**
16503 @brief Process Add TSpec Rsp function (called when a response
16504 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016505
16506 @param pWDICtx: pointer to the WLAN DAL context
16507 pEventData: pointer to the event information structure
16508
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 @see
16510 @return Result of the function call
16511*/
16512WDI_Status
16513WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016514(
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 WDI_ControlBlockType* pWDICtx,
16516 WDI_EventInfoType* pEventData
16517)
16518{
16519 WDI_Status wdiStatus;
16520 eHalStatus halStatus;
16521 WDI_AddTsRspCb wdiAddTsRspCb;
16522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16523
16524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016526 -------------------------------------------------------------------------*/
16527 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16528 ( NULL == pEventData->pEventData))
16529 {
16530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 }
16535
16536 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16537
16538 /*-------------------------------------------------------------------------
16539 Extract response and send it to UMAC
16540 -------------------------------------------------------------------------*/
16541 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016543
16544 /*Notify UMAC*/
16545 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16546
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016548}/*WDI_ProcessAddTSpecRsp*/
16549
16550
16551/**
16552 @brief Process Del TSpec Rsp function (called when a response
16553 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016554
16555 @param pWDICtx: pointer to the WLAN DAL context
16556 pEventData: pointer to the event information structure
16557
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 @see
16559 @return Result of the function call
16560*/
16561WDI_Status
16562WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016563(
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 WDI_ControlBlockType* pWDICtx,
16565 WDI_EventInfoType* pEventData
16566)
16567{
16568 WDI_Status wdiStatus;
16569 eHalStatus halStatus;
16570 WDI_DelTsRspCb wdiDelTsRspCb;
16571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16572
16573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 -------------------------------------------------------------------------*/
16576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16577 ( NULL == pEventData->pEventData))
16578 {
16579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 }
16584
16585 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16586
16587 /*-------------------------------------------------------------------------
16588 Extract response and send it to UMAC
16589 -------------------------------------------------------------------------*/
16590 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016592
16593 /*Notify UMAC*/
16594 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16595
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016597}/*WDI_ProcessDelTSpecRsp*/
16598
16599/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016601 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016602
16603 @param pWDICtx: pointer to the WLAN DAL context
16604 pEventData: pointer to the event information structure
16605
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 @see
16607 @return Result of the function call
16608*/
16609WDI_Status
16610WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016611(
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 WDI_ControlBlockType* pWDICtx,
16613 WDI_EventInfoType* pEventData
16614)
16615{
16616 WDI_Status wdiStatus;
16617 eHalStatus halStatus;
16618 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16620
16621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 -------------------------------------------------------------------------*/
16624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16625 ( NULL == pEventData->pEventData))
16626 {
16627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 }
16632
16633 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16634
16635 /*-------------------------------------------------------------------------
16636 Extract response and send it to UMAC
16637 -------------------------------------------------------------------------*/
16638 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016640
16641 /*Notify UMAC*/
16642 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016645}/*WDI_ProcessUpdateEDCAParamsRsp*/
16646
16647
16648/**
16649 @brief Process Add BA Rsp function (called when a response
16650 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016651
16652 @param pWDICtx: pointer to the WLAN DAL context
16653 pEventData: pointer to the event information structure
16654
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 @see
16656 @return Result of the function call
16657*/
16658WDI_Status
16659WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016660(
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 WDI_ControlBlockType* pWDICtx,
16662 WDI_EventInfoType* pEventData
16663)
16664{
16665 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16666
16667 tAddBASessionRspParams halBASessionRsp;
16668 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16669
Jeff Johnsone7245742012-09-05 17:12:55 -070016670
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16672
16673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 -------------------------------------------------------------------------*/
16676 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16677 ( NULL == pEventData->pEventData))
16678 {
16679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 }
16684
16685 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16686
16687 /*-------------------------------------------------------------------------
16688 Extract response and send it to UMAC
16689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 wpalMemoryCopy( &halBASessionRsp,
16691 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 sizeof(halBASessionRsp));
16693
16694 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16695
Jeff Johnson43971f52012-07-17 12:26:56 -070016696 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 {
16698 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16699 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16700 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16701 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16702 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16703 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16704 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16705 }
16706
16707 /*Notify UMAC*/
16708 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16709
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016711}/*WDI_ProcessAddSessionBARsp*/
16712
16713
16714/**
16715 @brief Process Del BA Rsp function (called when a response
16716 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016717
16718 @param pWDICtx: pointer to the WLAN DAL context
16719 pEventData: pointer to the event information structure
16720
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 @see
16722 @return Result of the function call
16723*/
16724WDI_Status
16725WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016726(
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 WDI_ControlBlockType* pWDICtx,
16728 WDI_EventInfoType* pEventData
16729)
16730{
16731 WDI_Status wdiStatus;
16732 eHalStatus halStatus;
16733 WDI_DelBARspCb wdiDelBARspCb;
16734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16735
16736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 -------------------------------------------------------------------------*/
16739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16740 ( NULL == pEventData->pEventData))
16741 {
16742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 }
16747
16748 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16749
16750 /*-------------------------------------------------------------------------
16751 Extract response and send it to UMAC
16752 -------------------------------------------------------------------------*/
16753 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016755
16756 if ( eHAL_STATUS_SUCCESS == halStatus )
16757 {
16758 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16759 }
16760
16761 /*Notify UMAC*/
16762 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16763
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016765}/*WDI_ProcessDelBARsp*/
16766
16767#ifdef FEATURE_WLAN_CCX
16768/**
16769 @brief Process TSM Stats Rsp function (called when a response
16770 is being received over the bus from HAL)
16771
16772 @param pWDICtx: pointer to the WLAN DAL context
16773 pEventData: pointer to the event information structure
16774
16775 @see
16776 @return Result of the function call
16777*/
16778WDI_Status
16779WDI_ProcessTsmStatsRsp
16780(
16781 WDI_ControlBlockType* pWDICtx,
16782 WDI_EventInfoType* pEventData
16783)
16784{
16785 WDI_TsmRspCb wdiTsmStatsRspCb;
16786 tTsmStatsRspMsg halTsmStatsRspMsg;
16787 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16789
16790 /*-------------------------------------------------------------------------
16791 Sanity check
16792 -------------------------------------------------------------------------*/
16793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16794 ( NULL == pEventData->pEventData))
16795 {
16796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 WDI_ASSERT(0);
16799 return WDI_STATUS_E_FAILURE;
16800 }
16801
16802 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16803
16804 /*-------------------------------------------------------------------------
16805 Unpack HAL Response Message - the header was already extracted by the
16806 main Response Handling procedure
16807 -------------------------------------------------------------------------*/
16808 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16809 pEventData->pEventData,
16810 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16811
16812 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16813 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16814 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16815 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16816 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16817 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16818 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16819 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16820 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16821 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16822 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16823 halTsmStatsRspMsg.tsmStatsRspParams.status);
16824
16825 /*Notify UMAC*/
16826 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16827
16828 return WDI_STATUS_SUCCESS;
16829}/*WDI_ProcessTsmStatsRsp*/
16830
16831#endif
16832
16833
16834
16835/**
16836 @brief Process Flush AC Rsp function (called when a response
16837 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016838
16839 @param pWDICtx: pointer to the WLAN DAL context
16840 pEventData: pointer to the event information structure
16841
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 @see
16843 @return Result of the function call
16844*/
16845WDI_Status
16846WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016847(
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 WDI_ControlBlockType* pWDICtx,
16849 WDI_EventInfoType* pEventData
16850)
16851{
16852 WDI_Status wdiStatus;
16853 eHalStatus halStatus;
16854 WDI_FlushAcRspCb wdiFlushAcRspCb;
16855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16856
16857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 -------------------------------------------------------------------------*/
16860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16861 ( NULL == pEventData->pEventData))
16862 {
16863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 }
16868
16869 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16870
16871 /*-------------------------------------------------------------------------
16872 Extract response and send it to UMAC
16873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wpalMemoryCopy( &halStatus,
16875 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 sizeof(halStatus));
16877
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016879
16880 /*Notify UMAC*/
16881 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16882
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016884}/*WDI_ProcessFlushAcRsp*/
16885
16886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016887 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016889
16890 @param pWDICtx: pointer to the WLAN DAL context
16891 pEventData: pointer to the event information structure
16892
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 @see
16894 @return Result of the function call
16895*/
16896WDI_Status
16897WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016898(
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 WDI_ControlBlockType* pWDICtx,
16900 WDI_EventInfoType* pEventData
16901)
16902{
16903 WDI_Status wdiStatus;
16904 eHalStatus halStatus;
16905 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16907
16908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 -------------------------------------------------------------------------*/
16911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16912 ( NULL == pEventData->pEventData))
16913 {
16914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 }
16919
16920 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16921
16922 /*-------------------------------------------------------------------------
16923 Extract response and send it to UMAC
16924 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 wpalMemoryCopy( &halStatus,
16926 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 sizeof(halStatus));
16928
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016930
16931 /*Notify UMAC*/
16932 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16933
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016935}/*WDI_ProcessBtAmpEventRsp*/
16936
16937
16938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016941
16942 @param pWDICtx: pointer to the WLAN DAL context
16943 pEventData: pointer to the event information structure
16944
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 @see
16946 @return Result of the function call
16947*/
16948WDI_Status
16949WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016950(
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 WDI_ControlBlockType* pWDICtx,
16952 WDI_EventInfoType* pEventData
16953)
16954{
16955 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16956 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16957 tAddStaSelfRspMsg halAddStaSelfRsp;
16958 WDI_AddStaParams wdiAddSTAParam = {0};
16959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16960
16961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 -------------------------------------------------------------------------*/
16964 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16965 ( NULL == pEventData->pEventData))
16966 {
16967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 }
16972
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16975
16976 /*-------------------------------------------------------------------------
16977 Extract response and send it to UMAC
16978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016979 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16980 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16982
16983
Jeff Johnsone7245742012-09-05 17:12:55 -070016984 wdiAddSTASelfParams.wdiStatus =
16985 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016986
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016991 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16993
16994 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16995 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16996 WDI_MAC_ADDR_LEN);
16997
16998
16999#ifdef HAL_SELF_STA_PER_BSS
17000
17001 /* At this point add the self-STA */
17002
17003 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17004 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17005 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17006
17007 //all DPU indices are the same for self STA
17008
17009 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17012 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17013 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17014 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17015 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17016
17017 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17018 WDI_MAC_ADDR_LEN);
17019
17020 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17021 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17022
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17025 {
17026 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17027 }
17028#endif
17029
17030 /*Notify UMAC*/
17031 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17032
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034}/*WDI_ProcessAddSTASelfRsp*/
17035
17036
17037
17038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017041
17042 @param pWDICtx: pointer to the WLAN DAL context
17043 pEventData: pointer to the event information structure
17044
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 @see
17046 @return Result of the function call
17047*/
17048WDI_Status
17049WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017050(
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 WDI_ControlBlockType* pWDICtx,
17052 WDI_EventInfoType* pEventData
17053)
17054{
17055 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17056 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17057 tDelStaSelfRspParams delStaSelfRspParams;
17058 wpt_uint8 ucStaIdx;
17059
17060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17061
17062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 -------------------------------------------------------------------------*/
17065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17066 ( NULL == pEventData->pEventData))
17067 {
17068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 }
17073
17074 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17075
17076 /*-------------------------------------------------------------------------
17077 Extract response and send it to UMAC
17078 -------------------------------------------------------------------------*/
17079
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 (wpt_uint8*)pEventData->pEventData,
17082 sizeof(tDelStaSelfRspParams));
17083
Jeff Johnsone7245742012-09-05 17:12:55 -070017084 wdiDelStaSelfRspParams.wdiStatus =
17085 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017086
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17089 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17090 {
17091 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017092 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017093 delStaSelfRspParams.selfMacAddr,
17094 &ucStaIdx);
17095 if(WDI_STATUS_E_FAILURE == wdiStatus)
17096 {
17097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017098 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 }
17102 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17103 }
17104
17105 /*Notify UMAC*/
17106 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17107
17108 return WDI_STATUS_SUCCESS;
17109}
17110
Jeff Johnsone7245742012-09-05 17:12:55 -070017111#ifdef FEATURE_OEM_DATA_SUPPORT
17112/**
17113 @brief Start Oem Data Rsp function (called when a
17114 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017115
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 @param pWDICtx: pointer to the WLAN DAL context
17117 pEventData: pointer to the event information structure
17118
17119 @see
17120 @return Result of the function call
17121*/
17122#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17123
17124WDI_Status
17125WDI_ProcessStartOemDataRsp
17126(
17127 WDI_ControlBlockType* pWDICtx,
17128 WDI_EventInfoType* pEventData
17129)
17130{
17131 WDI_oemDataRspCb wdiOemDataRspCb;
17132 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17133 tStartOemDataRspParams* halStartOemDataRspParams;
17134
17135 /*-------------------------------------------------------------------------
17136 Sanity check
17137 -------------------------------------------------------------------------*/
17138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17139 ( NULL == pEventData->pEventData))
17140 {
17141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017142 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 WDI_ASSERT(0);
17144 return WDI_STATUS_E_FAILURE;
17145 }
17146
17147 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17148
17149 /*-------------------------------------------------------------------------
17150 Extract response and send it to UMAC
17151 -------------------------------------------------------------------------*/
17152 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17153
17154
17155 //It is the responsibility of the application code to check for failure
17156 //conditions!
17157
17158 //Allocate memory for WDI OEM DATA RSP structure
17159 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17160
17161 if(NULL == wdiOemDataRspParams)
17162 {
17163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17164 "Failed to allocate memory in OEM DATA Response %x %x %x ",
17165 pWDICtx, pEventData, pEventData->pEventData);
17166 WDI_ASSERT(0);
17167 return WDI_STATUS_E_FAILURE;
17168 }
17169
17170 /* Populate WDI structure members */
17171 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17172
17173 /*Notify UMAC*/
17174 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17175
17176 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17177 wpalMemoryFree(wdiOemDataRspParams);
17178
17179 return WDI_STATUS_SUCCESS;
17180}/*WDI_PrcoessStartOemDataRsp*/
17181#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017182
17183/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017185===========================================================================*/
17186
17187/**
17188 @brief Process Channel Switch Rsp function (called when a response
17189 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017190
17191 @param pWDICtx: pointer to the WLAN DAL context
17192 pEventData: pointer to the event information structure
17193
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 @see
17195 @return Result of the function call
17196*/
17197WDI_Status
17198WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017199(
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 WDI_ControlBlockType* pWDICtx,
17201 WDI_EventInfoType* pEventData
17202)
17203{
17204 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17205 WDI_SwitchChRspCb wdiChSwitchRspCb;
17206 tSwitchChannelRspParams halSwitchChannelRsp;
17207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17208
17209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017211 -------------------------------------------------------------------------*/
17212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17213 ( NULL == pEventData->pEventData))
17214 {
17215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 }
17220
17221 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17222
17223 /*-------------------------------------------------------------------------
17224 Extract response and send it to UMAC
17225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 (wpt_uint8*)pEventData->pEventData,
17228 sizeof(halSwitchChannelRsp));
17229
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 wdiSwitchChRsp.wdiStatus =
17231 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17233
17234#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017236#endif
17237
17238 /*Notify UMAC*/
17239 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17240
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017242}/*WDI_ProcessChannelSwitchRsp*/
17243
17244
17245/**
17246 @brief Process Config STA Rsp function (called when a response
17247 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017248
17249 @param pWDICtx: pointer to the WLAN DAL context
17250 pEventData: pointer to the event information structure
17251
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 @see
17253 @return Result of the function call
17254*/
17255WDI_Status
17256WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017257(
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 WDI_ControlBlockType* pWDICtx,
17259 WDI_EventInfoType* pEventData
17260)
17261{
17262 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17263 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17264 WDI_AddStaParams wdiAddSTAParam;
17265
17266 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017267 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017268
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17271
17272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 -------------------------------------------------------------------------*/
17275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17276 ( NULL == pEventData->pEventData))
17277 {
17278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017282 }
17283
17284 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17285
17286 /*-------------------------------------------------------------------------
17287 Extract response and send it to UMAC
17288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017289 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17290 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 sizeof(halConfigStaRsp.configStaRspParams));
17292
17293
17294 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17295 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17296 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17297 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17298 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17299
17300 /* MAC Address of STA - take from cache as it does not come back in the
17301 response*/
17302 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017303 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017305
17306 wdiCfgSTAParams.wdiStatus =
17307 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017308
17309 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17310 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17311 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17312
17313 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17314 {
17315 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17316 {
17317 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017318 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017319 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17320 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017321
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017325 wdiAddSTAParam.ucHTCapable =
17326 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17327 wdiAddSTAParam.ucStaType =
17328 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017329 wdiAddSTAParam.ucRmfEnabled =
17330 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017331
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17334 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017336
17337 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17338 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17339 WDI_MAC_ADDR_LEN);
17340
17341 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17342 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17343 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017344
17345 if ( NULL == pBSSSes )
17346 {
17347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17348 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017349
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 }
17353
17354 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017357 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017358 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017364
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17366 }
17367 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17368 {
17369 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17370
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017381 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 halConfigStaRsp.configStaRspParams.ucUcastSig;
17385 }
17386 }
17387
17388 /*Notify UMAC*/
17389 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17390
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017392}/*WDI_ProcessConfigStaRsp*/
17393
17394
17395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017398
17399 @param pWDICtx: pointer to the WLAN DAL context
17400 pEventData: pointer to the event information structure
17401
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 @see
17403 @return Result of the function call
17404*/
17405WDI_Status
17406WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017407(
Jeff Johnson295189b2012-06-20 16:38:30 -070017408 WDI_ControlBlockType* pWDICtx,
17409 WDI_EventInfoType* pEventData
17410)
17411{
17412 WDI_Status wdiStatus;
17413 eHalStatus halStatus;
17414 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17415
17416 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17419
17420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 -------------------------------------------------------------------------*/
17423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17424 ( NULL == pEventData->pEventData))
17425 {
17426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 }
17431
17432 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17433
17434 wpalMutexAcquire(&pWDICtx->wptMutex);
17435
17436 /*If the link is being transitioned to idle - the BSS is to be deleted
17437 - this type of ending a session is possible when UMAC has failed an
17438 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17441 {
17442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17446 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17447 &pBSSSes);
17448
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 /*-----------------------------------------------------------------------
17450 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 -----------------------------------------------------------------------*/
17453 if ( NULL == pBSSSes )
17454 {
17455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17456 "Set link response received outside association session");
17457 }
17458 else
17459 {
17460 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17461 will be del BSS coming after this to stop the beaconing & cleaning up the
17462 sessions*/
17463 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17464 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17465 {
17466 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 -----------------------------------------------------------------------*/
17469 WDI_DeleteSession(pWDICtx, pBSSSes);
17470
17471 /*-----------------------------------------------------------------------
17472 Check to see if this association is in progress - if so disable the
17473 flag as this has ended
17474 -----------------------------------------------------------------------*/
17475 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017476 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 /*Association no longer in progress */
17478 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17479 /*Association no longer in progress - prepare pending assoc for processing*/
17480 WDI_DequeueAssocRequest(pWDICtx);
17481 }
17482 }
17483 }
17484 }
17485 /* If the link state has been set to POST ASSOC, reset the "association in
17486 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017487 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017488 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17489 {
17490 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17491 WDI_DequeueAssocRequest(pWDICtx);
17492 }
17493
17494 wpalMutexRelease(&pWDICtx->wptMutex);
17495
17496 /*-------------------------------------------------------------------------
17497 Extract response and send it to UMAC
17498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017499 wpalMemoryCopy( &halStatus,
17500 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 sizeof(halStatus));
17502
Jeff Johnsone7245742012-09-05 17:12:55 -070017503 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017504
17505 /*Notify UMAC*/
17506 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17507
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017509}/*WDI_ProcessSetLinkStateRsp*/
17510
17511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017513 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017514
17515 @param pWDICtx: pointer to the WLAN DAL context
17516 pEventData: pointer to the event information structure
17517
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 @see
17519 @return Result of the function call
17520*/
17521WDI_Status
17522WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017523(
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 WDI_ControlBlockType* pWDICtx,
17525 WDI_EventInfoType* pEventData
17526)
17527{
17528 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17529 WDI_GetStatsRspCb wdiGetStatsRspCb;
17530 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017531
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17533
17534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 -------------------------------------------------------------------------*/
17537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17538 ( NULL == pEventData->pEventData))
17539 {
17540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 }
17545
17546 /*-------------------------------------------------------------------------
17547 Extract response and send it to UMAC
17548 -------------------------------------------------------------------------*/
17549 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17550
17551 /*allocate the stats response buffer */
17552 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17553 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17554 + sizeof(WDI_GetStatsRspParamsType));
17555
17556 if(NULL == wdiGetStatsRsp)
17557 {
17558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17559 "Failed to allocate memory in Get Stats Response %x %x %x ",
17560 pWDICtx, pEventData, pEventData->pEventData);
17561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 }
17564
17565 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17566
17567 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17568 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17569 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17570 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17571 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17572 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17573
17574 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17575 wpalMemoryCopy(wdiGetStatsRsp + 1,
17576 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17577 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17578
17579 /*Notify UMAC*/
17580 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17581
17582 wpalMemoryFree(wdiGetStatsRsp);
17583
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017585}/*WDI_ProcessGetStatsRsp*/
17586
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017587#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17588/**
17589 @brief Process Get Roam Rssi Rsp function (called when a response is
17590 being received over the bus from HAL)
17591
17592 @param pWDICtx: pointer to the WLAN DAL context
17593 pEventData: pointer to the event information structure
17594
17595 @see
17596 @return Result of the function call
17597*/
17598WDI_Status
17599WDI_ProcessGetRoamRssiRsp
17600(
17601 WDI_ControlBlockType* pWDICtx,
17602 WDI_EventInfoType* pEventData
17603)
17604{
17605 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17606 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17607 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17609
17610 /*-------------------------------------------------------------------------
17611 Sanity check
17612 -------------------------------------------------------------------------*/
17613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17614 ( NULL == pEventData->pEventData))
17615 {
17616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17617 "%s: Invalid parameters", __func__);
17618 WDI_ASSERT(0);
17619 return WDI_STATUS_E_FAILURE;
17620 }
17621
17622 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17623 if(NULL == wdiGetRoamRssiRspCb)
17624 {
17625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17626 "%s: call back function is NULL", __func__);
17627 WDI_ASSERT(0);
17628 return WDI_STATUS_E_FAILURE;
17629 }
17630
17631 /*-------------------------------------------------------------------------
17632 Extract response and send it to UMAC
17633 -------------------------------------------------------------------------*/
17634 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17635 pEventData->pEventData,
17636 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17637
17638 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17639 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17640 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17641
17642 /*Notify UMAC*/
17643 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17644
17645 return WDI_STATUS_SUCCESS;
17646}/*WDI_ProcessGetRoamRssiRsp*/
17647#endif
17648
Jeff Johnson295189b2012-06-20 16:38:30 -070017649
17650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017651 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017653
17654 @param pWDICtx: pointer to the WLAN DAL context
17655 pEventData: pointer to the event information structure
17656
Jeff Johnson295189b2012-06-20 16:38:30 -070017657 @see
17658 @return Result of the function call
17659*/
17660WDI_Status
17661WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017662(
Jeff Johnson295189b2012-06-20 16:38:30 -070017663 WDI_ControlBlockType* pWDICtx,
17664 WDI_EventInfoType* pEventData
17665)
17666{
17667 WDI_Status wdiStatus;
17668 eHalStatus halStatus;
17669 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17671
17672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 -------------------------------------------------------------------------*/
17675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17676 ( NULL == pEventData->pEventData))
17677 {
17678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017682 }
17683
17684 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17685
17686 /*-------------------------------------------------------------------------
17687 Extract response and send it to UMAC
17688 -------------------------------------------------------------------------*/
17689 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017690 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017691
17692 /*Notify UMAC*/
17693 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17694
Jeff Johnsone7245742012-09-05 17:12:55 -070017695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017696}/*WDI_ProcessUpdateCfgRsp*/
17697
17698
17699
17700/**
17701 @brief Process Add BA Rsp function (called when a response
17702 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017703
17704 @param pWDICtx: pointer to the WLAN DAL context
17705 pEventData: pointer to the event information structure
17706
Jeff Johnson295189b2012-06-20 16:38:30 -070017707 @see
17708 @return Result of the function call
17709*/
17710WDI_Status
17711WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017712(
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 WDI_ControlBlockType* pWDICtx,
17714 WDI_EventInfoType* pEventData
17715)
17716{
17717 WDI_AddBARspCb wdiAddBARspCb;
17718
17719 tAddBARspParams halAddBARsp;
17720 WDI_AddBARspinfoType wdiAddBARsp;
17721
17722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17723
17724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 -------------------------------------------------------------------------*/
17727 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17728 ( NULL == pEventData->pEventData))
17729 {
17730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017734 }
17735
17736 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17737
17738 /*-------------------------------------------------------------------------
17739 Extract response and send it to UMAC
17740 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017741 wpalMemoryCopy( &halAddBARsp,
17742 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 sizeof(halAddBARsp));
17744
17745 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17746
Jeff Johnson43971f52012-07-17 12:26:56 -070017747 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 {
17749 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17750 }
17751
17752 /*Notify UMAC*/
17753 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17754
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756}/*WDI_ProcessAddSessionBARsp*/
17757
17758/**
17759 @brief Process Add BA Rsp function (called when a response
17760 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017761
17762 @param pWDICtx: pointer to the WLAN DAL context
17763 pEventData: pointer to the event information structure
17764
Jeff Johnson295189b2012-06-20 16:38:30 -070017765 @see
17766 @return Result of the function call
17767*/
17768WDI_Status
17769WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017770(
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
17775 WDI_TriggerBARspCb wdiTriggerBARspCb;
17776
17777 tTriggerBARspParams* halTriggerBARsp;
17778 tTriggerBaRspCandidate* halBaCandidate;
17779 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17780 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17781 wpt_uint16 index;
17782 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017783 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17785
17786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017788 -------------------------------------------------------------------------*/
17789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17790 ( NULL == pEventData->pEventData))
17791 {
17792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017796 }
17797
17798 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17799
17800 /*-------------------------------------------------------------------------
17801 Extract response and send it to UMAC
17802 -------------------------------------------------------------------------*/
17803 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17804
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017805 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17806
17807 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17808 {
17809 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017810 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017811 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017812
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017813 if(NULL == wdiTriggerBARsp)
17814 {
17815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17816 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17817 pWDICtx, pEventData, pEventData->pEventData);
17818 WDI_ASSERT(0);
17819 return WDI_STATUS_E_FAILURE;
17820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017821
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017822 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17823
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17827
17828 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17829 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17830
17831 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17832 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017833 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17835 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17836 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017837 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017838 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017839 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17841 }
17842 wdiTriggerBARspCandidate++;
17843 halBaCandidate++;
17844 }
17845 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017846 else
17847 {
17848 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17849
17850 if(NULL == wdiTriggerBARsp)
17851 {
17852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17853 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17854 pWDICtx, pEventData, pEventData->pEventData);
17855 WDI_ASSERT(0);
17856 return WDI_STATUS_E_FAILURE;
17857 }
17858
17859 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17860
17861 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017862
17863 /*Notify UMAC*/
17864 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17865
17866 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017868}/*WDI_ProcessAddSessionBARsp*/
17869
17870/**
17871 @brief Process Update Beacon Params Rsp function (called when a response
17872 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017873
17874 @param pWDICtx: pointer to the WLAN DAL context
17875 pEventData: pointer to the event information structure
17876
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 @see
17878 @return Result of the function call
17879*/
17880WDI_Status
17881WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017882(
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 WDI_ControlBlockType* pWDICtx,
17884 WDI_EventInfoType* pEventData
17885)
17886{
17887 WDI_Status wdiStatus;
17888 eHalStatus halStatus;
17889 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17891
17892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 -------------------------------------------------------------------------*/
17895 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17896 ( NULL == pEventData->pEventData))
17897 {
17898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 }
17903
17904 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17905
17906 /*-------------------------------------------------------------------------
17907 Extract response and send it to UMAC
17908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017909 wpalMemoryCopy( &halStatus,
17910 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 sizeof(halStatus));
17912
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017914
17915 /*Notify UMAC*/
17916 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17917
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017919}/*WDI_ProcessUpdateBeaconParamsRsp*/
17920
17921/**
17922 @brief Process Send Beacon template Rsp function (called when a response
17923 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017924
17925 @param pWDICtx: pointer to the WLAN DAL context
17926 pEventData: pointer to the event information structure
17927
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 @see
17929 @return Result of the function call
17930*/
17931WDI_Status
17932WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017933(
Jeff Johnson295189b2012-06-20 16:38:30 -070017934 WDI_ControlBlockType* pWDICtx,
17935 WDI_EventInfoType* pEventData
17936)
17937{
17938 WDI_Status wdiStatus;
17939 eHalStatus halStatus;
17940 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17942
17943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 -------------------------------------------------------------------------*/
17946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17947 ( NULL == pEventData->pEventData))
17948 {
17949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 }
17954
17955 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17956
17957 /*-------------------------------------------------------------------------
17958 Extract response and send it to UMAC
17959 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017960 wpalMemoryCopy( &halStatus,
17961 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 sizeof(halStatus));
17963
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017965
17966 /*Notify UMAC*/
17967 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17968
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017970}/*WDI_ProcessSendBeaconParamsRsp*/
17971
Jeff Johnsone7245742012-09-05 17:12:55 -070017972
Jeff Johnson295189b2012-06-20 16:38:30 -070017973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017976
17977 @param pWDICtx: pointer to the WLAN DAL context
17978 pEventData: pointer to the event information structure
17979
Jeff Johnson295189b2012-06-20 16:38:30 -070017980 @see
17981 @return Result of the function call
17982*/
17983WDI_Status
17984WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017985(
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 WDI_ControlBlockType* pWDICtx,
17987 WDI_EventInfoType* pEventData
17988)
17989{
17990 WDI_Status wdiStatus;
17991 eHalStatus halStatus;
17992 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17994
17995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 -------------------------------------------------------------------------*/
17998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17999 ( NULL == pEventData->pEventData))
18000 {
18001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 }
18006
18007 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18008
18009 /*-------------------------------------------------------------------------
18010 Extract response and send it to UMAC
18011 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018012 wpalMemoryCopy( &halStatus,
18013 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 sizeof(halStatus));
18015
Jeff Johnsone7245742012-09-05 17:12:55 -070018016 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018017
18018 /*Notify UMAC*/
18019 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18020
Jeff Johnsone7245742012-09-05 17:12:55 -070018021 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018022}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18023
18024 /**
18025 @brief Process Set Max Tx Power Rsp function (called when a response
18026 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018027
18028 @param pWDICtx: pointer to the WLAN DAL context
18029 pEventData: pointer to the event information structure
18030
Jeff Johnson295189b2012-06-20 16:38:30 -070018031 @see
18032 @return Result of the function call
18033*/
18034WDI_Status
18035WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018036(
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 WDI_ControlBlockType* pWDICtx,
18038 WDI_EventInfoType* pEventData
18039)
18040{
18041 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018042
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018044
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18047
18048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 -------------------------------------------------------------------------*/
18051 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18052 ( NULL == pEventData->pEventData))
18053 {
18054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018058 }
18059
18060 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18061
18062 /*-------------------------------------------------------------------------
18063 Extract response and send it to UMAC
18064 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018065 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18066 pEventData->pEventData,
18067 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018068
18069 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18070 {
18071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18072 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 }
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018079
18080 /*Notify UMAC*/
18081 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18082
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018084}
18085
schangd82195a2013-03-13 18:41:24 -070018086 /**
18087 @brief Process Set Tx Power Rsp function (called when a response
18088 is being received over the bus from HAL)
18089
18090 @param pWDICtx: pointer to the WLAN DAL context
18091 pEventData: pointer to the event information structure
18092
18093 @see
18094 @return Result of the function call
18095*/
18096WDI_Status
18097WDI_ProcessSetTxPowerRsp
18098(
18099 WDI_ControlBlockType* pWDICtx,
18100 WDI_EventInfoType* pEventData
18101)
18102{
18103 tSetTxPwrRspMsg halTxpowerrsp;
18104 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18105 WDA_SetTxPowerRspCb wdiReqStatusCb;
18106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18107
18108 /*-------------------------------------------------------------------------
18109 Sanity check
18110 -------------------------------------------------------------------------*/
18111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18112 ( NULL == pEventData->pEventData))
18113 {
18114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18115 "%s: Invalid parameters", __func__);
18116 WDI_ASSERT(0);
18117 return WDI_STATUS_E_FAILURE;
18118 }
18119
18120 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18121
18122 /*-------------------------------------------------------------------------
18123 Extract response and send it to UMAC
18124 -------------------------------------------------------------------------*/
18125 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18126 pEventData->pEventData,
18127 sizeof(halTxpowerrsp.setTxPwrRspParams));
18128
18129 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18130 {
18131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18132 "Error status returned in Set Tx Power Response ");
18133 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18134 return WDI_STATUS_E_FAILURE;
18135 }
18136
18137 wdiSetTxPowerRspMsg.wdiStatus =
18138 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18139
18140 /*Notify UMAC*/
18141 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18142
18143 return WDI_STATUS_SUCCESS;
18144}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018145#ifdef FEATURE_WLAN_TDLS
18146/**
18147 @brief Process TDLS Link Establish Rsp function (called
18148 when a response is being received over the bus from HAL)
18149
18150 @param pWDICtx: pointer to the WLAN DAL context
18151 pEventData: pointer to the event information structure
18152
18153 @see
18154 @return Result of the function call
18155*/
18156WDI_Status
18157WDI_ProcessLinkEstablishReqRsp
18158(
18159 WDI_ControlBlockType* pWDICtx,
18160 WDI_EventInfoType* pEventData
18161)
18162{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018163 eHalStatus halStatus;
18164 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018165 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18166 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18167
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18169
18170 /*-------------------------------------------------------------------------
18171 Sanity check
18172 -------------------------------------------------------------------------*/
18173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18174 ( NULL == pEventData->pEventData))
18175 {
18176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18177 "%s: Invalid parameters", __func__);
18178 WDI_ASSERT(0);
18179 return WDI_STATUS_E_FAILURE;
18180 }
18181
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018182 /*-------------------------------------------------------------------------
18183 Extract indication and send it to UMAC
18184 -------------------------------------------------------------------------*/
18185 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18186 pEventData->pEventData,
18187 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18188
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018189 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18190
18191 /*-------------------------------------------------------------------------
18192 Extract response and send it to UMAC
18193 -------------------------------------------------------------------------*/
18194 wpalMemoryCopy( &halStatus,
18195 pEventData->pEventData,
18196 sizeof(halStatus));
18197
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018198 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18199 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018200
18201 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018202 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018203
18204 return WDI_STATUS_SUCCESS;
18205}/*WDI_ProcessLinkEstablishReqRsp*/
18206#endif
schangd82195a2013-03-13 18:41:24 -070018207
Jeff Johnson295189b2012-06-20 16:38:30 -070018208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018211
18212 @param pWDICtx: pointer to the WLAN DAL context
18213 pEventData: pointer to the event information structure
18214
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 @see
18216 @return Result of the function call
18217*/
18218WDI_Status
18219WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018220(
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 WDI_ControlBlockType* pWDICtx,
18222 WDI_EventInfoType* pEventData
18223)
18224{
18225 WDI_Status wdiStatus;
18226 eHalStatus halStatus;
18227 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18229
18230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 -------------------------------------------------------------------------*/
18233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18234 ( NULL == pEventData->pEventData))
18235 {
18236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 }
18241
18242 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18243
18244 /*-------------------------------------------------------------------------
18245 Extract response and send it to UMAC
18246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 wpalMemoryCopy( &halStatus,
18248 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 sizeof(halStatus));
18250
Jeff Johnsone7245742012-09-05 17:12:55 -070018251 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018252
18253 /*Notify UMAC*/
18254 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18255
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018257}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018261
18262 @param pWDICtx: pointer to the WLAN DAL context
18263 pEventData: pointer to the event information structure
18264
Jeff Johnson295189b2012-06-20 16:38:30 -070018265 @see
18266 @return Result of the function call
18267*/
18268WDI_Status
18269WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018270(
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 WDI_ControlBlockType* pWDICtx,
18272 WDI_EventInfoType* pEventData
18273)
18274{
18275 WDI_Status wdiStatus;
18276 eHalStatus halStatus;
18277 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018278 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18280
18281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 -------------------------------------------------------------------------*/
18284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18285 ( NULL == pEventData->pEventData))
18286 {
18287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 }
18292
18293 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18294
18295 /*-------------------------------------------------------------------------
18296 Extract response and send it to UMAC
18297 -------------------------------------------------------------------------*/
18298 halStatus = *((eHalStatus*)pEventData->pEventData);
18299
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018301
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018302 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18303 * Other module states are taken care by PMC.
18304 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18305 */
18306 if (wdiStatus != WDI_STATUS_SUCCESS) {
18307
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18309 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18310 halStatus);
18311 /* Call Back is not required as we are putting the DXE in FULL
18312 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018313 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18314
18315 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18317 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18318 WDI_ASSERT(0);
18319 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018320 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 /*Notify UMAC*/
18322 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18323
Jeff Johnsone7245742012-09-05 17:12:55 -070018324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018325}/*WDI_ProcessEnterImpsRsp*/
18326
18327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018328 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018329 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018330
18331 @param pWDICtx: pointer to the WLAN DAL context
18332 pEventData: pointer to the event information structure
18333
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 @see
18335 @return Result of the function call
18336*/
18337WDI_Status
18338WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018339(
Jeff Johnson295189b2012-06-20 16:38:30 -070018340 WDI_ControlBlockType* pWDICtx,
18341 WDI_EventInfoType* pEventData
18342)
18343{
18344 WDI_Status wdiStatus;
18345 eHalStatus halStatus;
18346 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018347 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18349
18350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 -------------------------------------------------------------------------*/
18353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18354 ( NULL == pEventData->pEventData))
18355 {
18356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018360 }
18361
18362 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18363
18364 /*-------------------------------------------------------------------------
18365 Extract response and send it to UMAC
18366 -------------------------------------------------------------------------*/
18367 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018368 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018369
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018370 if (halStatus != eHAL_STATUS_SUCCESS)
18371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18372 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18373
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018375 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18376 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18377 {
18378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18379 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18380 WDI_ASSERT(0);
18381 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 /*Notify UMAC*/
18383 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18384
Jeff Johnsone7245742012-09-05 17:12:55 -070018385 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018386}/*WDI_ProcessExitImpsRsp*/
18387
18388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018391
18392 @param pWDICtx: pointer to the WLAN DAL context
18393 pEventData: pointer to the event information structure
18394
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 @see
18396 @return Result of the function call
18397*/
18398WDI_Status
18399WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018400(
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 WDI_ControlBlockType* pWDICtx,
18402 WDI_EventInfoType* pEventData
18403)
18404{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018405 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18406 tHalEnterBmpsRspParams halEnterBmpsRsp;
18407 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18408 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018409 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18411
18412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 -------------------------------------------------------------------------*/
18415 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18416 ( NULL == pEventData->pEventData))
18417 {
18418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018422 }
18423
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018425 Extract response and send it to UMAC
18426 -------------------------------------------------------------------------*/
18427 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18428 {
18429 wpalMemoryCopy( &halEnterBmpsRsp,
18430 pEventData->pEventData,
18431 sizeof(halEnterBmpsRsp));
18432
18433 //Used to print debug message
18434 halStatus = halEnterBmpsRsp.status;
18435 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18436 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18437 }
18438 else
18439 {
18440 halStatus = *((eHalStatus*)pEventData->pEventData);
18441 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18442 }
18443
18444 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018445
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018446 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18447 * Other module states are taken care by PMC.
18448 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18449 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018450 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18451 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018452
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018454 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18455 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018456 /* Call Back is not required as we are putting the DXE in FULL
18457 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018458 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18459 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18460 {
18461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18462 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18463 WDI_ASSERT(0);
18464 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018465 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018466 }
18467
Jeff Johnson295189b2012-06-20 16:38:30 -070018468 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018469 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018470
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018472}/*WDI_ProcessEnterBmpsRsp*/
18473
18474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018477
18478 @param pWDICtx: pointer to the WLAN DAL context
18479 pEventData: pointer to the event information structure
18480
Jeff Johnson295189b2012-06-20 16:38:30 -070018481 @see
18482 @return Result of the function call
18483*/
18484WDI_Status
18485WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018486(
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 WDI_ControlBlockType* pWDICtx,
18488 WDI_EventInfoType* pEventData
18489)
18490{
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 eHalStatus halStatus;
18492 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018493 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018494 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18495 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18497
18498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 -------------------------------------------------------------------------*/
18501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18502 ( NULL == pEventData->pEventData))
18503 {
18504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018508 }
18509
18510 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18511
18512 /*-------------------------------------------------------------------------
18513 Extract response and send it to UMAC
18514 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018515
18516 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18517 {
18518 wpalMemoryCopy( &halExitBmpsRsp,
18519 pEventData->pEventData,
18520 sizeof(halExitBmpsRsp));
18521
18522 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18523 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18524 }
18525 else
18526 {
18527 halStatus = *((eHalStatus*)pEventData->pEventData);
18528 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18529 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018530
18531 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018532 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18533 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18534 {
18535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18536 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18537 WDI_ASSERT(0);
18538 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18540
18541 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018542 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018543
Jeff Johnsone7245742012-09-05 17:12:55 -070018544 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018545}/*WDI_ProcessExitBmpsRsp*/
18546
18547/**
18548 @brief Process Enter UAPSD Rsp function (called when a response
18549 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018550
18551 @param pWDICtx: pointer to the WLAN DAL context
18552 pEventData: pointer to the event information structure
18553
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 @see
18555 @return Result of the function call
18556*/
18557WDI_Status
18558WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018559(
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 WDI_ControlBlockType* pWDICtx,
18561 WDI_EventInfoType* pEventData
18562)
18563{
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018565 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018567 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18568
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18570
18571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 -------------------------------------------------------------------------*/
18574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18575 ( NULL == pEventData->pEventData))
18576 {
18577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 }
18582
18583 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18584
18585 /*-------------------------------------------------------------------------
18586 Extract response and send it to UMAC
18587 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018588 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18589 {
18590 wpalMemoryCopy( &halEnterUapsdRsp,
18591 pEventData->pEventData,
18592 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018593
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018594 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18595 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18596 }
18597 else
18598 {
18599 halStatus = *((eHalStatus*)pEventData->pEventData);
18600 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18601 }
18602
18603 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 {
18605 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18606 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18607 // the traffic to decide when to suspend the trigger frames when there is no traffic
18608 // activity on the trigger enabled ACs
18609 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18610
18611#ifdef WLAN_PERF
18612 // Increment the BD signature to refresh the fast path BD utilization
18613 pWDICtx->uBdSigSerialNum++;
18614#endif
18615 }
18616
18617 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018618 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018619
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018621}/*WDI_ProcessEnterUapsdRsp*/
18622
18623/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018624 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018625 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018626
18627 @param pWDICtx: pointer to the WLAN DAL context
18628 pEventData: pointer to the event information structure
18629
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 @see
18631 @return Result of the function call
18632*/
18633WDI_Status
18634WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018635(
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 WDI_ControlBlockType* pWDICtx,
18637 WDI_EventInfoType* pEventData
18638)
18639{
Jeff Johnson295189b2012-06-20 16:38:30 -070018640 eHalStatus halStatus;
18641 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018642 tHalExitUapsdRspParams halExitUapsdRsp;
18643 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18645
18646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 -------------------------------------------------------------------------*/
18649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18650 ( NULL == pEventData->pEventData))
18651 {
18652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018656 }
18657
18658 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18659
18660 /*-------------------------------------------------------------------------
18661 Extract response and send it to UMAC
18662 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018663 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18664 {
18665 wpalMemoryCopy( &halExitUapsdRsp,
18666 pEventData->pEventData,
18667 sizeof(halExitUapsdRsp));
18668
18669 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18670 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18671 }
18672 else
18673 {
18674 halStatus = *((eHalStatus*)pEventData->pEventData);
18675 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18676 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18678 // directly instead of the FW WQ.
18679 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18680
18681#ifdef WLAN_PERF
18682 // Increment the BD signature to refresh the fast path BD utilization
18683 pWDICtx->uBdSigSerialNum++;
18684#endif
18685
18686 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018687 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018688
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018690}/*WDI_ProcessExitUapsdRsp*/
18691
18692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018695
18696 @param pWDICtx: pointer to the WLAN DAL context
18697 pEventData: pointer to the event information structure
18698
Jeff Johnson295189b2012-06-20 16:38:30 -070018699 @see
18700 @return Result of the function call
18701*/
18702WDI_Status
18703WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018704(
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 WDI_ControlBlockType* pWDICtx,
18706 WDI_EventInfoType* pEventData
18707)
18708{
18709 WDI_Status wdiStatus;
18710 eHalStatus halStatus;
18711 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18713
18714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 -------------------------------------------------------------------------*/
18717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18718 ( NULL == pEventData->pEventData))
18719 {
18720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 }
18725
18726 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18727
18728 /*-------------------------------------------------------------------------
18729 Extract response and send it to UMAC
18730 -------------------------------------------------------------------------*/
18731 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018733
18734 /*Notify UMAC*/
18735 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18736
Jeff Johnsone7245742012-09-05 17:12:55 -070018737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018738}/*WDI_ProcessSetUapsdAcParamsRsp*/
18739
18740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018743
18744 @param pWDICtx: pointer to the WLAN DAL context
18745 pEventData: pointer to the event information structure
18746
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 @see
18748 @return Result of the function call
18749*/
18750WDI_Status
18751WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018752(
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 WDI_ControlBlockType* pWDICtx,
18754 WDI_EventInfoType* pEventData
18755)
18756{
18757 WDI_Status wdiStatus;
18758 eHalStatus halStatus;
18759 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18761
18762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 -------------------------------------------------------------------------*/
18765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18766 ( NULL == pEventData->pEventData))
18767 {
18768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018772 }
18773
18774 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18775
18776 /*-------------------------------------------------------------------------
18777 Extract response and send it to UMAC
18778 -------------------------------------------------------------------------*/
18779 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018780 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018781
18782 /*Notify UMAC*/
18783 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18784
Jeff Johnsone7245742012-09-05 17:12:55 -070018785 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018786}/*WDI_ProcessUpdateUapsdParamsRsp*/
18787
18788/**
18789 @brief Process Configure RXP filter Rsp function (called when a
18790 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018791
18792 @param pWDICtx: pointer to the WLAN DAL context
18793 pEventData: pointer to the event information structure
18794
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 @see
18796 @return Result of the function call
18797*/
18798WDI_Status
18799WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018800(
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 WDI_ControlBlockType* pWDICtx,
18802 WDI_EventInfoType* pEventData
18803)
18804{
18805 WDI_Status wdiStatus;
18806 eHalStatus halStatus;
18807 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18823
18824 /*-------------------------------------------------------------------------
18825 Extract response and send it to UMAC
18826 -------------------------------------------------------------------------*/
18827 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018829
18830 /*Notify UMAC*/
18831 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18832
Jeff Johnsone7245742012-09-05 17:12:55 -070018833 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018834}/*WDI_ProcessConfigureRxpFilterRsp*/
18835
18836/**
18837 @brief Process Set beacon filter Rsp function (called when a
18838 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018839
18840 @param pWDICtx: pointer to the WLAN DAL context
18841 pEventData: pointer to the event information structure
18842
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 @see
18844 @return Result of the function call
18845*/
18846WDI_Status
18847WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018848(
Jeff Johnson295189b2012-06-20 16:38:30 -070018849 WDI_ControlBlockType* pWDICtx,
18850 WDI_EventInfoType* pEventData
18851)
18852{
18853 WDI_Status wdiStatus;
18854 eHalStatus halStatus;
18855 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18857
18858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 -------------------------------------------------------------------------*/
18861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18862 ( NULL == pEventData->pEventData))
18863 {
18864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 }
18869
18870 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18871
18872 /*-------------------------------------------------------------------------
18873 Extract response and send it to UMAC
18874 -------------------------------------------------------------------------*/
18875 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018877
18878 /*Notify UMAC*/
18879 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18880
Jeff Johnsone7245742012-09-05 17:12:55 -070018881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018882}/*WDI_ProcessSetBeaconFilterRsp*/
18883
18884/**
18885 @brief Process remove beacon filter Rsp function (called when a
18886 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018887
18888 @param pWDICtx: pointer to the WLAN DAL context
18889 pEventData: pointer to the event information structure
18890
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 @see
18892 @return Result of the function call
18893*/
18894WDI_Status
18895WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018896(
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 WDI_ControlBlockType* pWDICtx,
18898 WDI_EventInfoType* pEventData
18899)
18900{
18901 WDI_Status wdiStatus;
18902 eHalStatus halStatus;
18903 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18905
18906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 -------------------------------------------------------------------------*/
18909 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18910 ( NULL == pEventData->pEventData))
18911 {
18912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 }
18917
18918 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18919
18920 /*-------------------------------------------------------------------------
18921 Extract response and send it to UMAC
18922 -------------------------------------------------------------------------*/
18923 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018925
18926 /*Notify UMAC*/
18927 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18928
Jeff Johnsone7245742012-09-05 17:12:55 -070018929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018930}/*WDI_ProcessRemBeaconFilterRsp*/
18931
18932/**
18933 @brief Process set RSSI thresholds Rsp function (called when a
18934 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018935
18936 @param pWDICtx: pointer to the WLAN DAL context
18937 pEventData: pointer to the event information structure
18938
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 @see
18940 @return Result of the function call
18941*/
18942WDI_Status
18943WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018944(
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 WDI_ControlBlockType* pWDICtx,
18946 WDI_EventInfoType* pEventData
18947)
18948{
18949 WDI_Status wdiStatus;
18950 eHalStatus halStatus;
18951 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18953
18954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 -------------------------------------------------------------------------*/
18957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18958 ( NULL == pEventData->pEventData))
18959 {
18960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 }
18965
18966 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18967
18968 /*-------------------------------------------------------------------------
18969 Extract response and send it to UMAC
18970 -------------------------------------------------------------------------*/
18971 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018972 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018973
18974 /*Notify UMAC*/
18975 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18976
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018978}/*WDI_ProcessSetRSSIThresoldsRsp*/
18979
18980/**
18981 @brief Process host offload Rsp function (called when a
18982 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018983
18984 @param pWDICtx: pointer to the WLAN DAL context
18985 pEventData: pointer to the event information structure
18986
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 @see
18988 @return Result of the function call
18989*/
18990WDI_Status
18991WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018992(
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 WDI_ControlBlockType* pWDICtx,
18994 WDI_EventInfoType* pEventData
18995)
18996{
18997 WDI_Status wdiStatus;
18998 eHalStatus halStatus;
18999 WDI_HostOffloadCb wdiHostOffloadCb;
19000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19001
19002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 -------------------------------------------------------------------------*/
19005 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19006 ( NULL == pEventData->pEventData))
19007 {
19008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 }
19013
19014 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19015
19016 /*-------------------------------------------------------------------------
19017 Extract response and send it to UMAC
19018 -------------------------------------------------------------------------*/
19019 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019021
19022 /*Notify UMAC*/
19023 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19024
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019026}/*WDI_ProcessHostOffloadRsp*/
19027
19028/**
19029 @brief Process keep alive Rsp function (called when a
19030 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019031
19032 @param pWDICtx: pointer to the WLAN DAL context
19033 pEventData: pointer to the event information structure
19034
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 @see
19036 @return Result of the function call
19037*/
19038WDI_Status
19039WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019040(
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 WDI_ControlBlockType* pWDICtx,
19042 WDI_EventInfoType* pEventData
19043)
19044{
19045 WDI_Status wdiStatus;
19046 eHalStatus halStatus;
19047 WDI_KeepAliveCb wdiKeepAliveCb;
19048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19050 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19051
19052
19053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 -------------------------------------------------------------------------*/
19056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19057 ( NULL == pEventData->pEventData))
19058 {
19059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 }
19064
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19066
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 /*-------------------------------------------------------------------------
19068 Extract response and send it to UMAC
19069 -------------------------------------------------------------------------*/
19070 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019072
19073 /*Notify UMAC*/
19074 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19075
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019077}/*WDI_ProcessKeepAliveRsp*/
19078
19079/**
19080 @brief Process wowl add ptrn Rsp function (called when a
19081 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019082
19083 @param pWDICtx: pointer to the WLAN DAL context
19084 pEventData: pointer to the event information structure
19085
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 @see
19087 @return Result of the function call
19088*/
19089WDI_Status
19090WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019091(
Jeff Johnson295189b2012-06-20 16:38:30 -070019092 WDI_ControlBlockType* pWDICtx,
19093 WDI_EventInfoType* pEventData
19094)
19095{
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 eHalStatus halStatus;
19097 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019098 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19099 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19100
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19102
19103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 -------------------------------------------------------------------------*/
19106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19107 ( NULL == pEventData->pEventData))
19108 {
19109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019113 }
19114
19115 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19116
19117 /*-------------------------------------------------------------------------
19118 Extract response and send it to UMAC
19119 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019120 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19121 {
19122 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19123 pEventData->pEventData,
19124 sizeof(halAddWowlBcastPtrRsp));
19125
19126 wdiWowlAddBcPtrRsp.wdiStatus =
19127 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19128 }
19129 else
19130 {
19131 halStatus = *((eHalStatus*)pEventData->pEventData);
19132 wdiWowlAddBcPtrRsp.wdiStatus =
19133 WDI_HAL_2_WDI_STATUS(halStatus);
19134 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019135
19136 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019137 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019138
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019140}/*WDI_ProcessWowlAddBcPtrnRsp*/
19141
19142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019143 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019145
19146 @param pWDICtx: pointer to the WLAN DAL context
19147 pEventData: pointer to the event information structure
19148
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 @see
19150 @return Result of the function call
19151*/
19152WDI_Status
19153WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019154(
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 WDI_ControlBlockType* pWDICtx,
19156 WDI_EventInfoType* pEventData
19157)
19158{
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 eHalStatus halStatus;
19160 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019161 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19162 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19164
19165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019167 -------------------------------------------------------------------------*/
19168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19169 ( NULL == pEventData->pEventData))
19170 {
19171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 }
19176
19177 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19178
19179 /*-------------------------------------------------------------------------
19180 Extract response and send it to UMAC
19181 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019182 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19183 {
19184 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19185 pEventData->pEventData,
19186 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019187
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019188 wdiWowlDelBcstPtrRsp.wdiStatus =
19189 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19190 }
19191 else
19192 {
19193 halStatus = *((eHalStatus*)pEventData->pEventData);
19194 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19195 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019197 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019198
Jeff Johnsone7245742012-09-05 17:12:55 -070019199 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019200}/*WDI_ProcessWowlDelBcPtrnRsp*/
19201
19202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019203 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019205
19206 @param pWDICtx: pointer to the WLAN DAL context
19207 pEventData: pointer to the event information structure
19208
Jeff Johnson295189b2012-06-20 16:38:30 -070019209 @see
19210 @return Result of the function call
19211*/
19212WDI_Status
19213WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019214(
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 WDI_ControlBlockType* pWDICtx,
19216 WDI_EventInfoType* pEventData
19217)
19218{
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 eHalStatus halStatus;
19220 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019221 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19222 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19224
19225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 -------------------------------------------------------------------------*/
19228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19229 ( NULL == pEventData->pEventData))
19230 {
19231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 }
19236
19237 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19238
19239 /*-------------------------------------------------------------------------
19240 Extract response and send it to UMAC
19241 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019242 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19243 {
19244 wpalMemoryCopy( &halEnterWowlRspParams,
19245 (wpt_uint8*)pEventData->pEventData,
19246 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019247
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019248 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19249 wdiwowlEnterRsp.status =
19250 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19251 }
19252 else
19253 {
19254 halStatus = *((eHalStatus*)pEventData->pEventData);
19255 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19256 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019258 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019259
Jeff Johnsone7245742012-09-05 17:12:55 -070019260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019261}/*WDI_ProcessWowlEnterRsp*/
19262
19263/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019264 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019265 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019266
19267 @param pWDICtx: pointer to the WLAN DAL context
19268 pEventData: pointer to the event information structure
19269
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 @see
19271 @return Result of the function call
19272*/
19273WDI_Status
19274WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019275(
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 WDI_ControlBlockType* pWDICtx,
19277 WDI_EventInfoType* pEventData
19278)
19279{
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 eHalStatus halStatus;
19281 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019282 tHalExitWowlRspParams halExitWowlRspParams;
19283 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19284
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19286
19287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 -------------------------------------------------------------------------*/
19290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19291 ( NULL == pEventData->pEventData))
19292 {
19293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 }
19298
19299 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19300
19301 /*-------------------------------------------------------------------------
19302 Extract response and send it to UMAC
19303 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019304 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19305 {
19306 wpalMemoryCopy( &halExitWowlRspParams,
19307 pEventData->pEventData,
19308 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019309
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019310 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19311 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19312
19313 }
19314 else
19315 {
19316 halStatus = *((eHalStatus*)pEventData->pEventData);
19317 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19318 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019320 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019321
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019323}/*WDI_ProcessWowlExitRsp*/
19324
19325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 (called when a response is being received over the bus
19328 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019329
19330 @param pWDICtx: pointer to the WLAN DAL context
19331 pEventData: pointer to the event information structure
19332
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 @see
19334 @return Result of the function call
19335*/
19336WDI_Status
19337WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019338(
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 WDI_ControlBlockType* pWDICtx,
19340 WDI_EventInfoType* pEventData
19341)
19342{
19343 WDI_Status wdiStatus;
19344 eHalStatus halStatus;
19345 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19347
19348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 -------------------------------------------------------------------------*/
19351 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19352 ( NULL == pEventData->pEventData))
19353 {
19354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 }
19359
19360 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19361
19362 /*-------------------------------------------------------------------------
19363 Extract response and send it to UMAC
19364 -------------------------------------------------------------------------*/
19365 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019366 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019367
19368 /*Notify UMAC*/
19369 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19370
Jeff Johnsone7245742012-09-05 17:12:55 -070019371 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019372}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19373
19374
19375/**
19376 @brief Process Nv download(called when a response
19377 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019378
19379 @param pWDICtx: pointer to the WLAN DAL context
19380 pEventData: pointer to the event information structure
19381
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 @see
19383 @return Result of the function call
19384*/
19385WDI_Status
19386WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019387(
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 WDI_ControlBlockType* pWDICtx,
19389 WDI_EventInfoType* pEventData
19390)
19391{
19392
19393 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19394 tHalNvImgDownloadRspParams halNvDownloadRsp;
19395 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19396
19397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 -------------------------------------------------------------------------*/
19400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19401 ( NULL == pEventData->pEventData))
19402 {
19403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 }
19408
19409 /*-------------------------------------------------------------------------
19410 Extract response and send it to UMAC
19411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019412 wpalMemoryCopy( &halNvDownloadRsp,
19413 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019414 sizeof(halNvDownloadRsp));
19415
19416 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19417
19418 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19420 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 {
19422 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 }
19425 else
19426 {
19427 /*Reset the Nv related global information in WDI context information */
19428 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19429 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19430 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19431 /*call WDA callback function for last fragment */
19432 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19433 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19434 }
19435
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019437}
19438#ifdef WLAN_FEATURE_VOWIFI_11R
19439/**
19440 @brief Process Add TSpec Rsp function (called when a response
19441 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019442
19443 @param pWDICtx: pointer to the WLAN DAL context
19444 pEventData: pointer to the event information structure
19445
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 @see
19447 @return Result of the function call
19448*/
19449WDI_Status
19450WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019451(
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 WDI_ControlBlockType* pWDICtx,
19453 WDI_EventInfoType* pEventData
19454)
19455{
19456 WDI_Status wdiStatus;
19457 tAggrAddTsRspParams aggrAddTsRsp;
19458 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19460
19461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019463 -------------------------------------------------------------------------*/
19464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19465 ( NULL == pEventData->pEventData))
19466 {
19467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 }
19472
19473 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19474
19475 /*-------------------------------------------------------------------------
19476 Extract response and send it to UMAC
19477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019478 wpalMemoryCopy( &aggrAddTsRsp,
19479 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 sizeof(aggrAddTsRsp));
19481
19482 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019484
19485 /*Notify UMAC*/
19486 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19487
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019489}/*WDI_ProcessAddTSpecRsp*/
19490#endif /* WLAN_FEATURE_VOWIFI_11R */
19491
19492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019495
19496 @param pWDICtx: pointer to the WLAN DAL context
19497 pEventData: pointer to the event information structure
19498
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 @see
19500 @return Result of the function call
19501*/
19502WDI_Status
19503WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019504(
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 WDI_ControlBlockType* pWDICtx,
19506 WDI_EventInfoType* pEventData
19507)
19508{
19509 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19510 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19511 tHalHostResumeRspParams hostResumeRspMsg;
19512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19513
19514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 -------------------------------------------------------------------------*/
19517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19518 ( NULL == pEventData->pEventData))
19519 {
19520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 }
19525
19526 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19527
19528 /*-------------------------------------------------------------------------
19529 Extract response and send it to UMAC
19530 -------------------------------------------------------------------------*/
19531
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 (wpt_uint8*)pEventData->pEventData,
19534 sizeof(hostResumeRspMsg));
19535
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 wdiResumeRspParams.wdiStatus =
19537 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019538
19539 /*Notify UMAC*/
19540 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19541
19542 return WDI_STATUS_SUCCESS;
19543}
19544
19545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019548
19549 @param pWDICtx: pointer to the WLAN DAL context
19550 pEventData: pointer to the event information structure
19551
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 @see
19553 @return Result of the function call
19554*/
19555WDI_Status
19556WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019557(
Jeff Johnson295189b2012-06-20 16:38:30 -070019558 WDI_ControlBlockType* pWDICtx,
19559 WDI_EventInfoType* pEventData
19560)
19561{
19562 WDI_Status wdiStatus;
19563 eHalStatus halStatus;
19564 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19566
19567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 -------------------------------------------------------------------------*/
19570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19571 ( NULL == pEventData->pEventData))
19572 {
19573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019578
19579 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019580
19581 /*-------------------------------------------------------------------------
19582 Extract response and send it to UMAC
19583 -------------------------------------------------------------------------*/
19584 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019585 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019586
19587 /*Notify UMAC*/
19588 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19589
Jeff Johnsone7245742012-09-05 17:12:55 -070019590 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019591}/*WDI_ProcessSetTxPerTrackingRsp*/
19592
19593/*==========================================================================
19594 Indications from HAL
19595 ==========================================================================*/
19596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019598 indication of this kind is being received over the bus
19599 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019600
19601 @param pWDICtx: pointer to the WLAN DAL context
19602 pEventData: pointer to the event information structure
19603
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 @see
19605 @return Result of the function call
19606*/
19607WDI_Status
19608WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019609(
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 WDI_ControlBlockType* pWDICtx,
19611 WDI_EventInfoType* pEventData
19612)
19613{
19614 WDI_LowLevelIndType wdiInd;
19615 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19617
19618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 -------------------------------------------------------------------------*/
19621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19622 ( NULL == pEventData->pEventData))
19623 {
19624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 }
19629
19630 /*-------------------------------------------------------------------------
19631 Extract indication and send it to UMAC
19632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019633 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19634 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019635 sizeof(tHalRSSINotification));
19636
19637 /*Fill in the indication parameters*/
19638 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19639 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19640 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19641 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19642 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19643 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19644 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19645 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19646 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19647 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19648 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19649 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19650 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019651 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19652 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019653
ltimariu034f7d62013-01-24 18:54:33 -080019654 if ( pWDICtx->wdiLowLevelIndCB )
19655 {
19656 /*Notify UMAC of indication*/
19657 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19658 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019659
19660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019661}/*WDI_ProcessLowRSSIInd*/
19662
19663
19664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 an indication of this kind is being received over the
19667 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019668
19669 @param pWDICtx: pointer to the WLAN DAL context
19670 pEventData: pointer to the event information structure
19671
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 @see
19673 @return Result of the function call
19674*/
19675WDI_Status
19676WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019677(
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 WDI_ControlBlockType* pWDICtx,
19679 WDI_EventInfoType* pEventData
19680)
19681{
19682 WDI_Status wdiStatus;
19683 eHalStatus halStatus;
19684 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019685 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19687
19688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 -------------------------------------------------------------------------*/
19691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19692 ( NULL == pEventData->pEventData))
19693 {
19694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019699 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 /*-------------------------------------------------------------------------
19701 Extract indication and send it to UMAC
19702 -------------------------------------------------------------------------*/
19703 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19704 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019705 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019706
19707 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019709 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19710 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019711 if ( pWDICtx->wdiLowLevelIndCB )
19712 {
19713 /*Notify UMAC*/
19714 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19715 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019716
19717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718}/*WDI_ProcessMissedBeaconInd*/
19719
19720
19721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 an indication of this kind is being received over the
19724 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019725
19726 @param pWDICtx: pointer to the WLAN DAL context
19727 pEventData: pointer to the event information structure
19728
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 @see
19730 @return Result of the function call
19731*/
19732WDI_Status
19733WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019734(
Jeff Johnson295189b2012-06-20 16:38:30 -070019735 WDI_ControlBlockType* pWDICtx,
19736 WDI_EventInfoType* pEventData
19737)
19738{
19739 WDI_Status wdiStatus;
19740 eHalStatus halStatus;
19741 WDI_LowLevelIndType wdiInd;
19742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19743
19744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 -------------------------------------------------------------------------*/
19747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19748 ( NULL == pEventData->pEventData))
19749 {
19750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 }
19755
19756 /*-------------------------------------------------------------------------
19757 Extract indication and send it to UMAC
19758 -------------------------------------------------------------------------*/
19759 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19760 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019762
19763 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 /* ! TO DO - fill in from HAL struct:
19766 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19767
ltimariu034f7d62013-01-24 18:54:33 -080019768 if ( pWDICtx->wdiLowLevelIndCB )
19769 {
19770 /*Notify UMAC*/
19771 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19772 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019773
19774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019775}/*WDI_ProcessUnkAddrFrameInd*/
19776
19777
19778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019779 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019780 indication of this kind is being received over the bus
19781 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019782
19783 @param pWDICtx: pointer to the WLAN DAL context
19784 pEventData: pointer to the event information structure
19785
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 @see
19787 @return Result of the function call
19788*/
19789WDI_Status
19790WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019791(
Jeff Johnson295189b2012-06-20 16:38:30 -070019792 WDI_ControlBlockType* pWDICtx,
19793 WDI_EventInfoType* pEventData
19794)
19795{
19796 WDI_LowLevelIndType wdiInd;
19797 tpSirMicFailureInd pHalMicFailureInd;
19798
19799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19800
19801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019803 -------------------------------------------------------------------------*/
19804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19805 ( NULL == pEventData->pEventData))
19806 {
19807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019812
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19814 /*-------------------------------------------------------------------------
19815 Extract indication and send it to UMAC
19816 -------------------------------------------------------------------------*/
19817
19818 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019819 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019820 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19821 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19822 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19823 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19824 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19825 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19826 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19827 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019828 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019830 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019831 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019832 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019833 pHalMicFailureInd->info.keyId;
19834 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19835 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19836 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19837 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019838
19839 if ( pWDICtx->wdiLowLevelIndCB )
19840 {
19841 /*Notify UMAC*/
19842 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019844
19845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019846}/*WDI_ProcessMicFailureInd*/
19847
19848
19849/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019850 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 an indication of this kind is being received over the
19852 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019853
19854 @param pWDICtx: pointer to the WLAN DAL context
19855 pEventData: pointer to the event information structure
19856
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 @see
19858 @return Result of the function call
19859*/
19860WDI_Status
19861WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019862(
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 WDI_ControlBlockType* pWDICtx,
19864 WDI_EventInfoType* pEventData
19865)
19866{
19867 WDI_Status wdiStatus;
19868 eHalStatus halStatus;
19869 WDI_LowLevelIndType wdiInd;
19870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19871
19872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019874 -------------------------------------------------------------------------*/
19875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19876 ( NULL == pEventData->pEventData))
19877 {
19878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 }
19883
19884 /*-------------------------------------------------------------------------
19885 Extract indication and send it to UMAC
19886 -------------------------------------------------------------------------*/
19887
19888 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19889 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019890 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019891
19892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19893 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019894
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019896 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19897 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019898
ltimariu034f7d62013-01-24 18:54:33 -080019899 if ( pWDICtx->wdiLowLevelIndCB )
19900 {
19901 /*Notify UMAC*/
19902 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19903 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019904
19905 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019906}/*WDI_ProcessFatalErrorInd*/
19907
19908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 an indication of this kind is being received over the
19911 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019912
19913 @param pWDICtx: pointer to the WLAN DAL context
19914 pEventData: pointer to the event information structure
19915
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 @see
19917 @return Result of the function call
19918*/
19919WDI_Status
19920WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019921(
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 WDI_ControlBlockType* pWDICtx,
19923 WDI_EventInfoType* pEventData
19924)
19925{
19926 tDeleteStaContextParams halDelSTACtx;
19927 WDI_LowLevelIndType wdiInd;
19928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19929
19930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 -------------------------------------------------------------------------*/
19933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19934 ( NULL == pEventData->pEventData))
19935 {
19936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 }
19941
19942 /*-------------------------------------------------------------------------
19943 Extract indication and send it to UMAC
19944 -------------------------------------------------------------------------*/
19945
19946 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019947 wpalMemoryCopy( &halDelSTACtx,
19948 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 sizeof(halDelSTACtx));
19950
19951 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019953
19954 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19955 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19956 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19957 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19958
Jeff Johnsone7245742012-09-05 17:12:55 -070019959 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019963 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19964 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019965
ltimariu034f7d62013-01-24 18:54:33 -080019966 if ( pWDICtx->wdiLowLevelIndCB )
19967 {
19968 /*Notify UMAC*/
19969 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19970 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019971
19972 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019973}/*WDI_ProcessDelSTAInd*/
19974
19975/**
19976*@brief Process Coex Indication function (called when
19977 an indication of this kind is being received over the
19978 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019979
19980 @param pWDICtx: pointer to the WLAN DAL context
19981 pEventData: pointer to the event information structure
19982
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 @see
19984 @return Result of the function call
19985*/
19986WDI_Status
19987WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019988(
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 WDI_ControlBlockType* pWDICtx,
19990 WDI_EventInfoType* pEventData
19991)
19992{
19993 WDI_LowLevelIndType wdiInd;
19994 tCoexIndMsg halCoexIndMsg;
19995 wpt_uint32 index;
19996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19997
19998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 -------------------------------------------------------------------------*/
20001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20002 ( NULL == pEventData->pEventData ))
20003 {
20004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 }
20009
20010 /*-------------------------------------------------------------------------
20011 Extract indication and send it to UMAC
20012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20014 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 sizeof(halCoexIndMsg.coexIndParams) );
20016
20017 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 wdiInd.wdiIndicationType = WDI_COEX_IND;
20019 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20021 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020022 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020023 }
20024
20025 // DEBUG
20026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20027 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020028 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20029 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20030 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20031 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20032 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020033
ltimariu034f7d62013-01-24 18:54:33 -080020034 if ( pWDICtx->wdiLowLevelIndCB )
20035 {
20036 /*Notify UMAC*/
20037 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20038 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020039
20040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020041}/*WDI_ProcessCoexInd*/
20042
20043/**
20044*@brief Process Tx Complete Indication function (called when
20045 an indication of this kind is being received over the
20046 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020047
20048 @param pWDICtx: pointer to the WLAN DAL context
20049 pEventData: pointer to the event information structure
20050
Jeff Johnson295189b2012-06-20 16:38:30 -070020051 @see
20052 @return Result of the function call
20053*/
20054WDI_Status
20055WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020056(
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 WDI_ControlBlockType* pWDICtx,
20058 WDI_EventInfoType* pEventData
20059)
20060{
20061 WDI_LowLevelIndType wdiInd;
20062 tTxComplIndMsg halTxComplIndMsg;
20063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20064
20065 /*-------------------------------------------------------------------------
20066 Sanity check
20067 -------------------------------------------------------------------------*/
20068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20069 ( NULL == pEventData->pEventData ))
20070 {
20071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020073 WDI_ASSERT( 0 );
20074 return WDI_STATUS_E_FAILURE;
20075 }
20076
20077 /*-------------------------------------------------------------------------
20078 Extract indication and send it to UMAC
20079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020080 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20081 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 sizeof(halTxComplIndMsg.txComplParams) );
20083
20084 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20086 wdiInd.wdiIndicationData.tx_complete_status
20087 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020088
ltimariu034f7d62013-01-24 18:54:33 -080020089 if ( pWDICtx->wdiLowLevelIndCB )
20090 {
20091 /*Notify UMAC*/
20092 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020094
20095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020096}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020097#ifdef FEATURE_WLAN_TDLS
20098/**
20099*@brief Process TDLS Indication function (called when
20100 an indication of this kind is being received over the
20101 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020102
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020103 @param pWDICtx: pointer to the WLAN DAL context
20104 pEventData: pointer to the event information structure
20105
20106 @see
20107 @return Result of the function call
20108*/
20109WDI_Status
20110WDI_ProcessTdlsInd
20111(
20112 WDI_ControlBlockType* pWDICtx,
20113 WDI_EventInfoType* pEventData
20114)
20115{
20116 WDI_LowLevelIndType wdiInd;
20117 tTdlsIndMsg halTdlsIndMsg;
20118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20119
20120 /*-------------------------------------------------------------------------
20121 Sanity check
20122 -------------------------------------------------------------------------*/
20123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20124 ( NULL == pEventData->pEventData ))
20125 {
20126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20127 "%s: Invalid parameters", __func__);
20128 WDI_ASSERT( 0 );
20129 return WDI_STATUS_E_FAILURE;
20130 }
20131
20132 /*-------------------------------------------------------------------------
20133 Extract indication and send it to UMAC
20134 -------------------------------------------------------------------------*/
20135 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20136 pEventData->pEventData,
20137 sizeof(halTdlsIndMsg.tdlsIndParams) );
20138
20139 /*Fill in the indication parameters*/
20140 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20141
20142 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20143 = halTdlsIndMsg.tdlsIndParams.status;
20144
20145 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20146 = halTdlsIndMsg.tdlsIndParams.staIdx;
20147
20148 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20149 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20150
20151 /*Notify UMAC*/
20152 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20153
20154 return WDI_STATUS_SUCCESS;
20155}/*WDI_ProcessTdlsInd*/
20156#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020157/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020158*@brief Process Noa Start Indication function (called when
20159 an indication of this kind is being received over the
20160 bus from HAL)
20161
20162 @param pWDICtx: pointer to the WLAN DAL context
20163 pEventData: pointer to the event information structure
20164
20165 @see
20166 @return Result of the function call
20167*/
20168WDI_Status
20169WDI_ProcessP2pNoaStartInd
20170(
20171 WDI_ControlBlockType* pWDICtx,
20172 WDI_EventInfoType* pEventData
20173)
20174{
20175 WDI_LowLevelIndType wdiInd;
20176 tNoaStartIndMsg halNoaStartIndMsg;
20177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20178
20179 /*-------------------------------------------------------------------------
20180 Sanity check
20181 -------------------------------------------------------------------------*/
20182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20183 ( NULL == pEventData->pEventData ))
20184 {
20185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20186 "%s: Invalid parameters", __func__);
20187 WDI_ASSERT( 0 );
20188 return WDI_STATUS_E_FAILURE;
20189 }
20190
20191 /*-------------------------------------------------------------------------
20192 Extract indication and send it to UMAC
20193 -------------------------------------------------------------------------*/
20194 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20195 pEventData->pEventData,
20196 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20197
20198 /*Fill in the indication parameters*/
20199 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20200
20201 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20202 = halNoaStartIndMsg.noaStartIndParams.status;
20203
20204 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20205 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20206
20207 /*Notify UMAC*/
20208 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20209
20210 return WDI_STATUS_SUCCESS;
20211}/*WDI_ProcessNoaAttrInd*/
20212
20213/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020214*@brief Process Noa Attr Indication function (called when
20215 an indication of this kind is being received over the
20216 bus from HAL)
20217
20218 @param pWDICtx: pointer to the WLAN DAL context
20219 pEventData: pointer to the event information structure
20220
20221 @see
20222 @return Result of the function call
20223*/
20224WDI_Status
20225WDI_ProcessP2pNoaAttrInd
20226(
20227 WDI_ControlBlockType* pWDICtx,
20228 WDI_EventInfoType* pEventData
20229)
20230{
20231 WDI_LowLevelIndType wdiInd;
20232 tNoaAttrIndMsg halNoaAttrIndMsg;
20233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20234
20235 /*-------------------------------------------------------------------------
20236 Sanity check
20237 -------------------------------------------------------------------------*/
20238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20239 ( NULL == pEventData->pEventData ))
20240 {
20241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 WDI_ASSERT( 0 );
20244 return WDI_STATUS_E_FAILURE;
20245 }
20246
20247 /*-------------------------------------------------------------------------
20248 Extract indication and send it to UMAC
20249 -------------------------------------------------------------------------*/
20250 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20251 pEventData->pEventData,
20252 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20253
20254 /*Fill in the indication parameters*/
20255 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020256
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20258 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020259
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20261 = halNoaAttrIndMsg.noaAttrIndParams.index;
20262 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20263 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20264 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20265 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020266
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20268 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20269 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20270 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20271 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20272 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20273 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20274 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020275
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20277 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20278 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20279 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20280 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20281 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20282 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20283 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20284
ltimariu034f7d62013-01-24 18:54:33 -080020285 if ( pWDICtx->wdiLowLevelIndCB )
20286 {
20287 /*Notify UMAC*/
20288 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20289 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020290
20291 return WDI_STATUS_SUCCESS;
20292}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020293
20294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020295 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 an indication of this kind is being received over the
20297 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020298
20299 @param pWDICtx: pointer to the WLAN DAL context
20300 pEventData: pointer to the event information structure
20301
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 @see
20303 @return Result of the function call
20304*/
20305WDI_Status
20306WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020307(
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_ControlBlockType* pWDICtx,
20309 WDI_EventInfoType* pEventData
20310)
20311{
20312 WDI_LowLevelIndType wdiInd;
20313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020314
Jeff Johnson295189b2012-06-20 16:38:30 -070020315 /*-------------------------------------------------------------------------
20316 Extract indication and send it to UMAC
20317 -------------------------------------------------------------------------*/
20318 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020319 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20320
ltimariu034f7d62013-01-24 18:54:33 -080020321 if ( pWDICtx->wdiLowLevelIndCB )
20322 {
20323 /*Notify UMAC*/
20324 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20325 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020326
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020328}/*WDI_ProcessTxPerHitInd*/
20329
Jeff Johnson295189b2012-06-20 16:38:30 -070020330/**
Yue Ma365933a2013-08-14 15:59:08 -070020331 @brief Process Periodic Tx Pattern Fw Indication function
20332
20333 @param pWDICtx: pointer to the WLAN DAL context
20334 pEventData: pointer to the event information structure
20335
20336 @see
20337 @return Result of the function call
20338*/
20339WDI_Status
20340WDI_ProcessPeriodicTxPtrnFwInd
20341(
20342 WDI_ControlBlockType* pWDICtx,
20343 WDI_EventInfoType* pEventData
20344)
20345{
20346 WDI_LowLevelIndType wdiInd;
20347
20348 /*-------------------------------------------------------------------------
20349 Sanity check
20350 -------------------------------------------------------------------------*/
20351 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20352 (NULL == pEventData->pEventData))
20353 {
20354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20355 "%s: Invalid parameters", __func__);
20356 WDI_ASSERT(0);
20357 return WDI_STATUS_E_FAILURE;
20358 }
20359
20360 /*-------------------------------------------------------------------------
20361 Extract indication and send it to UMAC
20362 -------------------------------------------------------------------------*/
20363 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20364 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20365 sizeof(tHalPeriodicTxPtrnFwInd));
20366
20367 if (pWDICtx->wdiLowLevelIndCB)
20368 {
20369 /*Notify UMAC*/
20370 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20371 }
20372
20373 return WDI_STATUS_SUCCESS;
20374}
20375
20376/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 @brief WDI_ProcessFTMCommandReq
20378 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020379
20380 @param pWDICtx: pointer to the WLAN DAL context
20381 pEventData: pointer to the event information structure
20382
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 @see
20384 @return Result of the function call
20385*/
20386WDI_Status
20387WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020388(
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 WDI_ControlBlockType* pWDICtx,
20390 WDI_EventInfoType* pEventData
20391)
20392{
20393 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20394 wpt_uint8 *ftmCommandBuffer = NULL;
20395 wpt_uint16 dataOffset;
20396 wpt_uint16 bufferSize;
20397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 -------------------------------------------------------------------------*/
20400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20401 ( NULL == pEventData->pEventData))
20402
20403 {
20404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020408 }
20409
20410 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20411
20412 /* Get MSG Buffer */
20413 WDI_GetMessageBuffer(pWDICtx,
20414 WDI_FTM_CMD_REQ,
20415 ftmCommandReq->bodyLength,
20416 &ftmCommandBuffer,
20417 &dataOffset,
20418 &bufferSize);
20419
20420 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20421 ftmCommandReq->FTMCommandBody,
20422 ftmCommandReq->bodyLength);
20423
20424 /* Send MSG */
20425 return WDI_SendMsg(pWDICtx,
20426 ftmCommandBuffer,
20427 bufferSize,
20428 pEventData->pCBfnc,
20429 pEventData->pUserData,
20430 WDI_FTM_CMD_RESP);
20431}
20432
20433/**
20434 @brief WDI_ProcessFTMCommandRsp
20435 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020436
20437 @param pWDICtx: pointer to the WLAN DAL context
20438 pEventData: pointer to the event information structure
20439
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 @see
20441 @return Result of the function call
20442*/
20443WDI_Status
20444WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020445(
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 WDI_ControlBlockType* pWDICtx,
20447 WDI_EventInfoType* pEventData
20448)
20449{
20450 WDI_FTMCommandRspCb ftmCMDRspCb;
20451 tProcessPttRspParams *ftmCMDRspData = NULL;
20452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20453
20454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 -------------------------------------------------------------------------*/
20457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20458 ( NULL == pEventData->pEventData))
20459 {
20460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 }
20465
20466 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20467
20468 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20469
Jeff Johnsone7245742012-09-05 17:12:55 -070020470 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20471 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20473
20474 /*Notify UMAC*/
20475 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20476
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020478}
Jeff Johnson295189b2012-06-20 16:38:30 -070020479/**
20480 @brief WDI_ProcessHalDumpCmdReq
20481 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020482
20483 @param pWDICtx: pointer to the WLAN DAL context
20484 pEventData: pointer to the event information structure
20485
Jeff Johnson295189b2012-06-20 16:38:30 -070020486 @see
20487 @return Result of the function call
20488*/
20489WDI_Status
20490WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020491(
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 WDI_ControlBlockType* pWDICtx,
20493 WDI_EventInfoType* pEventData
20494)
20495{
20496 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20497 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20498 wpt_uint16 usDataOffset = 0;
20499 wpt_uint16 usSendSize = 0;
20500 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020502
20503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 -------------------------------------------------------------------------*/
20506 if (( NULL == pEventData ) ||
20507 ( NULL == pEventData->pEventData) ||
20508 ( NULL == pEventData->pCBfnc ))
20509 {
20510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020514 }
20515
20516 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20517 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20518
20519 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020522 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020523 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020524 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020526 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020530
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 /*-----------------------------------------------------------------------
20532 Get message buffer
20533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20536 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020537 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20539 {
20540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20541 "Unable to get send buffer in HAL Dump Command req %x %x %x",
20542 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 }
20546
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 wpalMemoryCopy( pSendBuffer+usDataOffset,
20548 &halDumpCmdReqMsg.dumpCmdReqParams,
20549 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020550
20551 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020552 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020553
20554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020555 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20558 wdiHALDumpCmdRspCb, pEventData->pUserData,
20559 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020560}
20561
20562/**
20563 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 Process hal Dump Command Response from HAL, simply route to HDD
20565
20566 @param pWDICtx: pointer to the WLAN DAL context
20567 pEventData: pointer to the event information structure
20568
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 @see
20570 @return Result of the function call
20571*/
20572WDI_Status
20573WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020574(
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 WDI_ControlBlockType* pWDICtx,
20576 WDI_EventInfoType* pEventData
20577)
20578{
20579 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020580 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20582
20583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 -------------------------------------------------------------------------*/
20586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20587 ( NULL == pEventData->pEventData))
20588 {
20589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020593 }
20594
Jeff Johnsone7245742012-09-05 17:12:55 -070020595 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020596
20597 /*Initialize the WDI Response structure */
20598 wdiHALDumpCmdRsp.usBufferLen = 0;
20599 wdiHALDumpCmdRsp.pBuffer = NULL;
20600
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020601 wpalMemoryCopy( &halDumpCmdRspParams,
20602 pEventData->pEventData,
20603 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020604
20605 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020606 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020607
20608 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020609 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 {
20611 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020612 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20613 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20614
20615 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20616 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020617 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020619
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 /*Notify UMAC*/
20621 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20622
20623 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20624 {
20625 /* Free the allocated buffer */
20626 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20627 }
20628 return WDI_STATUS_SUCCESS;
20629}
20630
20631/*==========================================================================
20632 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020633
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020636==========================================================================*/
20637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 when it wishes to send up a notification like the ones
20640 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020641
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020643
20644 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 wctsNotifyCBData: the callback data of the user
20647
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020649
20650 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020651*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020652void
Jeff Johnson295189b2012-06-20 16:38:30 -070020653WDI_NotifyMsgCTSCB
20654(
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 WCTS_NotifyEventType wctsEvent,
20657 void* wctsNotifyCBData
20658)
20659{
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20662
20663 if (NULL == pWDICtx )
20664 {
20665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 }
20670
20671 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20672 {
20673 /* callback presumably occurred after close */
20674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020675 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 }
20678
20679 if ( WCTS_EVENT_OPEN == wctsEvent )
20680 {
20681 /*Flag must be set atomically as it is checked from incoming request
20682 functions*/
20683 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020685
20686 /*Nothing to do - so try to dequeue any pending request that may have
20687 occurred while we were trying to establish this*/
20688 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 {
20693 /*Flag must be set atomically as it is checked from incoming request
20694 functions*/
20695 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020697
20698 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 wpalMutexRelease(&pWDICtx->wptMutex);
20701
20702 /*Notify that the Control Channel is closed */
20703 wpalEventSet(&pWDICtx->wctsActionEvent);
20704 }
20705
20706}/*WDI_NotifyMsgCTSCB*/
20707
20708
20709/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 when it wishes to send up a packet received over the
20712 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020713
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020715
20716 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 pMsg: the packet
20718 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 wctsRxMsgCBData: the callback data of the user
20720
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020722
20723 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020724*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020725void
20726WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020727(
Jeff Johnsone7245742012-09-05 17:12:55 -070020728 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 void* pMsg,
20730 wpt_uint32 uLen,
20731 void* wctsRxMsgCBData
20732)
20733{
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 tHalMsgHeader *pHalMsgHeader;
20735 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20738
20739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 ( uLen < sizeof(tHalMsgHeader)))
20744 {
20745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 }
20750
20751 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20752 {
20753 /* callback presumably occurred after close */
20754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020755 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 }
20758
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 context - so no serialization is necessary here
20761 ! - revisit this assumption */
20762
20763 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20764
20765 if ( uLen != pHalMsgHeader->msgLen )
20766 {
20767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20768 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20770 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 }
20772
20773 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20774
20775 /*The message itself starts after the header*/
20776 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20777 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20778 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20779 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20780
20781
20782 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20783 {
20784 /*Stop the timer as the response was received */
20785 /*!UT - check for potential race conditions between stop and response */
20786 wpalTimerStop(&pWDICtx->wptResponseTimer);
20787 }
20788 /* Check if we receive a response message which is not expected */
20789 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20790 {
20791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20792 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20793 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020794 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20796 pWDICtx->wdiExpectedResponse);
20797 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa17ef2a62013-08-29 15:27:56 -070020798 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 return;
20800 }
20801
20802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20803 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20804
20805 /*Post response event to the state machine*/
20806 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20807
20808}/*WDI_RXMsgCTSCB*/
20809
20810
20811/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020813========================================================================*/
20814
20815/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020818
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 @param pWDICtx - pointer to the control block
20820
20821 @return Result of the function call
20822*/
20823WPT_INLINE WDI_Status
20824WDI_CleanCB
20825(
20826 WDI_ControlBlockType* pWDICtx
20827)
20828{
20829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20830
20831 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020833
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20836 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20837
20838 WDI_ResetAssocSessions( pWDICtx );
20839
20840 return WDI_STATUS_SUCCESS;
20841}/*WDI_CleanCB*/
20842
20843
20844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020845 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020846
Jeff Johnsone7245742012-09-05 17:12:55 -070020847
20848 @param pWDICtx: pointer to the WLAN DAL context
20849 pEventData: pointer to the event information structure
20850
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 @see
20852 @return Result of the function call
20853*/
20854WPT_INLINE WDI_Status
20855WDI_ProcessRequest
20856(
20857 WDI_ControlBlockType* pWDICtx,
20858 WDI_EventInfoType* pEventData
20859)
20860{
20861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20862
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 already checked these pointers*/
20865
20866 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20867 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020868 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20870 "Calling request processing function for req %s (%d) %x",
20871 WDI_getReqMsgString(pEventData->wdiRequest),
20872 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20873 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20874 }
20875 else
20876 {
20877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020878 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 pEventData->wdiRequest);
20880 return WDI_STATUS_E_NOT_IMPLEMENT;
20881 }
20882}/*WDI_ProcessRequest*/
20883
20884
20885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 prefixes it with a send message header
20889
20890 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 wdiReqType: type of the request being sent
20892 uBufferLen: message buffer len
20893 pMsgBuffer: resulting allocated buffer
20894 pusDataOffset: offset in the buffer where the caller
20895 can start copying its message data
20896 puBufferSize: the resulting buffer size (offset+buff
20897 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020898
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 @see
20900 @return Result of the function call
20901*/
20902WDI_Status
20903WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020904(
20905 WDI_ControlBlockType* pWDICtx,
20906 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 wpt_uint8** pMsgBuffer,
20909 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 wpt_uint16* pusBufferSize
20911)
20912{
20913 tHalMsgHeader halMsgHeader;
20914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20915
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 again*/
20918
20919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020922 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20924 if ( NULL == *pMsgBuffer )
20925 {
20926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20927 "Unable to allocate message buffer for req %s (%d)",
20928 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020931 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 }
20933
20934 /*-------------------------------------------------------------------------
20935 Fill in the message header
20936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20938 /* Fill msgVersion */
20939#ifdef WLAN_FEATURE_11AC
20940 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020941 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 else
20943#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020944 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020945
Jeff Johnsone7245742012-09-05 17:12:55 -070020946 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20947 *pusDataOffset = sizeof(halMsgHeader);
20948 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20949
20950 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020951}/*WDI_GetMessageBuffer*/
20952
20953
20954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020955 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020956 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 the CB
20958
20959 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020961
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 usSendSize size of the buffer to be sent
20963 pRspCb: response callback - save in the WDI
20964 CB
20965 pUserData: user data associated with the
20966 callback
20967 wdiExpectedResponse: the code of the response that is
20968 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020969
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 @see
20971 @return Result of the function call
20972*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020973WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020974WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020975(
20976 WDI_ControlBlockType* pWDICtx,
20977 wpt_uint8* pSendBuffer,
20978 wpt_uint32 usSendSize,
20979 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020980 void* pUserData,
20981 WDI_ResponseEnumType wdiExpectedResponse
20982)
20983{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020984 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020985 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20987
20988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 ------------------------------------------------------------------------*/
20991 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020992 pWDICtx->pfncRspCB = pRspCb;
20993 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020994
20995 /*-----------------------------------------------------------------------
20996 Call the CTS to send this message over - free message afterwards
20997 - notify transport failure
20998 Note: CTS is reponsible for freeing the message buffer.
20999 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021000 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21001 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21002 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 "Failed to send message over the bus - catastrophic failure");
21006
Jeff Johnsond13512a2012-07-17 11:42:19 -070021007 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021009 else
21010 {
21011 /* even when message was placed in CTS deferred Q, we will treat it
21012 success but log this info
21013 */
21014 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21015 {
21016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21017 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21018 "response %s (%d)",
21019 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21020 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021021 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021022 }
21023 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021024
Jeff Johnsond13512a2012-07-17 11:42:19 -070021025 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 if ( NULL != pWDICtx->wdiReqStatusCB )
21027 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021028 /*Inform originator whether request went through or not*/
21029 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21030 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 pWDICtx->wdiReqStatusCB = NULL;
21032 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021033 callback(wdiStatus, callbackContext);
21034
21035 /*For WDI requests which have registered a request callback,
21036 inform the WDA caller of the same via setting the return value
21037 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21038 end up repeating the functonality in the req callback for the
21039 WDI_STATUS_E_FAILURE case*/
21040 if (wdiStatus == WDI_STATUS_E_FAILURE)
21041 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 }
21043
Jeff Johnsond13512a2012-07-17 11:42:19 -070021044 if ( wdiStatus == WDI_STATUS_SUCCESS )
21045 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021046 /*Start timer for the expected response */
21047 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021048
21049 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021050 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021051 }
21052 else
21053 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021054 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021055 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21056 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021057
Jeff Johnsond13512a2012-07-17 11:42:19 -070021058 return wdiStatus;
21059
Jeff Johnson295189b2012-06-20 16:38:30 -070021060}/*WDI_SendMsg*/
21061
21062
21063
21064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 the bus using the control transport and saves some info
21067 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021068
21069 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 pSendBuffer: buffer to be sent
21071 usSendSize: size of the buffer to be sent
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*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021077WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021078(
21079 WDI_ControlBlockType* pWDICtx,
21080 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 wpt_uint32 usSendSize
21082)
21083{
21084 wpt_uint32 uStatus ;
21085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21086
21087 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 Note: CTS is reponsible for freeing the message buffer.
21090 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 (void*)pSendBuffer, usSendSize );
21093
21094 /*Inform Upper MAC about the outcome of the request*/
21095 if ( NULL != pWDICtx->wdiReqStatusCB )
21096 {
21097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21098 "Send indication status : %d", uStatus);
21099
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021100 /* even if CTS placed indication into its deferred Q, we treat it
21101 * as success and let CTS drain its queue as per smd interrupt to CTS
21102 */
21103 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 -070021104 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 }
21106
21107 /*If sending of the message failed - it is considered catastrophic and
21108 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021109 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21110 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21111
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 {
21113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021114 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021115
21116 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21117 return WDI_STATUS_E_FAILURE;
21118 }
21119
Jeff Johnsone7245742012-09-05 17:12:55 -070021120 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021121}/*WDI_SendIndication*/
21122
21123
21124/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 @brief WDI_DetectedDeviceError - called internally by DAL when
21126 it has detected a failure in the device
21127
21128 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 usErrorCode: error code detected by WDI or received
21130 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021131
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021134*/
21135void
21136WDI_DetectedDeviceError
21137(
21138 WDI_ControlBlockType* pWDICtx,
21139 wpt_uint16 usErrorCode
21140)
21141{
21142 WDI_LowLevelIndType wdiInd;
21143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21144
21145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21146 "Device Error detected code: %d - transitioning to stopped state",
21147 usErrorCode);
21148
21149 wpalMutexAcquire(&pWDICtx->wptMutex);
21150
21151 WDI_STATableStop(pWDICtx);
21152
21153 WDI_ResetAssocSessions(pWDICtx);
21154
21155 /*Set the expected state transition to stopped - because the device
21156 experienced a failure*/
21157 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21158
21159 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021161
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021163
21164 /*TO DO: - there should be an attempt to reset the device here*/
21165
21166 wpalMutexRelease(&pWDICtx->wptMutex);
21167
21168 /*------------------------------------------------------------------------
21169 Notify UMAC if a handler is registered
21170 ------------------------------------------------------------------------*/
21171 if (pWDICtx->wdiLowLevelIndCB)
21172 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21174 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021175
21176 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21177 }
21178}/*WDI_DetectedDeviceError*/
21179
21180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 we started on send message has expire - this should
21183 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021184 reply - trigger catastrophic failure
21185 @param
21186
Jeff Johnson295189b2012-06-20 16:38:30 -070021187 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021188
21189 @see
21190 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021191*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021192void
Jeff Johnson295189b2012-06-20 16:38:30 -070021193WDI_ResponseTimerCB
21194(
21195 void *pUserData
21196)
21197{
21198 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21200
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021201 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021206 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021207 }
21208
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021209 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021210 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021211
21212 /* If response timer is running at this time that means this timer
21213 * event is not for the last request but rather last-to-last request and
21214 * this timer event has come after we recevied respone for last-to-last
21215 * message
21216 */
21217 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21218 {
21219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21220 "WDI_ResponseTimerCB: timer in running state on timer event, "
21221 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21222 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21223 return;
21224 }
21225
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021226 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 {
21228
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021231 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070021232 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021233 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21234 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021235
21236 /* WDI timeout means Riva is not responding or SMD communication to Riva
21237 * is not happening. The only possible way to recover from this error
21238 * is to initiate SSR from APPS.
21239 * There is also an option to re-enable wifi, which will eventually
21240 * trigger SSR
21241 */
21242 if (gWDICb.bEnableSSR == false)
21243 {
21244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21245 "SSR is not enabled on WDI timeout");
21246 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21247 return;
21248 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021249#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021250 wpalWcnssResetIntr();
21251 /* if this timer fires, it means Riva did not receive the FIQ */
21252 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021253#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021254 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21255 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021256#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021257 }
21258 else
21259 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021261 "Timeout occurred but not waiting for any response %d "
21262 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
21263 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21264 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 }
21266
21267 return;
21268
21269}/*WDI_ResponseTimerCB*/
21270
21271
21272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021273 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021274
Jeff Johnsone7245742012-09-05 17:12:55 -070021275
21276 @param pWDICtx: pointer to the WLAN DAL context
21277 pEventData: pointer to the event information structure
21278
Jeff Johnson295189b2012-06-20 16:38:30 -070021279 @see
21280 @return Result of the function call
21281*/
21282WPT_INLINE WDI_Status
21283WDI_ProcessResponse
21284(
21285 WDI_ControlBlockType* pWDICtx,
21286 WDI_EventInfoType* pEventData
21287)
21288{
21289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21290
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 already checked these pointers
21293 ! - revisit this assumption */
21294 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21295 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 WDI_getRespMsgString(pEventData->wdiResponse),
21300 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21301 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21302 }
21303 else
21304 {
21305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021306 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 pEventData->wdiResponse);
21308 return WDI_STATUS_E_NOT_IMPLEMENT;
21309 }
21310}/*WDI_ProcessResponse*/
21311
21312
21313/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021315=========================================================================*/
21316
21317/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021318 @brief Utility function used by the DAL Core to help queue a
21319 request that cannot be processed right away.
21320 @param
21321
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 pWDICtx: - pointer to the WDI control block
21323 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 queued
21325
21326 @see
21327 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021328*/
21329WDI_Status
21330WDI_QueuePendingReq
21331(
21332 WDI_ControlBlockType* pWDICtx,
21333 WDI_EventInfoType* pEventData
21334)
21335{
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21340
21341 if ( NULL == pEventDataQueue )
21342 {
21343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 WDI_ASSERT(0);
21346 return WDI_STATUS_MEM_FAILURE;
21347 }
21348
21349 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21350 pEventDataQueue->pUserData = pEventData->pUserData;
21351 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21352 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021354
21355 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21356 {
21357 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021358
Jeff Johnson295189b2012-06-20 16:38:30 -070021359 if ( NULL == pEventInfo )
21360 {
21361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021362 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 WDI_ASSERT(0);
21364 wpalMemoryFree(pEventDataQueue);
21365 return WDI_STATUS_MEM_FAILURE;
21366 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021367
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21369
21370 }
21371 pEventDataQueue->pEventData = pEventInfo;
21372
21373 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021375
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021377
21378 return WDI_STATUS_SUCCESS;
21379}/*WDI_QueuePendingReq*/
21380
21381/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021383 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 @param
21385
21386 pMsg - pointer to the message
21387
21388 @see
21389 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021390*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021391void
Jeff Johnson295189b2012-06-20 16:38:30 -070021392WDI_PALCtrlMsgCB
21393(
21394 wpt_msg *pMsg
21395)
21396{
21397 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 WDI_ControlBlockType* pWDICtx = NULL;
21399 WDI_Status wdiStatus;
21400 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 void* pUserData;
21402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21403
21404 if (( NULL == pMsg )||
21405 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21406 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21407 {
21408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021409 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021411 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 }
21413
21414 /*Transition back to the state that we had before serialization
21415 - serialization transitions us to BUSY to stop any incomming requests
21416 ! TO DO L: possible race condition here if a request comes in between the
21417 state transition and the post function*/
21418
Jeff Johnsone7245742012-09-05 17:12:55 -070021419 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021420
21421 /*-----------------------------------------------------------------------
21422 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 -----------------------------------------------------------------------*/
21425 switch ( pEventData->wdiRequest )
21426 {
21427
Jeff Johnsone7245742012-09-05 17:12:55 -070021428 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21430 break;
21431
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 case WDI_NV_DOWNLOAD_REQ:
21433 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21434 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21435 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21436 {
21437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021438 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21440 }
21441 else
21442 {
21443 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21444 }
21445
21446 break;
21447
21448 default:
21449 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21450 break;
21451 }/*switch ( pEventData->wdiRequest )*/
21452
21453 if ( WDI_STATUS_SUCCESS != wdiStatus )
21454 {
21455 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21456
21457 if ( NULL != pfnReqStatusCB )
21458 {
21459 /*Fail the request*/
21460 pfnReqStatusCB( wdiStatus, pUserData);
21461 }
21462 }
21463
21464 /* Free data - that was allocated when queueing*/
21465 if( pEventData != NULL )
21466 {
21467 if( pEventData->pEventData != NULL )
21468 {
21469 wpalMemoryFree(pEventData->pEventData);
21470 }
21471 wpalMemoryFree(pEventData);
21472 }
21473
21474 if( pMsg != NULL )
21475 {
21476 wpalMemoryFree(pMsg);
21477 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021478
Jeff Johnson295189b2012-06-20 16:38:30 -070021479}/*WDI_PALCtrlMsgCB*/
21480
21481/**
21482 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 and schedule for execution a pending request
21484 @param
21485
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 pWDICtx: - pointer to the WDI control block
21487 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 queued
21489
21490 @see
21491 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021492*/
21493WDI_Status
21494WDI_DequeuePendingReq
21495(
21496 WDI_ControlBlockType* pWDICtx
21497)
21498{
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21503
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021505
21506 if ( NULL == pNode )
21507 {
21508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 return WDI_STATUS_SUCCESS;
21511 }
21512
21513 /*The node actually points to the 1st element inside the Event Data struct -
21514 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021515 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021516
21517 /*Serialize processing in the control thread
21518 !TO DO: - check to see if these are all the messages params that need
21519 to be filled in*/
21520 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21521
21522 if ( NULL == palMsg )
21523 {
21524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021525 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021529 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021530 palMsg->callback = WDI_PALCtrlMsgCB;
21531 palMsg->ptr = pEventData;
21532
21533 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 palMsg->val = pWDICtx->uGlobalState;
21535
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 /*Transition back to BUSY as we need to handle a queued request*/
21537 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21540
21541 return WDI_STATUS_PENDING;
21542}/*WDI_DequeuePendingReq*/
21543
21544
21545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 away.- The assoc requests will be queued by BSSID
21549 @param
21550
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 pWDICtx: - pointer to the WDI control block
21552 pEventData: pointer to the evnt info that needs to be queued
21553 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021554
21555 @see
21556 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021557*/
21558WDI_Status
21559WDI_QueueNewAssocRequest
21560(
21561 WDI_ControlBlockType* pWDICtx,
21562 WDI_EventInfoType* pEventData,
21563 wpt_macAddr macBSSID
21564)
21565{
Jeff Johnsone7245742012-09-05 17:12:55 -070021566 wpt_uint8 i;
21567 WDI_BSSSessionType* pSession = NULL;
21568 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021570 void* pEventInfo;
21571 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021573
Jeff Johnsone7245742012-09-05 17:12:55 -070021574
21575 /*------------------------------------------------------------------------
21576 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 ------------------------------------------------------------------------*/
21578 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21579 {
21580 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21581 {
21582 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 pSession = &pWDICtx->aBSSSessions[i];
21584 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 }
21586 }
21587
21588 if ( i >= WDI_MAX_BSS_SESSIONS )
21589 {
21590 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021593
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 /*------------------------------------------------------------------------
21595 Fill in the BSSID for this session and set the usage flag
21596 ------------------------------------------------------------------------*/
21597 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021599
21600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 ------------------------------------------------------------------------*/
21603 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21604 if ( NULL == pEventDataQueue )
21605 {
21606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021607 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 WDI_ASSERT(0);
21609 return WDI_STATUS_MEM_FAILURE;
21610 }
21611
21612 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21613 if ( NULL == pSessionIdElement )
21614 {
21615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021616 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021617 WDI_ASSERT(0);
21618 wpalMemoryFree(pEventDataQueue);
21619 return WDI_STATUS_MEM_FAILURE;
21620 }
21621
21622 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21623 if ( NULL == pEventInfo )
21624 {
21625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021626 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021627 WDI_ASSERT(0);
21628 wpalMemoryFree(pSessionIdElement);
21629 wpalMemoryFree(pEventDataQueue);
21630 return WDI_STATUS_MEM_FAILURE;
21631 }
21632
21633 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21634 pEventDataQueue->pUserData = pEventData->pUserData;
21635 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21636 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638
21639 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21640 pEventDataQueue->pEventData = pEventInfo;
21641
21642 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644
21645 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021647
Jeff Johnsone7245742012-09-05 17:12:55 -070021648 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021649
21650 /*We need to maintain a separate list that keeps track of the order in which
21651 the new assoc requests are being queued such that we can start processing
21652 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 pSessionIdElement->ucIndex = i;
21654 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021655
21656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21657 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021659
21660 /*Return pending as this is what the status of the request is since it has
21661 been queued*/
21662 return WDI_STATUS_PENDING;
21663}/*WDI_QueueNewAssocRequest*/
21664
21665/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 away.- The assoc requests will be queued by BSSID
21669 @param
21670
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 pWDICtx: - pointer to the WDI control block
21672 pSession: - session in which to queue
21673 pEventData: pointer to the event info that needs to be
21674 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021675
21676 @see
21677 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021678*/
21679WDI_Status
21680WDI_QueueAssocRequest
21681(
21682 WDI_ControlBlockType* pWDICtx,
21683 WDI_BSSSessionType* pSession,
21684 WDI_EventInfoType* pEventData
21685)
21686{
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021691
21692 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 Sanity check
21694 ------------------------------------------------------------------------*/
21695 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21696 {
21697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021699
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 }
21702
21703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 ------------------------------------------------------------------------*/
21706 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21707 if ( NULL == pEventDataQueue )
21708 {
21709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021710 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021711 WDI_ASSERT(0);
21712 return WDI_STATUS_MEM_FAILURE;
21713 }
21714
21715 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21716 if ( NULL == pEventInfo )
21717 {
21718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21719 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021720 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 WDI_ASSERT(0);
21722 wpalMemoryFree(pEventDataQueue);
21723 return WDI_STATUS_MEM_FAILURE;
21724 }
21725
21726 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21727 pEventDataQueue->pUserData = pEventData->pUserData;
21728 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21729 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 pEventDataQueue->pEventData = pEventInfo;
21732
21733 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21734
21735 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737
21738 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021740
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021742
21743 /*The result of this operation is pending because the request has been
21744 queued and it will be processed at a later moment in time */
21745 return WDI_STATUS_PENDING;
21746}/*WDI_QueueAssocRequest*/
21747
21748/**
21749 @brief Utility function used by the DAL Core to help dequeue
21750 an association request that was pending
21751 The request will be queued up in front of the main
21752 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 @param
21754
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021756
21757
21758 @see
21759 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021760*/
21761WDI_Status
21762WDI_DequeueAssocRequest
21763(
21764 WDI_ControlBlockType* pWDICtx
21765)
21766{
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 wpt_list_node* pNode = NULL;
21768 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 WDI_BSSSessionType* pSession;
21770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021771
21772 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 Sanity check
21774 ------------------------------------------------------------------------*/
21775 if ( NULL == pWDICtx )
21776 {
21777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021779
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 }
21782
21783 /*------------------------------------------------------------------------
21784 An association has been completed => a new association can occur
21785 Check to see if there are any pending associations ->
21786 If so , transfer all the pending requests into the busy queue for
21787 processing
21788 These requests have arrived prior to the requests in the busy queue
21789 (bc they needed to be processed in order to be placed in this queue)
21790 => they will be placed at the front of the busy queue
21791 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021793
21794 if ( NULL == pNode )
21795 {
21796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021797 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 return WDI_STATUS_SUCCESS;
21799 }
21800
21801 /*The node actually points to the 1st element inside the Session Id struct -
21802 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021803 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021804
21805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21806 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21807
21808 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21809 {
21810 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021811
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 the front of the main waiting queue for subsequent execution*/
21814 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021815 while ( NULL != pNode )
21816 {
21817 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21819 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021820 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 }
21823 else
21824 {
21825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021826 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 WPAL_ASSERT(0);
21828 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021830 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021831
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21833 wpalMemoryFree(pSessionIdElement);
21834 return WDI_STATUS_SUCCESS;
21835}/*WDI_DequeueAssocRequest*/
21836
21837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021839 pending requests - all req cb will be called with
21840 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 @param
21842
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021844
21845 @see
21846 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021847*/
21848WDI_Status
21849WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021850(
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 WDI_ControlBlockType* pWDICtx
21852)
21853{
Jeff Johnsone7245742012-09-05 17:12:55 -070021854 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021855 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 void* pUserData;
21858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21859
Jeff Johnsone7245742012-09-05 17:12:55 -070021860 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021861
21862 /*------------------------------------------------------------------------
21863 Go through all the requests and fail them - this will only be called
21864 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021865 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 ------------------------------------------------------------------------*/
21867 while( pNode )
21868 {
21869 /*The node actually points to the 1st element inside the Event Data struct -
21870 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 pEventDataQueue = (WDI_EventInfoType*)pNode;
21872
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21874 if ( NULL != pfnReqStatusCB )
21875 {
21876 /*Fail the request*/
21877 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21878 }
21879 /* Free data - that was allocated when queueing */
21880 if ( pEventDataQueue->pEventData != NULL )
21881 {
21882 wpalMemoryFree(pEventDataQueue->pEventData);
21883 }
21884 wpalMemoryFree(pEventDataQueue);
21885
21886 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21887 {
21888 break;
21889 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 }
21891
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 return WDI_STATUS_SUCCESS;
21893}/*WDI_ClearPendingRequests*/
21894
21895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 @brief Helper routine used to init the BSS Sessions in the WDI control block
21897
21898
21899 @param pWDICtx: pointer to the WLAN DAL context
21900
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 @see
21902*/
21903void
21904WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021905(
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 WDI_ControlBlockType* pWDICtx
21907)
21908{
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21911
21912 /*-------------------------------------------------------------------------
21913 No Sanity check
21914 -------------------------------------------------------------------------*/
21915 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21916 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021917 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021918 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21919 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21920 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21921 }
21922}/*WDI_ResetAssocSessions*/
21923
21924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021925 @brief Helper routine used to find a session based on the BSSID
21926
21927
21928 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 pSession: pointer to the session (if found)
21931
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021934*/
21935wpt_uint8
21936WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021937(
Jeff Johnson295189b2012-06-20 16:38:30 -070021938 WDI_ControlBlockType* pWDICtx,
21939 wpt_macAddr macBSSID,
21940 WDI_BSSSessionType** ppSession
21941)
21942{
Jeff Johnsone7245742012-09-05 17:12:55 -070021943 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21945
21946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 -------------------------------------------------------------------------*/
21949 if ( NULL == ppSession )
21950 {
21951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021952 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 }
21955
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957
Jeff Johnsone7245742012-09-05 17:12:55 -070021958 /*------------------------------------------------------------------------
21959 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 ------------------------------------------------------------------------*/
21961 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21962 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021963 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21964 (eWLAN_PAL_TRUE ==
21965 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21966 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 {
21968 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 return i;
21971 }
21972 }
21973
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975}/*WDI_FindAssocSession*/
21976
21977/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 @brief Helper routine used to find a session based on the BSSID
21979
21980
21981 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 ucBSSIdx: BSS Index of the session
21983 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021984
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021987*/
21988wpt_uint8
21989WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021990(
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 WDI_ControlBlockType* pWDICtx,
21992 wpt_uint16 ucBSSIdx,
21993 WDI_BSSSessionType** ppSession
21994)
21995{
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21998
21999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 -------------------------------------------------------------------------*/
22002 if ( NULL == ppSession )
22003 {
22004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022005 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 }
22008
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022010
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 /*------------------------------------------------------------------------
22012 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 ------------------------------------------------------------------------*/
22014 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22015 {
22016 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22017 {
22018 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 return i;
22021 }
22022 }
22023
Jeff Johnsone7245742012-09-05 17:12:55 -070022024 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022025}/*WDI_FindAssocSessionByBSSIdx*/
22026
22027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022028 @brief Helper routine used to find a session based on the BSSID
22029
22030
22031 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 ucBSSIdx: BSS Index of the session
22033 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022034
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022037*/
22038wpt_uint8
22039WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022040(
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 WDI_ControlBlockType* pWDICtx,
22042 wpt_uint16 usIdx,
22043 WDI_BSSSessionType** ppSession
22044)
22045{
22046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22047
22048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 -------------------------------------------------------------------------*/
22051 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22052 {
22053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022054 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022055 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 }
22057
22058 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022059 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022060
22061 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022062
Jeff Johnson295189b2012-06-20 16:38:30 -070022063}/*WDI_FindAssocSessionByBSSIdx*/
22064
22065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022067 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022068
22069
22070 @param pWDICtx: pointer to the WLAN DAL context
22071 pSession: pointer to the session (if found)
22072
Jeff Johnson295189b2012-06-20 16:38:30 -070022073 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022074 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022075*/
22076wpt_uint8
22077WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022078(
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 WDI_ControlBlockType* pWDICtx,
22080 WDI_BSSSessionType** ppSession
22081)
22082{
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 -------------------------------------------------------------------------*/
22088 if ( NULL == ppSession )
22089 {
22090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022091 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022092 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 }
22094
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022096
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 /*------------------------------------------------------------------------
22098 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 ------------------------------------------------------------------------*/
22100 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22101 {
22102 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22103 {
22104 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 return i;
22107 }
22108 }
22109
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022111}/*WDI_FindEmptySession*/
22112
22113
22114/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022115 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022117
22118
22119 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022120 macBSSID: pointer to BSSID. If NULL, get all the session.
22121 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22122 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22123 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 @see
22125 @return Number of sessions in use
22126*/
22127wpt_uint8
22128WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022129(
Hoonki Lee26599972013-04-24 01:21:58 -070022130 WDI_ControlBlockType* pWDICtx,
22131 wpt_macAddr macBSSID,
22132 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022133)
22134{
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022137
22138 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 Count all sessions in use
22140 ------------------------------------------------------------------------*/
22141 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22142 {
Hoonki Lee26599972013-04-24 01:21:58 -070022143 if ( macBSSID && skipBSSID &&
22144 (eWLAN_PAL_TRUE ==
22145 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22146 WDI_MAC_ADDR_LEN)))
22147 {
22148 continue;
22149 }
22150 else if ( pWDICtx->aBSSSessions[i].bInUse )
22151 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022153 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 }
22155
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022157}/*WDI_GetActiveSessionsCount*/
22158
22159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022162
22163
22164 @param pWDICtx: pointer to the WLAN DAL context
22165 pSession: pointer to the session (if found)
22166
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022168 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022169*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022170void
Jeff Johnson295189b2012-06-20 16:38:30 -070022171WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022172(
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 WDI_ControlBlockType* pWDICtx,
22174 WDI_BSSSessionType* ppSession
22175)
22176{
22177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 -------------------------------------------------------------------------*/
22180 if ( NULL == ppSession )
22181 {
22182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022183 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 }
22186
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 /*------------------------------------------------------------------------
22188 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 ------------------------------------------------------------------------*/
22190 wpal_list_destroy(&ppSession->wptPendingQueue);
22191 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22193 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22195 wpal_list_init(&ppSession->wptPendingQueue);
22196
22197}/*WDI_DeleteSession*/
22198
22199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 @param
22203
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 WDI_AddStaParams: - pointer to the WDI Add STA params
22205 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022206
22207 @see
22208 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022209*/
22210void
22211WDI_AddBcastSTAtoSTATable
22212(
22213 WDI_ControlBlockType* pWDICtx,
22214 WDI_AddStaParams * staParams,
22215 wpt_uint16 usBcastStaIdx
22216)
22217{
22218 WDI_AddStaParams wdiAddSTAParam = {0};
22219 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22221
22222 /*---------------------------------------------------------------------
22223 Sanity check
22224 ---------------------------------------------------------------------*/
22225 if ( NULL == staParams )
22226 {
22227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022229
Jeff Johnsone7245742012-09-05 17:12:55 -070022230 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 }
22232
22233 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22234 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22235 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22236 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22237 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22238 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22239 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22240 WDI_MAC_ADDR_LEN );
22241 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22242 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22243 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22244 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22245 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22246 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22247 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022248
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22250}
22251
22252/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 @brief NV blob will be divided into fragments of size 4kb and
22254 Sent to HAL
22255
22256 @param pWDICtx: pointer to the WLAN DAL context
22257 pEventData: pointer to the event information structure
22258
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 @see
22260 @return Result of the function call
22261 */
22262
22263WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022264(
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 WDI_ControlBlockType* pWDICtx,
22266 WDI_EventInfoType* pEventData
22267)
22268{
22269
22270 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22271 wpt_uint8* pSendBuffer = NULL;
22272 wpt_uint16 usDataOffset = 0;
22273 wpt_uint16 usSendSize = 0;
22274 wpt_uint16 usCurrentFragmentSize =0;
22275 wpt_uint8* pSrcBuffer = NULL;
22276 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22277 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22278
22279 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22280 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22281 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22282
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22285
22286 /* Update the current Fragment Number */
22287 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22288
22289 /*Update the HAL REQ structure */
22290 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22291 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22292 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22293
22294 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 image will be sent to HAL*/
22297
Jeff Johnsone7245742012-09-05 17:12:55 -070022298 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022301 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22304 usCurrentFragmentSize = FRAGMENT_SIZE;
22305
22306 /*Update the HAL REQ structure */
22307 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22308 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22309
22310 }
22311 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022312 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022313 usCurrentFragmentSize = FRAGMENT_SIZE;
22314
22315 /*Update the HAL REQ structure */
22316 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22317 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22318 }
22319
22320 /*-----------------------------------------------------------------------
22321 Get message buffer
22322 -----------------------------------------------------------------------*/
22323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22324 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22325 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022326 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22328 {
22329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22330 "Unable to get send buffer in NV Download req %x %x ",
22331 pEventData, pwdiNvDownloadReqParams);
22332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 }
22335
22336 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022338 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22339
22340 /* Appending the NV image fragment */
22341 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22342 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22343 usCurrentFragmentSize);
22344
22345 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022346 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022347
Jeff Johnsone7245742012-09-05 17:12:55 -070022348 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22349 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 WDI_NV_DOWNLOAD_RESP);
22351
22352}
Jeff Johnsone7245742012-09-05 17:12:55 -070022353/*============================================================================
22354 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022355 ============================================================================*/
22356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022357 @brief Helper routine used to find a session based on the BSSID
22358 @param pContext: pointer to the WLAN DAL context
22359 @param pDPContext: pointer to the Datapath context
22360
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022363*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022364WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022365WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22366{
22367 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22368
22369 pCB->pDPContext = pDPContext;
22370 return;
22371}
22372
22373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022374 @brief Helper routine used to find a session based on the BSSID
22375
22376
22377 @param pContext: pointer to the WLAN DAL context
22378
Jeff Johnson295189b2012-06-20 16:38:30 -070022379 @see
22380 @return pointer to Datapath context
22381*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022382WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022383WDI_DS_GetDatapathContext (void *pContext)
22384{
22385 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22386 return pCB->pDPContext;
22387}
22388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 @brief Helper routine used to find a session based on the BSSID
22390
22391
22392 @param pContext: pointer to the WLAN DAL context
22393 @param pDTDriverContext: pointer to the Transport Driver context
22394
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 @see
22396 @return void
22397*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022398WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022399WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22400{
22401 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22402
22403 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022404 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022405}
22406
22407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 @brief Helper routine used to find a session based on the BSSID
22409
22410
22411 @param pWDICtx: pointer to the WLAN DAL context
22412
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022415*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022416WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022417WDT_GetTransportDriverContext (void *pContext)
22418{
22419 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022421}
22422
Jeff Johnsone7245742012-09-05 17:12:55 -070022423/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 Helper inline converters
22425 ============================================================================*/
22426/*Convert WDI driver type into HAL driver type*/
22427WPT_STATIC WPT_INLINE WDI_Status
22428WDI_HAL_2_WDI_STATUS
22429(
22430 eHalStatus halStatus
22431)
22432{
Jeff Johnsone7245742012-09-05 17:12:55 -070022433 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 the chances of getting inlined*/
22435 switch( halStatus )
22436 {
22437 case eHAL_STATUS_SUCCESS:
22438 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22439 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22440 return WDI_STATUS_SUCCESS;
22441 case eHAL_STATUS_FAILURE:
22442 return WDI_STATUS_E_FAILURE;
22443 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 return WDI_STATUS_MEM_FAILURE;
22445 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 default:
22448 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22449 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022450
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022452}/*WDI_HAL_2_WDI_STATUS*/
22453
22454/*Convert WDI request type into HAL request type*/
22455WPT_STATIC WPT_INLINE tHalHostMsgType
22456WDI_2_HAL_REQ_TYPE
22457(
22458 WDI_RequestEnumType wdiReqType
22459)
22460{
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 the chances of getting inlined*/
22463 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022468 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022476 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022478 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022479 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022480 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022482 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022488 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022490 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022491 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022493 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022495 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022497 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 return WLAN_HAL_RMV_STAKEY_REQ;
22500 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 case WDI_DEL_BA_REQ:
22509 return WLAN_HAL_DEL_BA_REQ;
22510#ifdef FEATURE_WLAN_CCX
22511 case WDI_TSM_STATS_REQ:
22512 return WLAN_HAL_TSM_STATS_REQ;
22513#endif
22514 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022521 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 case WDI_ADD_BA_SESSION_REQ:
22525 return WLAN_HAL_ADD_BA_SESSION_REQ;
22526 case WDI_TRIGGER_BA_REQ:
22527 return WLAN_HAL_TRIGGER_BA_REQ;
22528 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022531 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22533 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22534 case WDI_SET_MAX_TX_POWER_REQ:
22535 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022536 case WDI_SET_TX_POWER_REQ:
22537 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22539 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022540#ifdef FEATURE_WLAN_TDLS
22541 case WDI_TDLS_LINK_ESTABLISH_REQ:
22542 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22543#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022547 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022551 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022558 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022561 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022562 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 case WDI_REM_BEACON_FILTER_REQ:
22565 return WLAN_HAL_REM_BCN_FILTER_REQ;
22566 case WDI_SET_RSSI_THRESHOLDS_REQ:
22567 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22568 case WDI_HOST_OFFLOAD_REQ:
22569 return WLAN_HAL_HOST_OFFLOAD_REQ;
22570 case WDI_WOWL_ADD_BC_PTRN_REQ:
22571 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22572 case WDI_WOWL_DEL_BC_PTRN_REQ:
22573 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22574 case WDI_WOWL_ENTER_REQ:
22575 return WLAN_HAL_ENTER_WOWL_REQ;
22576 case WDI_WOWL_EXIT_REQ:
22577 return WLAN_HAL_EXIT_WOWL_REQ;
22578 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22579 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22580 case WDI_NV_DOWNLOAD_REQ:
22581 return WLAN_HAL_DOWNLOAD_NV_REQ;
22582 case WDI_FLUSH_AC_REQ:
22583 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22584 case WDI_BTAMP_EVENT_REQ:
22585 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22586#ifdef WLAN_FEATURE_VOWIFI_11R
22587 case WDI_AGGR_ADD_TS_REQ:
22588 return WLAN_HAL_AGGR_ADD_TS_REQ;
22589#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 case WDI_FTM_CMD_REQ:
22591 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 case WDI_ADD_STA_SELF_REQ:
22593 return WLAN_HAL_ADD_STA_SELF_REQ;
22594 case WDI_DEL_STA_SELF_REQ:
22595 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022596#ifdef FEATURE_OEM_DATA_SUPPORT
22597 case WDI_START_OEM_DATA_REQ:
22598 return WLAN_HAL_START_OEM_DATA_REQ;
22599#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022600 case WDI_HOST_RESUME_REQ:
22601 return WLAN_HAL_HOST_RESUME_REQ;
22602 case WDI_HOST_SUSPEND_IND:
22603 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022604 case WDI_TRAFFIC_STATS_IND:
22605 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022606#ifdef WLAN_FEATURE_11W
22607 case WDI_EXCLUDE_UNENCRYPTED_IND:
22608 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22609#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022610 case WDI_KEEP_ALIVE_REQ:
22611 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022612#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022613 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22614 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022615#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022616#ifdef FEATURE_WLAN_SCAN_PNO
22617 case WDI_SET_PREF_NETWORK_REQ:
22618 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22619 case WDI_SET_RSSI_FILTER_REQ:
22620 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22621 case WDI_UPDATE_SCAN_PARAMS_REQ:
22622 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22623#endif // FEATURE_WLAN_SCAN_PNO
22624 case WDI_SET_TX_PER_TRACKING_REQ:
22625 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22626#ifdef WLAN_FEATURE_PACKET_FILTERING
22627 case WDI_8023_MULTICAST_LIST_REQ:
22628 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22629 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22632 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22633 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22634 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22635#endif // WLAN_FEATURE_PACKET_FILTERING
22636 case WDI_HAL_DUMP_CMD_REQ:
22637 return WLAN_HAL_DUMP_COMMAND_REQ;
22638#ifdef WLAN_FEATURE_GTK_OFFLOAD
22639 case WDI_GTK_OFFLOAD_REQ:
22640 return WLAN_HAL_GTK_OFFLOAD_REQ;
22641 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22642 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22643#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22644
22645 case WDI_INIT_SCAN_CON_REQ:
22646 return WLAN_HAL_INIT_SCAN_CON_REQ;
22647 case WDI_SET_POWER_PARAMS_REQ:
22648 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22649 case WDI_SET_TM_LEVEL_REQ:
22650 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22651 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22652 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022653#ifdef WLAN_FEATURE_11AC
22654 case WDI_UPDATE_VHT_OP_MODE_REQ:
22655 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22656#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022657 case WDI_GET_ROAM_RSSI_REQ:
22658 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022659 case WDI_DHCP_START_IND:
22660 return WLAN_HAL_DHCP_START_IND;
22661 case WDI_DHCP_STOP_IND:
22662 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022663#ifdef FEATURE_WLAN_LPHB
22664 case WDI_LPHB_CFG_REQ:
22665 return WLAN_HAL_LPHB_CFG_REQ;
22666#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022667 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22668 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22669 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22670 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22671
Rajeev3db91f12013-10-05 11:03:42 +053022672#ifdef FEATURE_WLAN_BATCH_SCAN
22673 case WDI_SET_BATCH_SCAN_REQ:
22674 return WLAN_HAL_BATCHSCAN_SET_REQ;
22675 case WDI_STOP_BATCH_SCAN_IND:
22676 return WLAN_HAL_BATCHSCAN_STOP_IND;
22677 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22678 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22679#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022680 case WDI_RATE_UPDATE_IND:
22681 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022682
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022685 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022686
Jeff Johnson295189b2012-06-20 16:38:30 -070022687}/*WDI_2_HAL_REQ_TYPE*/
22688
22689/*Convert WDI response type into HAL response type*/
22690WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22691HAL_2_WDI_RSP_TYPE
22692(
22693 tHalHostMsgType halMsg
22694)
22695{
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 the chances of getting inlined*/
22698 switch( halMsg )
22699 {
22700 case WLAN_HAL_START_RSP:
22701 return WDI_START_RESP;
22702 case WLAN_HAL_STOP_RSP:
22703 return WDI_STOP_RESP;
22704 case WLAN_HAL_INIT_SCAN_RSP:
22705 return WDI_INIT_SCAN_RESP;
22706 case WLAN_HAL_START_SCAN_RSP:
22707 return WDI_START_SCAN_RESP;
22708 case WLAN_HAL_END_SCAN_RSP:
22709 return WDI_END_SCAN_RESP;
22710 case WLAN_HAL_FINISH_SCAN_RSP:
22711 return WDI_FINISH_SCAN_RESP;
22712 case WLAN_HAL_CONFIG_STA_RSP:
22713 return WDI_CONFIG_STA_RESP;
22714 case WLAN_HAL_DELETE_STA_RSP:
22715 return WDI_DEL_STA_RESP;
22716 case WLAN_HAL_CONFIG_BSS_RSP:
22717 return WDI_CONFIG_BSS_RESP;
22718 case WLAN_HAL_DELETE_BSS_RSP:
22719 return WDI_DEL_BSS_RESP;
22720 case WLAN_HAL_JOIN_RSP:
22721 return WDI_JOIN_RESP;
22722 case WLAN_HAL_POST_ASSOC_RSP:
22723 return WDI_POST_ASSOC_RESP;
22724 case WLAN_HAL_SET_BSSKEY_RSP:
22725 return WDI_SET_BSS_KEY_RESP;
22726 case WLAN_HAL_SET_STAKEY_RSP:
22727 return WDI_SET_STA_KEY_RESP;
22728 case WLAN_HAL_RMV_BSSKEY_RSP:
22729 return WDI_RMV_BSS_KEY_RESP;
22730 case WLAN_HAL_RMV_STAKEY_RSP:
22731 return WDI_RMV_STA_KEY_RESP;
22732 case WLAN_HAL_SET_BCASTKEY_RSP:
22733 return WDI_SET_STA_BCAST_KEY_RESP;
22734 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22735 // return WDI_RMV_STA_BCAST_KEY_RESP;
22736 case WLAN_HAL_ADD_TS_RSP:
22737 return WDI_ADD_TS_RESP;
22738 case WLAN_HAL_DEL_TS_RSP:
22739 return WDI_DEL_TS_RESP;
22740 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22741 return WDI_UPD_EDCA_PRMS_RESP;
22742 case WLAN_HAL_ADD_BA_RSP:
22743 return WDI_ADD_BA_RESP;
22744 case WLAN_HAL_DEL_BA_RSP:
22745 return WDI_DEL_BA_RESP;
22746#ifdef FEATURE_WLAN_CCX
22747 case WLAN_HAL_TSM_STATS_RSP:
22748 return WDI_TSM_STATS_RESP;
22749#endif
22750 case WLAN_HAL_CH_SWITCH_RSP:
22751 return WDI_CH_SWITCH_RESP;
22752 case WLAN_HAL_SET_LINK_ST_RSP:
22753 return WDI_SET_LINK_ST_RESP;
22754 case WLAN_HAL_GET_STATS_RSP:
22755 return WDI_GET_STATS_RESP;
22756 case WLAN_HAL_UPDATE_CFG_RSP:
22757 return WDI_UPDATE_CFG_RESP;
22758 case WLAN_HAL_ADD_BA_SESSION_RSP:
22759 return WDI_ADD_BA_SESSION_RESP;
22760 case WLAN_HAL_TRIGGER_BA_RSP:
22761 return WDI_TRIGGER_BA_RESP;
22762 case WLAN_HAL_UPDATE_BEACON_RSP:
22763 return WDI_UPD_BCON_PRMS_RESP;
22764 case WLAN_HAL_SEND_BEACON_RSP:
22765 return WDI_SND_BCON_RESP;
22766 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22767 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22768 /*Indications*/
22769 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22770 return WDI_HAL_RSSI_NOTIFICATION_IND;
22771 case WLAN_HAL_MISSED_BEACON_IND:
22772 return WDI_HAL_MISSED_BEACON_IND;
22773 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22774 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22775 case WLAN_HAL_MIC_FAILURE_IND:
22776 return WDI_HAL_MIC_FAILURE_IND;
22777 case WLAN_HAL_FATAL_ERROR_IND:
22778 return WDI_HAL_FATAL_ERROR_IND;
22779 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22780 return WDI_HAL_DEL_STA_IND;
22781 case WLAN_HAL_COEX_IND:
22782 return WDI_HAL_COEX_IND;
22783 case WLAN_HAL_OTA_TX_COMPL_IND:
22784 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 case WLAN_HAL_P2P_NOA_ATTR_IND:
22786 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022787 case WLAN_HAL_P2P_NOA_START_IND:
22788 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 case WLAN_HAL_TX_PER_HIT_IND:
22790 return WDI_HAL_TX_PER_HIT_IND;
22791 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22792 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022793 case WLAN_HAL_SET_TX_POWER_RSP:
22794 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 case WLAN_HAL_SET_P2P_GONOA_RSP:
22796 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022797#ifdef FEATURE_WLAN_TDLS
22798 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22799 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22800 case WLAN_HAL_TDLS_IND:
22801 return WDI_HAL_TDLS_IND;
22802#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022811 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022820 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022821 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22822 return WDI_SET_BEACON_FILTER_RESP;
22823 case WLAN_HAL_REM_BCN_FILTER_RSP:
22824 return WDI_REM_BEACON_FILTER_RESP;
22825 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22826 return WDI_SET_RSSI_THRESHOLDS_RESP;
22827 case WLAN_HAL_HOST_OFFLOAD_RSP:
22828 return WDI_HOST_OFFLOAD_RESP;
22829 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22830 return WDI_WOWL_ADD_BC_PTRN_RESP;
22831 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22832 return WDI_WOWL_DEL_BC_PTRN_RESP;
22833 case WLAN_HAL_ENTER_WOWL_RSP:
22834 return WDI_WOWL_ENTER_RESP;
22835 case WLAN_HAL_EXIT_WOWL_RSP:
22836 return WDI_WOWL_EXIT_RESP;
22837 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22838 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22839 case WLAN_HAL_DOWNLOAD_NV_RSP:
22840 return WDI_NV_DOWNLOAD_RESP;
22841 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22842 return WDI_FLUSH_AC_RESP;
22843 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22844 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 case WLAN_HAL_PROCESS_PTT_RSP:
22846 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 case WLAN_HAL_ADD_STA_SELF_RSP:
22848 return WDI_ADD_STA_SELF_RESP;
22849case WLAN_HAL_DEL_STA_SELF_RSP:
22850 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022851#ifdef FEATURE_OEM_DATA_SUPPORT
22852 case WLAN_HAL_START_OEM_DATA_RSP:
22853 return WDI_START_OEM_DATA_RESP;
22854#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 case WLAN_HAL_HOST_RESUME_RSP:
22856 return WDI_HOST_RESUME_RESP;
22857 case WLAN_HAL_KEEP_ALIVE_RSP:
22858 return WDI_KEEP_ALIVE_RESP;
22859#ifdef FEATURE_WLAN_SCAN_PNO
22860 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22861 return WDI_SET_PREF_NETWORK_RESP;
22862 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022863 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22865 return WDI_UPDATE_SCAN_PARAMS_RESP;
22866 case WLAN_HAL_PREF_NETW_FOUND_IND:
22867 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22868#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022869#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022870 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22871 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022872#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22874 return WDI_SET_TX_PER_TRACKING_RESP;
22875#ifdef WLAN_FEATURE_PACKET_FILTERING
22876 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22877 return WDI_8023_MULTICAST_LIST_RESP;
22878 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22879 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22880 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22881 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22882 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22883 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22884#endif // WLAN_FEATURE_PACKET_FILTERING
22885
22886 case WLAN_HAL_DUMP_COMMAND_RSP:
22887 return WDI_HAL_DUMP_CMD_RESP;
22888 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22889 return WDI_SET_POWER_PARAMS_RESP;
22890#ifdef WLAN_FEATURE_VOWIFI_11R
22891 case WLAN_HAL_AGGR_ADD_TS_RSP:
22892 return WDI_AGGR_ADD_TS_RESP;
22893#endif
22894
22895#ifdef WLAN_FEATURE_GTK_OFFLOAD
22896 case WLAN_HAL_GTK_OFFLOAD_RSP:
22897 return WDI_GTK_OFFLOAD_RESP;
22898 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22899 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22900#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22901#ifdef WLAN_WAKEUP_EVENTS
22902 case WLAN_HAL_WAKE_REASON_IND:
22903 return WDI_HAL_WAKE_REASON_IND;
22904#endif // WLAN_WAKEUP_EVENTS
22905
22906 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22907 return WDI_SET_TM_LEVEL_RESP;
22908 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22909 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022910#ifdef WLAN_FEATURE_11AC
22911 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22912 return WDI_UPDATE_VHT_OP_MODE_RESP;
22913#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022914#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22915 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22916 return WDI_GET_ROAM_RSSI_RESP;
22917#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022918
Leo Chang00bc9132013-08-01 19:21:11 -070022919#ifdef FEATURE_WLAN_LPHB
22920 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070022921 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022922 case WLAN_HAL_LPHB_CFG_RSP:
22923 return WDI_LPHB_CFG_RESP;
22924#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022925
22926 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22927 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022928 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22929 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022930
Rajeev3db91f12013-10-05 11:03:42 +053022931#ifdef FEATURE_WLAN_BATCH_SCAN
22932 case WLAN_HAL_BATCHSCAN_SET_RSP:
22933 return WDI_SET_BATCH_SCAN_RESP;
22934 case WLAN_HAL_BATCHSCAN_RESULT_IND:
22935 return WDI_BATCHSCAN_RESULT_IND;
22936#endif // FEATURE_WLAN_BATCH_SCAN
22937
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022939 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 }
22941
22942}/*HAL_2_WDI_RSP_TYPE*/
22943
22944
22945/*Convert WDI driver type into HAL driver type*/
22946WPT_STATIC WPT_INLINE tDriverType
22947WDI_2_HAL_DRV_TYPE
22948(
22949 WDI_DriverType wdiDriverType
22950)
22951{
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 the chances of getting inlined*/
22954 switch( wdiDriverType )
22955 {
22956 case WDI_DRIVER_TYPE_PRODUCTION:
22957 return eDRIVER_TYPE_PRODUCTION;
22958 case WDI_DRIVER_TYPE_MFG:
22959 return eDRIVER_TYPE_MFG;
22960 case WDI_DRIVER_TYPE_DVT:
22961 return eDRIVER_TYPE_DVT;
22962 }
22963
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022965}/*WDI_2_HAL_DRV_TYPE*/
22966
22967
22968/*Convert WDI stop reason into HAL stop reason*/
22969WPT_STATIC WPT_INLINE tHalStopType
22970WDI_2_HAL_STOP_REASON
22971(
22972 WDI_StopType wdiDriverType
22973)
22974{
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 the chances of getting inlined*/
22977 switch( wdiDriverType )
22978 {
22979 case WDI_STOP_TYPE_SYS_RESET:
22980 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070022981 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
22982 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 case WDI_STOP_TYPE_RF_KILL:
22984 return HAL_STOP_TYPE_RF_KILL;
22985 }
22986
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022988}/*WDI_2_HAL_STOP_REASON*/
22989
22990
22991/*Convert WDI scan mode type into HAL scan mode type*/
22992WPT_STATIC WPT_INLINE eHalSysMode
22993WDI_2_HAL_SCAN_MODE
22994(
22995 WDI_ScanMode wdiScanMode
22996)
22997{
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 the chances of getting inlined*/
23000 switch( wdiScanMode )
23001 {
23002 case WDI_SCAN_MODE_NORMAL:
23003 return eHAL_SYS_MODE_NORMAL;
23004 case WDI_SCAN_MODE_LEARN:
23005 return eHAL_SYS_MODE_LEARN;
23006 case WDI_SCAN_MODE_SCAN:
23007 return eHAL_SYS_MODE_SCAN;
23008 case WDI_SCAN_MODE_PROMISC:
23009 return eHAL_SYS_MODE_PROMISC;
23010 case WDI_SCAN_MODE_SUSPEND_LINK:
23011 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023012 case WDI_SCAN_MODE_ROAM_SCAN:
23013 return eHAL_SYS_MODE_ROAM_SCAN;
23014 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23015 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 }
23017
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023019}/*WDI_2_HAL_SCAN_MODE*/
23020
23021/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023022WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023023WDI_2_HAL_SEC_CH_OFFSET
23024(
23025 WDI_HTSecondaryChannelOffset wdiSecChOffset
23026)
23027{
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 the chances of getting inlined*/
23030 switch( wdiSecChOffset )
23031 {
23032 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023033 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023034 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023037 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23038#ifdef WLAN_FEATURE_11AC
23039 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23040 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23041 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23042 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23043 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23044 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23045 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23046 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23047 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23048 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23049 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23050 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23051 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23052 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23053#endif
23054 default:
23055 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023056 }
23057
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023059}/*WDI_2_HAL_SEC_CH_OFFSET*/
23060
23061/*Convert WDI BSS type into HAL BSS type*/
23062WPT_STATIC WPT_INLINE tSirBssType
23063WDI_2_HAL_BSS_TYPE
23064(
23065 WDI_BssType wdiBSSType
23066)
23067{
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 the chances of getting inlined*/
23070 switch( wdiBSSType )
23071 {
23072 case WDI_INFRASTRUCTURE_MODE:
23073 return eSIR_INFRASTRUCTURE_MODE;
23074 case WDI_INFRA_AP_MODE:
23075 return eSIR_INFRA_AP_MODE;
23076 case WDI_IBSS_MODE:
23077 return eSIR_IBSS_MODE;
23078 case WDI_BTAMP_STA_MODE:
23079 return eSIR_BTAMP_STA_MODE;
23080 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 case WDI_BSS_AUTO_MODE:
23083 return eSIR_AUTO_MODE;
23084 }
23085
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087}/*WDI_2_HAL_BSS_TYPE*/
23088
23089/*Convert WDI NW type into HAL NW type*/
23090WPT_STATIC WPT_INLINE tSirNwType
23091WDI_2_HAL_NW_TYPE
23092(
23093 WDI_NwType wdiNWType
23094)
23095{
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 the chances of getting inlined*/
23098 switch( wdiNWType )
23099 {
23100 case WDI_11A_NW_TYPE:
23101 return eSIR_11A_NW_TYPE;
23102 case WDI_11B_NW_TYPE:
23103 return eSIR_11B_NW_TYPE;
23104 case WDI_11G_NW_TYPE:
23105 return eSIR_11G_NW_TYPE;
23106 case WDI_11N_NW_TYPE:
23107 return eSIR_11N_NW_TYPE;
23108 }
23109
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023111}/*WDI_2_HAL_NW_TYPE*/
23112
23113/*Convert WDI chanel bonding type into HAL cb type*/
23114WPT_STATIC WPT_INLINE ePhyChanBondState
23115WDI_2_HAL_CB_STATE
23116(
23117 WDI_PhyChanBondState wdiCbState
23118)
23119{
Jeff Johnsone7245742012-09-05 17:12:55 -070023120 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023121 the chances of getting inlined*/
23122 switch ( wdiCbState )
23123 {
23124 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23125 return PHY_SINGLE_CHANNEL_CENTERED;
23126 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23127 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23128 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23129 return PHY_DOUBLE_CHANNEL_CENTERED;
23130 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23131 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023132#ifdef WLAN_FEATURE_11AC
23133 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23134 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23135 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23136 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23137 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23138 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23139 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23140 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23141 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23142 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23143 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23144 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23145 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23146 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23147#endif
23148 case WDI_MAX_CB_STATE:
23149 default:
23150 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023151 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023152
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 return PHY_CHANNEL_BONDING_STATE_MAX;
23154}/*WDI_2_HAL_CB_STATE*/
23155
23156/*Convert WDI chanel bonding type into HAL cb type*/
23157WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23158WDI_2_HAL_HT_OPER_MODE
23159(
23160 WDI_HTOperatingMode wdiHTOperMode
23161)
23162{
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 the chances of getting inlined*/
23165 switch ( wdiHTOperMode )
23166 {
23167 case WDI_HT_OP_MODE_PURE:
23168 return eSIR_HT_OP_MODE_PURE;
23169 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23170 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23171 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23172 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23173 case WDI_HT_OP_MODE_MIXED:
23174 return eSIR_HT_OP_MODE_MIXED;
23175 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023176
Jeff Johnson295189b2012-06-20 16:38:30 -070023177 return eSIR_HT_OP_MODE_MAX;
23178}/*WDI_2_HAL_HT_OPER_MODE*/
23179
23180/*Convert WDI mimo PS type into HAL mimo PS type*/
23181WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23182WDI_2_HAL_MIMO_PS
23183(
23184 WDI_HTMIMOPowerSaveState wdiHTOperMode
23185)
23186{
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 the chances of getting inlined*/
23189 switch ( wdiHTOperMode )
23190 {
23191 case WDI_HT_MIMO_PS_STATIC:
23192 return eSIR_HT_MIMO_PS_STATIC;
23193 case WDI_HT_MIMO_PS_DYNAMIC:
23194 return eSIR_HT_MIMO_PS_DYNAMIC;
23195 case WDI_HT_MIMO_PS_NA:
23196 return eSIR_HT_MIMO_PS_NA;
23197 case WDI_HT_MIMO_PS_NO_LIMIT:
23198 return eSIR_HT_MIMO_PS_NO_LIMIT;
23199 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023200
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 return eSIR_HT_MIMO_PS_MAX;
23202}/*WDI_2_HAL_MIMO_PS*/
23203
23204/*Convert WDI ENC type into HAL ENC type*/
23205WPT_STATIC WPT_INLINE tAniEdType
23206WDI_2_HAL_ENC_TYPE
23207(
23208 WDI_EncryptType wdiEncType
23209)
23210{
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 the chances of getting inlined*/
23213 switch ( wdiEncType )
23214 {
23215 case WDI_ENCR_NONE:
23216 return eSIR_ED_NONE;
23217
23218 case WDI_ENCR_WEP40:
23219 return eSIR_ED_WEP40;
23220
23221 case WDI_ENCR_WEP104:
23222 return eSIR_ED_WEP104;
23223
23224 case WDI_ENCR_TKIP:
23225 return eSIR_ED_TKIP;
23226
23227 case WDI_ENCR_CCMP:
23228 return eSIR_ED_CCMP;
23229
23230 case WDI_ENCR_AES_128_CMAC:
23231 return eSIR_ED_AES_128_CMAC;
23232#if defined(FEATURE_WLAN_WAPI)
23233 case WDI_ENCR_WPI:
23234 return eSIR_ED_WPI;
23235#endif
23236 default:
23237 return eSIR_ED_NOT_IMPLEMENTED;
23238 }
23239
23240}/*WDI_2_HAL_ENC_TYPE*/
23241
23242/*Convert WDI WEP type into HAL WEP type*/
23243WPT_STATIC WPT_INLINE tAniWepType
23244WDI_2_HAL_WEP_TYPE
23245(
23246 WDI_WepType wdiWEPType
23247)
23248{
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023250 the chances of getting inlined*/
23251 switch ( wdiWEPType )
23252 {
23253 case WDI_WEP_STATIC:
23254 return eSIR_WEP_STATIC;
23255
23256 case WDI_WEP_DYNAMIC:
23257 return eSIR_WEP_DYNAMIC;
23258 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023259
Jeff Johnson295189b2012-06-20 16:38:30 -070023260 return eSIR_WEP_MAX;
23261}/*WDI_2_HAL_WEP_TYPE*/
23262
23263WPT_STATIC WPT_INLINE tSirLinkState
23264WDI_2_HAL_LINK_STATE
23265(
23266 WDI_LinkStateType wdiLinkState
23267)
23268{
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 the chances of getting inlined*/
23271 switch ( wdiLinkState )
23272 {
23273 case WDI_LINK_IDLE_STATE:
23274 return eSIR_LINK_IDLE_STATE;
23275
23276 case WDI_LINK_PREASSOC_STATE:
23277 return eSIR_LINK_PREASSOC_STATE;
23278
23279 case WDI_LINK_POSTASSOC_STATE:
23280 return eSIR_LINK_POSTASSOC_STATE;
23281
23282 case WDI_LINK_AP_STATE:
23283 return eSIR_LINK_AP_STATE;
23284
23285 case WDI_LINK_IBSS_STATE:
23286 return eSIR_LINK_IBSS_STATE;
23287
23288 case WDI_LINK_BTAMP_PREASSOC_STATE:
23289 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23290
23291 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23292 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23293
23294 case WDI_LINK_BTAMP_AP_STATE:
23295 return eSIR_LINK_BTAMP_AP_STATE;
23296
23297 case WDI_LINK_BTAMP_STA_STATE:
23298 return eSIR_LINK_BTAMP_STA_STATE;
23299
23300 case WDI_LINK_LEARN_STATE:
23301 return eSIR_LINK_LEARN_STATE;
23302
23303 case WDI_LINK_SCAN_STATE:
23304 return eSIR_LINK_SCAN_STATE;
23305
23306 case WDI_LINK_FINISH_SCAN_STATE:
23307 return eSIR_LINK_FINISH_SCAN_STATE;
23308
23309 case WDI_LINK_INIT_CAL_STATE:
23310 return eSIR_LINK_INIT_CAL_STATE;
23311
23312 case WDI_LINK_FINISH_CAL_STATE:
23313 return eSIR_LINK_FINISH_CAL_STATE;
23314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 case WDI_LINK_LISTEN_STATE:
23316 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023317
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023318 case WDI_LINK_SEND_ACTION_STATE:
23319 return eSIR_LINK_SEND_ACTION_STATE;
23320
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 default:
23322 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023324}
23325
Jeff Johnsone7245742012-09-05 17:12:55 -070023326/*Translate a STA Context from WDI into HAL*/
23327WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023328void
23329WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023330(
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 tConfigStaParams* phalConfigSta,
23332 WDI_ConfigStaReqInfoType* pwdiConfigSta
23333)
23334{
23335 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023336#ifdef WLAN_FEATURE_11AC
23337 /* Get the Version 1 Handler */
23338 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23339 if (WDI_getFwWlanFeatCaps(DOT11AC))
23340 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023341 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 }
23343#endif
23344 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 the chances of getting inlined*/
23346
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 wpalMemoryCopy(phalConfigSta->bssId,
23348 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23349
23350 wpalMemoryCopy(phalConfigSta->staMac,
23351 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023352
23353 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23354 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23355 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23356 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23357 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23358 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23359 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23360 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23361 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23362 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23363 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23364 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23365 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23366 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23367 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23368 phalConfigSta->action = pwdiConfigSta->wdiAction;
23369 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23370 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23371 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23372 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23373 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23374 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23375 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023376
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23378
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 pwdiConfigSta->wdiSupportedRates.opRateMode;
23381 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23382 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23385 }
23386 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23387 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23390 }
23391 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23392 {
23393 phalConfigSta->supportedRates.aniLegacyRates[i] =
23394 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23395 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23398 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23399 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023400 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23402 }
23403 phalConfigSta->supportedRates.rxHighestDataRate =
23404 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23405
Jeff Johnsone7245742012-09-05 17:12:55 -070023406#ifdef WLAN_FEATURE_11AC
23407 if(phalConfigSta_V1 != NULL)
23408 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023409 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23410 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23411 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23412 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023413 }
23414#endif
23415
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417
Jeff Johnsone7245742012-09-05 17:12:55 -070023418#ifdef WLAN_FEATURE_11AC
23419 if(phalConfigSta_V1 != NULL)
23420 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023421 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23422 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023423 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023424 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23425 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23426
Jeff Johnsone7245742012-09-05 17:12:55 -070023427 }
23428#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023429}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023430
23431/*Translate a Rate set info from WDI into HAL*/
23432WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023433WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023434(
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 tSirMacRateSet* pHalRateSet,
23436 WDI_RateSet* pwdiRateSet
23437)
23438{
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23441
23442 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23443 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23444
23445 for ( i = 0; i < pHalRateSet->numRates; i++ )
23446 {
23447 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23448 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023449
Jeff Johnson295189b2012-06-20 16:38:30 -070023450}/*WDI_CopyWDIRateSetToHALRateSet*/
23451
23452
23453/*Translate an EDCA Parameter Record from WDI into HAL*/
23454WPT_STATIC WPT_INLINE void
23455WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023456(
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 tSirMacEdcaParamRecord* phalEdcaParam,
23458 WDI_EdcaParamRecord* pWDIEdcaParam
23459)
23460{
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 the chances of getting inlined*/
23463
23464 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23465 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23466 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23467 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23468
23469 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23470 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23471 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23472}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23473
23474
23475/*Copy a management frame header from WDI fmt into HAL fmt*/
23476WPT_STATIC WPT_INLINE void
23477WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23478(
23479 tSirMacMgmtHdr* pmacMgmtHdr,
23480 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23481)
23482{
23483 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23484 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23485 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23486 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23487 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23488 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23489 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23490 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23491 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23492 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23493 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23494
23495 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23496 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23497
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023502 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023503 pwdiMacMgmtHdr->bssId, 6);
23504
23505 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23506 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23507 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23508
23509}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23510
23511
23512/*Copy config bss parameters from WDI fmt into HAL fmt*/
23513WPT_STATIC WPT_INLINE void
23514WDI_CopyWDIConfigBSSToHALConfigBSS
23515(
23516 tConfigBssParams* phalConfigBSS,
23517 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23518)
23519{
23520
23521 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023522#ifdef WLAN_FEATURE_11AC
23523 /* Get the Version 1 Handler */
23524 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23525 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023526 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023527#endif
23528
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 wpalMemoryCopy( phalConfigBSS->bssId,
23530 pwdiConfigBSS->macBSSID,
23531 WDI_MAC_ADDR_LEN);
23532
23533#ifdef HAL_SELF_STA_PER_BSS
23534 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23535 pwdiConfigBSS->macSelfAddr,
23536 WDI_MAC_ADDR_LEN);
23537#endif
23538
23539 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23540
23541 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23542 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23543
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 pwdiConfigBSS->ucShortSlotTimeSupported;
23546 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23547 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23548 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23549 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23550 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023551 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023552 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23553 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23554 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23555 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23556 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23557 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23558 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23559 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23560 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23561 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23562 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23563
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 phalConfigBSS->htOperMode =
23565 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023566
23567 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23568 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23569 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23570 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23571
23572#ifdef WLAN_FEATURE_VOWIFI
23573 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23574#endif
23575
23576 /*! Used 32 as magic number because that is how the ssid is declared inside the
23577 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23580 pwdiConfigBSS->wdiSSID.ucLength : 32;
23581 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 pwdiConfigBSS->wdiSSID.sSSID,
23583 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023584
23585 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23586 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023587
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23589 &pwdiConfigBSS->wdiRateSet);
23590
23591 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23592
23593 if(phalConfigBSS->edcaParamsValid)
23594 {
23595 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23596 &pwdiConfigBSS->wdiBEEDCAParams);
23597 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23598 &pwdiConfigBSS->wdiBKEDCAParams);
23599 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23600 &pwdiConfigBSS->wdiVIEDCAParams);
23601 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23602 &pwdiConfigBSS->wdiVOEDCAParams);
23603 }
23604
Jeff Johnsone7245742012-09-05 17:12:55 -070023605 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023606
23607 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23608
23609#ifdef WLAN_FEATURE_VOWIFI_11R
23610
Jeff Johnsone7245742012-09-05 17:12:55 -070023611 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023613
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 if( phalConfigBSS->extSetStaKeyParamValid )
23615 {
23616 /*-----------------------------------------------------------------------
23617 Copy the STA Key parameters into the HAL message
23618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23621
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23624
23625 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23626
23627 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23628
23629 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23630
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23632 keyIndex++)
23633 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23636 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23637 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23638 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23639 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23640 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023643 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23647 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023648 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023649 WDI_MAX_KEY_LENGTH);
23650 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 }
23652 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23653 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023654 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 sizeof(phalConfigBSS->extSetStaKeyParam) );
23656 }
23657
23658#endif /*WLAN_FEATURE_VOWIFI_11R*/
23659
Jeff Johnsone7245742012-09-05 17:12:55 -070023660#ifdef WLAN_FEATURE_11AC
23661 if(phalConfigBSS_V1 != NULL)
23662 {
23663 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23664 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23665 }
23666#endif
23667
Jeff Johnson295189b2012-06-20 16:38:30 -070023668}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23669
23670
Jeff Johnsone7245742012-09-05 17:12:55 -070023671/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 pointed to by user data */
23673WPT_STATIC WPT_INLINE void
23674WDI_ExtractRequestCBFromEvent
23675(
23676 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 void** ppUserData
23679)
23680{
23681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23682 switch ( pEvent->wdiRequest )
23683 {
23684 case WDI_START_REQ:
23685 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23686 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23687 break;
23688 case WDI_STOP_REQ:
23689 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23690 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23691 break;
23692 case WDI_INIT_SCAN_REQ:
23693 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23694 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23695 break;
23696 case WDI_START_SCAN_REQ:
23697 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23698 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23699 break;
23700 case WDI_END_SCAN_REQ:
23701 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23702 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23703 break;
23704 case WDI_FINISH_SCAN_REQ:
23705 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23706 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23707 break;
23708 case WDI_JOIN_REQ:
23709 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23710 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23711 break;
23712 case WDI_CONFIG_BSS_REQ:
23713 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23714 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23715 break;
23716 case WDI_DEL_BSS_REQ:
23717 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23718 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23719 break;
23720 case WDI_POST_ASSOC_REQ:
23721 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23722 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23723 break;
23724 case WDI_DEL_STA_REQ:
23725 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23726 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23727 break;
23728 case WDI_DEL_STA_SELF_REQ:
23729 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23730 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23731 break;
23732
23733 case WDI_SET_BSS_KEY_REQ:
23734 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23735 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23736 break;
23737 case WDI_RMV_BSS_KEY_REQ:
23738 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23739 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23740 break;
23741 case WDI_SET_STA_KEY_REQ:
23742 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23743 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23744 break;
23745 case WDI_RMV_STA_KEY_REQ:
23746 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23747 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23748 break;
23749 case WDI_ADD_TS_REQ:
23750 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23751 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23752 break;
23753 case WDI_DEL_TS_REQ:
23754 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23755 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23756 break;
23757 case WDI_UPD_EDCA_PRMS_REQ:
23758 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23759 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23760 break;
23761 case WDI_ADD_BA_SESSION_REQ:
23762 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23763 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23764 break;
23765 case WDI_DEL_BA_REQ:
23766 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23767 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23768 break;
23769#ifdef FEATURE_WLAN_CCX
23770 case WDI_TSM_STATS_REQ:
23771 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23772 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23773 break;
23774#endif
23775 case WDI_CH_SWITCH_REQ:
23776 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23777 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23778 break;
23779 case WDI_CONFIG_STA_REQ:
23780 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23781 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23782 break;
23783 case WDI_SET_LINK_ST_REQ:
23784 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23785 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23786 break;
23787 case WDI_GET_STATS_REQ:
23788 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23789 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23790 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023791#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23792 case WDI_GET_ROAM_RSSI_REQ:
23793 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23794 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23795 break;
23796#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 case WDI_UPDATE_CFG_REQ:
23798 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23799 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23800 break;
23801 case WDI_ADD_BA_REQ:
23802 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23803 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23804 break;
23805 case WDI_TRIGGER_BA_REQ:
23806 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23807 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23808 break;
23809 case WDI_UPD_BCON_PRMS_REQ:
23810 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23811 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23812 break;
23813 case WDI_SND_BCON_REQ:
23814 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23815 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23816 break;
23817 case WDI_ENTER_BMPS_REQ:
23818 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23819 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23820 break;
23821 case WDI_EXIT_BMPS_REQ:
23822 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23823 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23824 break;
23825 case WDI_ENTER_UAPSD_REQ:
23826 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23827 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23828 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023829 case WDI_EXIT_UAPSD_REQ:
23830 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23831 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23832 break;
23833 case WDI_SET_UAPSD_PARAM_REQ:
23834 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23835 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23836 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023837 case WDI_UPDATE_UAPSD_PARAM_REQ:
23838 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23839 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23840 break;
23841 case WDI_CONFIGURE_RXP_FILTER_REQ:
23842 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23843 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23844 break;
23845 case WDI_SET_BEACON_FILTER_REQ:
23846 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23847 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23848 break;
23849 case WDI_REM_BEACON_FILTER_REQ:
23850 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23851 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 case WDI_SET_RSSI_THRESHOLDS_REQ:
23854 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23855 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23856 break;
23857 case WDI_HOST_OFFLOAD_REQ:
23858 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23859 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23860 break;
23861 case WDI_WOWL_ADD_BC_PTRN_REQ:
23862 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23863 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23864 break;
23865 case WDI_WOWL_DEL_BC_PTRN_REQ:
23866 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23867 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23868 break;
23869 case WDI_WOWL_ENTER_REQ:
23870 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23871 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23872 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023873 case WDI_WOWL_EXIT_REQ:
23874 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23875 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23876 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23878 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23879 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23880 break;
23881 case WDI_FLUSH_AC_REQ:
23882 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23883 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23884 break;
23885 case WDI_BTAMP_EVENT_REQ:
23886 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23887 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23888 break;
23889 case WDI_KEEP_ALIVE_REQ:
23890 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23891 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23892 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023893#if defined FEATURE_WLAN_SCAN_PNO
23894 case WDI_SET_PREF_NETWORK_REQ:
23895 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23896 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23897 break;
23898 case WDI_SET_RSSI_FILTER_REQ:
23899 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23900 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23901 break;
23902 case WDI_UPDATE_SCAN_PARAMS_REQ:
23903 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23904 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23905 break;
23906#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 case WDI_SET_TX_PER_TRACKING_REQ:
23908 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23909 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023910 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023911#if defined WLAN_FEATURE_PACKET_FILTERING
23912 case WDI_8023_MULTICAST_LIST_REQ:
23913 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23914 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23915 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023916 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23917 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23918 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23919 break;
23920 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23921 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23922 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23923 break;
23924 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23925 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23926 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23927 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023928#endif
23929 case WDI_SET_POWER_PARAMS_REQ:
23930 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23931 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23932 break;
23933#if defined WLAN_FEATURE_GTK_OFFLOAD
23934 case WDI_GTK_OFFLOAD_REQ:
23935 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23936 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23937 break;
23938 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23939 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23940 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23941 break;
23942#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023943
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 default:
23945 *ppfnReqCB = NULL;
23946 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 }
23949}/*WDI_ExtractRequestCBFromEvent*/
23950
23951
23952/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 frame xtl is enabled for a particular STA.
23955
23956 WDI_PostAssocReq must have been called.
23957
Jeff Johnsone7245742012-09-05 17:12:55 -070023958 @param uSTAIdx: STA index
23959
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 @see WDI_PostAssocReq
23961 @return Result of the function call
23962*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023963wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023964WDI_IsHwFrameTxTranslationCapable
23965(
23966 wpt_uint8 uSTAIdx
23967)
23968{
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 uma value*/
23971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023972 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 ------------------------------------------------------------------------*/
23974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23975 {
23976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23977 "WDI API call before module is initialized - Fail request");
23978
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 }
23981
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023982#ifdef WLAN_SOFTAP_VSTA_FEATURE
23983 if (IS_VSTA_IDX(uSTAIdx))
23984 {
23985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23986 "STA %d is a Virtual STA, "
23987 "HW frame translation disabled", uSTAIdx);
23988 return eWLAN_PAL_FALSE;
23989 }
23990#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023991
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 return gWDICb.bFrameTransEnabled;
23993}/*WDI_IsHwFrameTxTranslationCapable*/
23994
23995#ifdef FEATURE_WLAN_SCAN_PNO
23996/**
23997 @brief WDI_SetPreferredNetworkList
23998
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024001
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 wdiPNOScanCb: callback for passing back the response
24003 of the Set PNO operation received from the
24004 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024005
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 callback
24008
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 @return Result of the function call
24010*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024012WDI_SetPreferredNetworkReq
24013(
24014 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24015 WDI_PNOScanCb wdiPNOScanCb,
24016 void* pUserData
24017)
24018{
24019 WDI_EventInfoType wdiEventData = {{0}};
24020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24021
24022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 ------------------------------------------------------------------------*/
24025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24026 {
24027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24028 "WDI API call before module is initialized - Fail request");
24029
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 }
24032
24033 /*------------------------------------------------------------------------
24034 Fill in Event data and post to the Main FSM
24035 ------------------------------------------------------------------------*/
24036 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 wdiEventData.pUserData = pUserData;
24041
24042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24043}
24044
24045
24046/**
24047 @brief WDI_SetRssiFilterReq
24048
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024050 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024051
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 wdiRssiFilterCb: callback for passing back the response
24053 of the Set RSSI Filter operation received from the
24054 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024055
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024057 callback
24058
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 @return Result of the function call
24060*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024061WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024062WDI_SetRssiFilterReq
24063(
24064 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24065 WDI_RssiFilterCb wdiRssiFilterCb,
24066 void* pUserData
24067)
24068{
24069 WDI_EventInfoType wdiEventData = {{0}};
24070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24071
24072 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024073 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024074 ------------------------------------------------------------------------*/
24075 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24076 {
24077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24078 "WDI API call before module is initialized - Fail request");
24079
Jeff Johnsone7245742012-09-05 17:12:55 -070024080 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024081 }
24082
24083 /*------------------------------------------------------------------------
24084 Fill in Event data and post to the Main FSM
24085 ------------------------------------------------------------------------*/
24086 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 wdiEventData.pUserData = pUserData;
24091
24092 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24093}/*WDI_SetRssiFilterReq*/
24094
24095/**
24096 @brief WDI_UpdateScanParamsReq
24097
Jeff Johnsone7245742012-09-05 17:12:55 -070024098 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024099 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024100
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 wdiUpdateScanParamsCb: callback for passing back the response
24102 of the Set PNO operation received from the
24103 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024104
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 callback
24107
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 @return Result of the function call
24109*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024110WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024111WDI_UpdateScanParamsReq
24112(
24113 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24114 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24115 void* pUserData
24116)
24117{
24118 WDI_EventInfoType wdiEventData = {{0}};
24119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24120
24121 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 ------------------------------------------------------------------------*/
24124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24125 {
24126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24127 "WDI API call before module is initialized - Fail request");
24128
Jeff Johnsone7245742012-09-05 17:12:55 -070024129 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 }
24131
24132 /*------------------------------------------------------------------------
24133 Fill in Event data and post to the Main FSM
24134 ------------------------------------------------------------------------*/
24135 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024136 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024137 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024139 wdiEventData.pUserData = pUserData;
24140
24141 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24142}
24143
24144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024145 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024147
24148 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 pwdiPNOScanReqParams: pointer to the info received
24150 from upper layers
24151 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024152 and its size
24153
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 @return Result of the function call
24155*/
24156
24157WDI_Status
24158WDI_PackPreferredNetworkList
24159(
24160 WDI_ControlBlockType* pWDICtx,
24161 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24162 wpt_uint8** ppSendBuffer,
24163 wpt_uint16* pSize
24164)
24165{
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 wpt_uint16 usDataOffset = 0;
24168 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024169 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 /*-----------------------------------------------------------------------
24172 Get message buffer
24173 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024174 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024175 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024177 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 {
24179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24180 "Unable to get send buffer in Set PNO req %x ",
24181 pwdiPNOScanReqParams);
24182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 }
24185
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024186 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24187
Jeff Johnson295189b2012-06-20 16:38:30 -070024188 /*-------------------------------------------------------------------------
24189 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24190 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024191 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024192 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024193 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024194 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24195
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024196 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024197 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024198 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24201
24202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24205 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24206 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24207
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024208 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 {
24210 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024211 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24213
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024214 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024215 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024216 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
24218 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024219 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024221
24222 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024223 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024224 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024225
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024228 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024229 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24230 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24231 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24232 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024233
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024234 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024236 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024237
24238 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024239 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24241
24242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024244 pPrefNetwListParams->aNetworks[i].ssId.length,
24245 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 }
24247
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024248 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24251 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24252 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24253
24254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024255 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024256 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24258 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24259
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024260 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024261 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024262 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024264 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24266 }
24267
24268 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024269 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024270 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24271 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24272 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024274
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024275 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024276 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024277 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024278
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024279 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24281 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24282 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024284
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024285 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024287 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024288
24289 /*Set the output values*/
24290 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024292
24293 return WDI_STATUS_SUCCESS;
24294}/*WDI_PackPreferredNetworkList*/
24295
24296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024299
24300 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 pwdiPNOScanReqParams: pointer to the info received
24302 from upper layers
24303 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 and its size
24305
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 @return Result of the function call
24307*/
24308
24309WDI_Status
24310WDI_PackPreferredNetworkListNew
24311(
24312 WDI_ControlBlockType* pWDICtx,
24313 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24314 wpt_uint8** ppSendBuffer,
24315 wpt_uint16* pSize
24316)
24317{
Jeff Johnsone7245742012-09-05 17:12:55 -070024318 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 wpt_uint16 usDataOffset = 0;
24320 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024321 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024323
24324 /*-----------------------------------------------------------------------
24325 Get message buffer
24326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024328 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024330 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 {
24332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24333 "Unable to get send buffer in Set PNO req %x ",
24334 pwdiPNOScanReqParams);
24335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 }
24338
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024339 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24340
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 /*-------------------------------------------------------------------------
24342 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24343 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024344 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024345 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024346 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24348
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024349 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024350 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24354
24355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024356 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24358 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24359 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24360
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024361 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 {
24363 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024364 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24366
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024369 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024370
24371 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024372 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374
24375 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024376 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024377 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024378
24379 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024380 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024381 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024385 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24387
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024388 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024390 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024391
24392 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024393 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24395
24396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024397 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024398 pPrefNetwListParams->aNetworks[i].ssId.length,
24399 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 }
24401
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024402 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24405 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24406 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24407
24408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024410 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24412 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24413
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024414 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024416 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024418 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24420 }
24421
24422 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024423 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24425 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24426 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024427 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024428
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024429 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024430 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024431 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024432
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024433 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24435 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24436 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024438
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024439 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024440 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024441 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024442
Jeff Johnson295189b2012-06-20 16:38:30 -070024443
24444 /*Set the output values*/
24445 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024447
24448 return WDI_STATUS_SUCCESS;
24449}/*WDI_PackPreferredNetworkListNew*/
24450
24451/**
24452 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024453
24454 @param pWDICtx: pointer to the WLAN DAL context
24455 pEventData: pointer to the event information structure
24456
Jeff Johnson295189b2012-06-20 16:38:30 -070024457 @return Result of the function call
24458*/
24459WDI_Status
24460WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024461(
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 WDI_ControlBlockType* pWDICtx,
24463 WDI_EventInfoType* pEventData
24464)
24465{
24466 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24467 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024469 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024471
24472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 -------------------------------------------------------------------------*/
24475 if (( NULL == pEventData ) ||
24476 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24477 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24478 {
24479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 }
24484
24485 /*-------------------------------------------------------------------------
24486 Pack the PNO request structure based on version
24487 -------------------------------------------------------------------------*/
24488 if ( pWDICtx->wdiPNOVersion > 0 )
24489 {
24490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024491 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024492 pWDICtx->wdiPNOVersion);
24493
24494 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24495 &pSendBuffer, &usSendSize);
24496 }
24497 else
24498 {
24499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024500 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024501 pWDICtx->wdiPNOVersion);
24502
24503 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24504 &pSendBuffer, &usSendSize);
24505 }
24506
24507 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24508 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24509 {
24510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024511 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024513 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 }
24515
24516 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024518
24519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024520 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24523 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024524}
24525
24526/**
24527 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024528
24529 @param pWDICtx: pointer to the WLAN DAL context
24530 pEventData: pointer to the event information structure
24531
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 @see
24533 @return Result of the function call
24534*/
24535WDI_Status
24536WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024537(
Jeff Johnson295189b2012-06-20 16:38:30 -070024538 WDI_ControlBlockType* pWDICtx,
24539 WDI_EventInfoType* pEventData
24540)
24541{
24542 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24543 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024544 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 wpt_uint16 usDataOffset = 0;
24546 wpt_uint16 usSendSize = 0;
24547 wpt_uint8 ucRssiThreshold;
24548
24549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024551 -------------------------------------------------------------------------*/
24552 if (( NULL == pEventData ) ||
24553 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24554 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24555 {
24556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024560 }
24561
24562 /*-----------------------------------------------------------------------
24563 Get message buffer
24564 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024566 sizeof(ucRssiThreshold),
24567 &pSendBuffer, &usDataOffset, &usSendSize))||
24568 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24569 {
24570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24571 "Unable to get send buffer in Set PNO req %x %x %x",
24572 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024575 }
24576
24577 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24578
Jeff Johnsone7245742012-09-05 17:12:55 -070024579 wpalMemoryCopy( pSendBuffer+usDataOffset,
24580 &ucRssiThreshold,
24581 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024582
24583 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024585
24586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024587 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024589 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24590 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024591}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024592#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24593/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024594 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024595
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024596 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024597 by the Device Interface
24598
24599 wdiRoamOffloadScancb: callback for passing back the response
24600 of the Roam Candidate Lookup Req operation received from the
24601 device
24602
24603 pUserData: user data will be passed back with the
24604 callback
24605 @return Result of the function call
24606*/
24607WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024608WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024609(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024610 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024611 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24612 void* pUserData
24613)
24614{
24615 WDI_EventInfoType wdiEventData = {{0}};
24616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24617
24618 /*------------------------------------------------------------------------
24619 Sanity Check
24620 ------------------------------------------------------------------------*/
24621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24622 {
24623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24624 "WDI API call before module is initialized - Fail request");
24625
24626 return WDI_STATUS_E_NOT_ALLOWED;
24627 }
24628
24629 /*------------------------------------------------------------------------
24630 Fill in Event data and post to the Main FSM
24631 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024632 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24633 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24634 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024635 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24636 wdiEventData.pUserData = pUserData;
24637
24638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24639}
24640
24641void
24642WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24643{
24644 switch (wdiEdType)
24645 {
24646 case WDI_ED_NONE:
24647 *EdType = eED_NONE;
24648 break;
24649 case WDI_ED_WEP40:
24650 case WDI_ED_WEP104:
24651 *EdType = eED_WEP;
24652 break;
24653 case WDI_ED_TKIP:
24654 *EdType = eED_TKIP;
24655 break;
24656 case WDI_ED_CCMP:
24657#ifdef WLAN_FEATURE_11W
24658 case WDI_ED_AES_128_CMAC:
24659#endif
24660 *EdType = eED_CCMP;
24661 break;
24662#ifdef FEATURE_WLAN_WAPI
24663 case WDI_ED_WPI:
24664 *EdType = eED_WPI;
24665 break;
24666#endif
24667 case WDI_ED_ANY:
24668 *EdType = eED_ANY;
24669 break;
24670
24671 default:
24672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24673 "%s: Unknown Encryption Type", __func__);
24674 break;
24675 }
24676}
24677
24678/**
24679 @brief Helper function to pack Start Roam Candidate Lookup
24680 Request parameters
24681
24682 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024683 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024684 from upper layers
24685 ppSendBuffer, pSize - out pointers of the packed buffer
24686 and its size
24687
24688 @return Result of the function call
24689*/
24690
24691WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024692WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024693(
24694 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024695 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024696 wpt_uint8** ppSendBuffer,
24697 wpt_uint16* pSize
24698)
24699{
24700 wpt_uint8* pSendBuffer = NULL;
24701 wpt_uint16 usDataOffset = 0;
24702 wpt_uint16 usSendSize = 0;
24703 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24704 wpt_uint8 i;
24705 /*-----------------------------------------------------------------------
24706 Get message buffer
24707 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024708 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024709 sizeof(tRoamCandidateListParams),
24710 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024711 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024712 {
24713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24714 "Unable to get send buffer in Start Roam Candidate Lookup Req %x ",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024715 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024716 WDI_ASSERT(0);
24717 return WDI_STATUS_E_FAILURE;
24718 }
24719 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024720 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024721 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024722 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024723 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024724 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024725 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024726 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024727 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024728 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024729 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024730
24731 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024732 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024733 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024734 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024735 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24736 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024737 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24738 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24739 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24740 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24741 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24742 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024743 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024744 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24745 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24746 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24747 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24748 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24749 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24750 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24751 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024752 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024753 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24754 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24755 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024756
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24758 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24759 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24760 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24761 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24762 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24763 "HomeAwayTime=%d\n",
24764 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24765 pRoamCandidateListParams->RoamScanOffloadEnabled,
24766 pRoamCandidateListParams->Command,
24767 pRoamCandidateListParams->StartScanReason,
24768 pRoamCandidateListParams->NeighborScanTimerPeriod,
24769 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24770 pRoamCandidateListParams->NeighborScanChannelMinTime,
24771 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24772 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24773 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24774 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24775 pRoamCandidateListParams->ConnectedNetwork.authentication,
24776 pRoamCandidateListParams->ConnectedNetwork.encryption,
24777 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24778 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24779 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024780 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024781 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024782 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024783 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024784 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24785 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024786 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024787 pRoamCandidateListParams->us24GProbeSize);
24788 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024789 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024790 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024791 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024792 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24793 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024794 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024795 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024796 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24797 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24798 pRoamCandidateListParams->nProbes =
24799 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24800 pRoamCandidateListParams->HomeAwayTime =
24801 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024803 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24804 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024806 }
24807
24808
24809 /*Set the output values*/
24810 *ppSendBuffer = pSendBuffer;
24811 *pSize = usSendSize;
24812 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024813}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024814
24815/**
24816 @brief Process Start Roam Candidate Lookup Request function
24817
24818 @param pWDICtx: pointer to the WLAN DAL context
24819 pEventData: pointer to the event information structure
24820
24821 @return Result of the function call
24822*/
24823WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024824WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024825(
24826 WDI_ControlBlockType* pWDICtx,
24827 WDI_EventInfoType* pEventData
24828)
24829{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024830 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024831 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24832 wpt_uint8* pSendBuffer = NULL;
24833 wpt_uint16 usSendSize = 0;
24834 WDI_Status wdiStatus;
24835 /*-------------------------------------------------------------------------
24836 Sanity check
24837 -------------------------------------------------------------------------*/
24838 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024839 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024840 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24841 {
24842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24843 "%s: Invalid parameters", __func__);
24844 WDI_ASSERT(0);
24845 return WDI_STATUS_E_FAILURE;
24846 }
24847
24848 /*-------------------------------------------------------------------------
24849 Pack the Start Roam Candidate Lookup request structure based on version
24850 -------------------------------------------------------------------------*/
24851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24852 "%s: Packing Roam Candidate Lookup request ", __func__);
24853
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024854 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024855 &pSendBuffer, &usSendSize);
24856
24857 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24858 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24859 {
24860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24861 "%s: failed to pack request parameters", __func__);
24862 WDI_ASSERT(0);
24863 return wdiStatus;
24864 }
24865
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024866 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24867 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024868
24869 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024870 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024871 -------------------------------------------------------------------------*/
24872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024873 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024874}
24875
24876/**
24877 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24878 response is being received over the bus from HAL)
24879
24880 @param pWDICtx: pointer to the WLAN DAL context
24881 pEventData: pointer to the event information structure
24882
24883 @see
24884 @return Result of the function call
24885*/
24886WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024887WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024888(
24889 WDI_ControlBlockType* pWDICtx,
24890 WDI_EventInfoType* pEventData
24891)
24892{
24893 WDI_Status wdiStatus;
24894 eHalStatus halStatus;
24895 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24896
24897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24898
24899 /*-------------------------------------------------------------------------
24900 Sanity check
24901 -------------------------------------------------------------------------*/
24902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24903 ( NULL == pEventData->pEventData ))
24904 {
24905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24906 "%s: Invalid parameters", __func__);
24907 WDI_ASSERT(0);
24908 return WDI_STATUS_E_FAILURE;
24909 }
24910
24911 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24912
24913 /*-------------------------------------------------------------------------
24914 Extract response and send it to UMAC
24915 -------------------------------------------------------------------------*/
24916 halStatus = *((eHalStatus*)pEventData->pEventData);
24917 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24918
24919 /*Notify UMAC*/
24920 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24921
24922 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024923}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024924#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024925
24926/**
24927 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024928
24929 @param pWDICtx: pointer to the WLAN DAL context
24930 pEventData: pointer to the event information structure
24931
Jeff Johnson295189b2012-06-20 16:38:30 -070024932 @see
24933 @return Result of the function call
24934*/
24935WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024936WDI_PackUpdateScanParamsReq
24937(
24938 WDI_ControlBlockType* pWDICtx,
24939 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24940 wpt_uint8** ppSendBuffer,
24941 wpt_uint16* pSize
24942)
24943{
24944 wpt_uint8* pSendBuffer = NULL;
24945 wpt_uint16 usDataOffset = 0;
24946 wpt_uint16 usSendSize = 0;
24947 tUpdateScanParams updateScanParams = {0};
24948
24949
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024951 "Begin WDI Update Scan Parameters Old Style Params");
24952 /*-----------------------------------------------------------------------
24953 Get message buffer
24954 -----------------------------------------------------------------------*/
24955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24956 sizeof(updateScanParams),
24957 &pSendBuffer, &usDataOffset, &usSendSize))||
24958 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24959 {
24960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24961 "Unable to get send buffer in Update Scan Params req %x",
24962 pwdiUpdateScanParams);
24963 WDI_ASSERT(0);
24964 return WDI_STATUS_E_FAILURE;
24965 }
24966
24967 //
24968 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24969 //
24970
24971 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24972 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24973
24974 updateScanParams.ucChannelCount =
24975 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24976 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24977 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24978 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24979
24980 wpalMemoryCopy( updateScanParams.aChannels,
24981 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
24982 updateScanParams.ucChannelCount);
24983
24984
24985 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
24986 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
24987 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
24988 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
24989 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
24990
24991 wpalMemoryCopy( pSendBuffer+usDataOffset,
24992 &updateScanParams,
24993 sizeof(updateScanParams));
24994
24995 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
24996 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
24997
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024999 "End Update Scan Parameters Old Style");
25000
25001 /*Set the output values*/
25002 *ppSendBuffer = pSendBuffer;
25003 *pSize = usSendSize;
25004
25005 return WDI_STATUS_SUCCESS;
25006}
25007
25008/**
25009 @brief Process Update Scan Params function
25010
25011 @param pWDICtx: pointer to the WLAN DAL context
25012 pEventData: pointer to the event information structure
25013
25014 @see
25015 @return Result of the function call
25016*/
25017WDI_Status
25018WDI_PackUpdateScanParamsReqEx
25019(
25020 WDI_ControlBlockType* pWDICtx,
25021 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25022 wpt_uint8** ppSendBuffer,
25023 wpt_uint16* pSize
25024)
25025{
25026 wpt_uint8* pSendBuffer = NULL;
25027 wpt_uint16 usDataOffset = 0;
25028 wpt_uint16 usSendSize = 0;
25029 tUpdateScanParamsEx updateScanParams = {0};
25030
25031
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025032 /*-----------------------------------------------------------------------
25033 Get message buffer
25034 -----------------------------------------------------------------------*/
25035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25036 sizeof(updateScanParams),
25037 &pSendBuffer, &usDataOffset, &usSendSize))||
25038 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25039 {
25040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25041 "Unable to get send buffer in Update Scan Params Ex req %x",
25042 pwdiUpdateScanParams);
25043 WDI_ASSERT(0);
25044 return WDI_STATUS_E_FAILURE;
25045 }
25046
25047 //
25048 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25049 //
25050
25051 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25052 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25053
25054 updateScanParams.ucChannelCount =
25055 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25056 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25057 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25058 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25059
25060 wpalMemoryCopy( updateScanParams.aChannels,
25061 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25062 updateScanParams.ucChannelCount);
25063
25064
25065 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25066 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25067 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25068 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25069 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25070
25071 wpalMemoryCopy( pSendBuffer+usDataOffset,
25072 &updateScanParams,
25073 sizeof(updateScanParams));
25074
25075 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25076 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25077
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025078 /*Set the output values*/
25079 *ppSendBuffer = pSendBuffer;
25080 *pSize = usSendSize;
25081
25082 return WDI_STATUS_SUCCESS;
25083}
25084
25085/**
25086 @brief Process Update Scan Params function
25087
25088 @param pWDICtx: pointer to the WLAN DAL context
25089 pEventData: pointer to the event information structure
25090
25091 @see
25092 @return Result of the function call
25093*/
25094WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025095WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025096(
Jeff Johnson295189b2012-06-20 16:38:30 -070025097 WDI_ControlBlockType* pWDICtx,
25098 WDI_EventInfoType* pEventData
25099)
25100{
25101 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25102 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025104 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025105 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025106
25107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 -------------------------------------------------------------------------*/
25110 if (( NULL == pEventData ) ||
25111 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25112 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25113 {
25114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025115 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 }
25119
25120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25121 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025122
25123 //
25124 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25125 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025126 if ( pWDICtx->wlanVersion.revision < 1 )
25127 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025128 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025129 &pSendBuffer, &usSendSize);
25130 }
25131 else
25132 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025133 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25134 &pSendBuffer, &usSendSize);
25135 }
25136
25137 if(WDI_STATUS_SUCCESS != wdiStatus)
25138 {
25139 //memory allocation failed
25140 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025141 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025142
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025144 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025147 wdiUpdateScanParamsCb, pEventData->pUserData,
25148 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025149}
25150
25151/**
25152 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025153
25154 @param pWDICtx: pointer to the WLAN DAL context
25155 pEventData: pointer to the event information structure
25156
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 @see
25158 @return Result of the function call
25159*/
25160WDI_Status
25161WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025162(
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 WDI_ControlBlockType* pWDICtx,
25164 WDI_EventInfoType* pEventData
25165)
25166{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025167 WDI_LowLevelIndType wdiInd;
25168 tpPrefNetwFoundParams pNetwFoundParams;
25169 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025170
25171
25172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 -------------------------------------------------------------------------*/
25175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25176 ( NULL == pEventData->pEventData ))
25177 {
25178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025180 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 }
25183
25184 /*-------------------------------------------------------------------------
25185 Extract indication and send it to UMAC
25186 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025187 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25188
25189 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25190 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25191 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25192
25193 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25194 {
25195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25196 "%s: fail to allocate memory", __func__);
25197 return WDI_STATUS_MEM_FAILURE;
25198 }
25199
25200 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25201 (pNetwFoundParams->ssId.length < 32 )?
25202 pNetwFoundParams->ssId.length : 32;
25203 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25204 pNetwFoundParams->ssId.ssId,
25205 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25206 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25207 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25208 pNetwFoundParams->frameLength;
25209 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25210 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25211 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025212
25213 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025214 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025215
Jeff Johnson295189b2012-06-20 16:38:30 -070025216 // DEBUG
25217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025218 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025220 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025222 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25224
ltimariu034f7d62013-01-24 18:54:33 -080025225 if ( pWDICtx->wdiLowLevelIndCB )
25226 {
25227 /*Notify UMAC*/
25228 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25229 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025230
25231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025232}
25233
25234/**
25235 @brief Process PNO Rsp function (called when a
25236 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025237
25238 @param pWDICtx: pointer to the WLAN DAL context
25239 pEventData: pointer to the event information structure
25240
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 @see
25242 @return Result of the function call
25243*/
25244WDI_Status
25245WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025246(
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 WDI_ControlBlockType* pWDICtx,
25248 WDI_EventInfoType* pEventData
25249)
25250{
25251 WDI_Status wdiStatus;
25252 eHalStatus halStatus;
25253 WDI_PNOScanCb wdiPNOScanCb = NULL;
25254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25255
25256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025258 -------------------------------------------------------------------------*/
25259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25260 ( NULL == pEventData->pEventData ))
25261 {
25262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025266 }
25267
25268
Jeff Johnsone7245742012-09-05 17:12:55 -070025269 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025270
25271 /*-------------------------------------------------------------------------
25272 Extract response and send it to UMAC
25273 -------------------------------------------------------------------------*/
25274 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025275 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025276
25277 /*Notify UMAC*/
25278 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25279
Jeff Johnsone7245742012-09-05 17:12:55 -070025280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025281}/*WDI_ProcessSetPreferredNetworkRsp*/
25282
25283/**
25284 @brief Process RSSI Filter Rsp function (called when a
25285 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025286
25287 @param pWDICtx: pointer to the WLAN DAL context
25288 pEventData: pointer to the event information structure
25289
Jeff Johnson295189b2012-06-20 16:38:30 -070025290 @see
25291 @return Result of the function call
25292*/
25293WDI_Status
25294WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025295(
Jeff Johnson295189b2012-06-20 16:38:30 -070025296 WDI_ControlBlockType* pWDICtx,
25297 WDI_EventInfoType* pEventData
25298)
25299{
25300 WDI_Status wdiStatus;
25301 eHalStatus halStatus;
25302 WDI_RssiFilterCb wdiRssiFilterCb;
25303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25304
25305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025307 -------------------------------------------------------------------------*/
25308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25309 ( NULL == pEventData->pEventData ))
25310 {
25311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 }
25316
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025318
25319 /*-------------------------------------------------------------------------
25320 Extract response and send it to UMAC
25321 -------------------------------------------------------------------------*/
25322 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025324
25325 /*Notify UMAC*/
25326 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25327
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025329}/*WDI_ProcessSetRssiFilterRsp*/
25330
25331/**
25332 @brief Process Update Scan Params Rsp function (called when a
25333 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025334
25335 @param pWDICtx: pointer to the WLAN DAL context
25336 pEventData: pointer to the event information structure
25337
Jeff Johnson295189b2012-06-20 16:38:30 -070025338 @see
25339 @return Result of the function call
25340*/
25341WDI_Status
25342WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025343(
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 WDI_ControlBlockType* pWDICtx,
25345 WDI_EventInfoType* pEventData
25346)
25347{
25348 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025349 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025351 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25353
25354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 -------------------------------------------------------------------------*/
25357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25358 ( NULL == pEventData->pEventData ))
25359 {
25360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 }
25365
25366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025367 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025368
Jeff Johnsone7245742012-09-05 17:12:55 -070025369 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025370
25371 /*-------------------------------------------------------------------------
25372 Extract response and send it to UMAC
25373 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025374 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25375 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 sizeof(halUpdScanParams.status));
25377
25378 uStatus = halUpdScanParams.status;
25379
25380 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025381 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025382
25383 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025384 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025385
Jeff Johnsone7245742012-09-05 17:12:55 -070025386 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025387
25388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 halUpdScanParams.status);
25391
25392 /*Notify UMAC*/
25393 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25394
Jeff Johnsone7245742012-09-05 17:12:55 -070025395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025396}
25397#endif // FEATURE_WLAN_SCAN_PNO
25398
25399#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025400WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025401WDI_8023MulticastListReq
25402(
25403 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25404 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25405 void* pUserData
25406)
25407{
25408 WDI_EventInfoType wdiEventData;
25409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25410
25411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025412 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025413
25414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025415 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025416 ------------------------------------------------------------------------*/
25417 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25418 {
25419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25420 "WDI API call before module is initialized - Fail request");
25421
Jeff Johnsone7245742012-09-05 17:12:55 -070025422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025423 }
25424
25425 /*------------------------------------------------------------------------
25426 Fill in Event data and post to the Main FSM
25427 ------------------------------------------------------------------------*/
25428 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025429 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025431 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025432 wdiEventData.pUserData = pUserData;
25433
25434 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25435}
25436
Jeff Johnsone7245742012-09-05 17:12:55 -070025437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025438WDI_ReceiveFilterSetFilterReq
25439(
25440 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25441 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25442 void* pUserData
25443)
25444{
25445 WDI_EventInfoType wdiEventData;
25446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25447
25448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025449 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025450
25451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025453 ------------------------------------------------------------------------*/
25454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25455 {
25456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25457 "WDI API call before module is initialized - Fail request");
25458
Jeff Johnsone7245742012-09-05 17:12:55 -070025459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 }
25461
25462 /*------------------------------------------------------------------------
25463 Fill in Event data and post to the Main FSM
25464 ------------------------------------------------------------------------*/
25465 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025466 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25467 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025468 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25469 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025470 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025471 wdiEventData.pUserData = pUserData;
25472
25473
25474 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25475}
25476
Jeff Johnsone7245742012-09-05 17:12:55 -070025477WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025478WDI_FilterMatchCountReq
25479(
25480 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25481 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25482 void* pUserData
25483)
25484{
25485 WDI_EventInfoType wdiEventData;
25486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25487
25488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025489 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025490
25491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025493 ------------------------------------------------------------------------*/
25494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25495 {
25496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25497 "WDI API call before module is initialized - Fail request");
25498
Jeff Johnsone7245742012-09-05 17:12:55 -070025499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025500 }
25501
25502 /*------------------------------------------------------------------------
25503 Fill in Event data and post to the Main FSM
25504 ------------------------------------------------------------------------*/
25505 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025506 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025507 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025508 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 wdiEventData.pUserData = pUserData;
25510
25511
25512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25513}
25514
Jeff Johnsone7245742012-09-05 17:12:55 -070025515WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025516WDI_ReceiveFilterClearFilterReq
25517(
25518 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25519 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25520 void* pUserData
25521)
25522{
25523 WDI_EventInfoType wdiEventData;
25524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25525
25526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025527 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025528
25529 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025530 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 ------------------------------------------------------------------------*/
25532 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25533 {
25534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25535 "WDI API call before module is initialized - Fail request");
25536
Jeff Johnsone7245742012-09-05 17:12:55 -070025537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 }
25539
25540 /*------------------------------------------------------------------------
25541 Fill in Event data and post to the Main FSM
25542 ------------------------------------------------------------------------*/
25543 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025544 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025546 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 wdiEventData.pUserData = pUserData;
25548
25549
25550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25551}
25552
25553/**
25554 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025555
25556 @param pWDICtx: pointer to the WLAN DAL context
25557 pEventData: pointer to the event information structure
25558
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 @see
25560 @return Result of the function call
25561*/
25562WDI_Status
25563WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025564(
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 WDI_ControlBlockType* pWDICtx,
25566 WDI_EventInfoType* pEventData
25567)
25568{
25569 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25570 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 wpt_uint16 usDataOffset = 0;
25573 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025574 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025575 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025576 wpt_uint8 ucCurrentBSSSesIdx = 0;
25577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025578
25579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025580 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025581
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025582 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25583 if( NULL == pRcvFltMcAddrListType )
25584 {
25585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25586 "Failed to alloc in WDI_Process8023MulticastListReq");
25587 return WDI_STATUS_E_FAILURE;
25588 }
25589
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 -------------------------------------------------------------------------*/
25593 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025594 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25598 {
25599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025600 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025601 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025603 return WDI_STATUS_E_FAILURE;
25604 }
25605
25606 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25607 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25608 &pBSSSes);
25609 if ( NULL == pBSSSes )
25610 {
25611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025612 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025613 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 }
25616
25617 /*-----------------------------------------------------------------------
25618 Get message buffer
25619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25621 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 sizeof(tHalRcvFltMcAddrListType),
25623 &pSendBuffer, &usDataOffset, &usSendSize))||
25624 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25625 {
25626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25627 "Unable to get send buffer in "
25628 "WDI_Process8023MulticastListReq() %x %x %x",
25629 pEventData, pwdiFltPktSetMcListReqParamsType,
25630 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025631 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 }
25635
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025636 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025637 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025638 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025640 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25642 sizeof(tSirMacAddr));
25643 }
25644
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025645 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025646 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025647 pRcvFltMcAddrListType,
25648 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025649
25650 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025651 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025652
25653
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025654 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025656 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025660 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025661}
25662
25663/**
25664 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025665
25666 @param pWDICtx: pointer to the WLAN DAL context
25667 pEventData: pointer to the event information structure
25668
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 @see
25670 @return Result of the function call
25671*/
25672WDI_Status
25673WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025674(
Jeff Johnson295189b2012-06-20 16:38:30 -070025675 WDI_ControlBlockType* pWDICtx,
25676 WDI_EventInfoType* pEventData
25677)
25678{
25679 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25680 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025681 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025682 wpt_uint16 usDataOffset = 0;
25683 wpt_uint16 usSendSize = 0;
25684 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025685 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025686 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025687 wpt_uint8 ucCurrentBSSSesIdx = 0;
25688 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025689 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25690 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025691
25692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025693 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025694
25695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025697 -------------------------------------------------------------------------*/
25698 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025699 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25703 {
25704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025705 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025707 return WDI_STATUS_E_FAILURE;
25708 }
25709
25710 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25711 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25712 &pBSSSes);
25713 if ( NULL == pBSSSes )
25714 {
25715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025716 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 }
25719
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025720 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25721 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025722
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025723 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25724 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25725 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25726
25727 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25728 usSessRcvPktFilterCfgSize);
25729
25730 if(NULL == pSessRcvPktFilterCfg)
25731 {
25732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25733 "%s: Failed to allocate memory for "
25734 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025735 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025736 WDI_ASSERT(0);
25737 return WDI_STATUS_E_FAILURE;
25738 }
25739
25740 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25741
25742 /*-----------------------------------------------------------------------
25743 Get message buffer
25744 -----------------------------------------------------------------------*/
25745
25746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25747 usSessRcvPktFilterCfgSize,
25748 &pSendBuffer, &usDataOffset, &usSendSize))||
25749 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25750 {
25751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25752 "Unable to get send buffer in "
25753 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25754 pEventData, pwdiSetRcvPktFilterReqInfo,
25755 wdiReceiveFilterSetFilterCb);
25756 WDI_ASSERT(0);
25757 wpalMemoryFree(pSessRcvPktFilterCfg);
25758 return WDI_STATUS_E_FAILURE;
25759 }
25760
25761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25762 "UsData Off %d UsSend %d cfg %d",usDataOffset,
25763 usSendSize,pSessRcvPktFilterCfg);
25764
25765 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25766 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25767 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25768 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25769
25770 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25771
25772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25773 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25774 pSessRcvPktFilterCfg->filterType);
25775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25776 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25777 pSessRcvPktFilterCfg->coleasceTime);
25778
25779 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25780 {
25781 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25782 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25783 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25784 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25785 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25786 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25787 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25788 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25789
25790 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25791 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25792 8);
25793 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25794 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25795 8);
25796
25797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25798 "Out:Proto %d Comp Flag %d \n",
25799 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25800 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25801
25802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25803 "Data Offset %d Data Len %d\n",
25804 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25805 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25806
25807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25808 "CData: %d:%d:%d:%d:%d:%d\n",
25809 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25810 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25811 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25812 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25813 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25814 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25815
25816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25817 "MData: %d:%d:%d:%d:%d:%d\n",
25818 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25819 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25820 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25821 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25822 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25823 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25824 }
25825
25826 wpalMemoryCopy( pSendBuffer+usDataOffset,
25827 pSessRcvPktFilterCfg,
25828 usSessRcvPktFilterCfgSize);
25829
25830
25831 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25832 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25833
25834 wpalMemoryFree(pSessRcvPktFilterCfg);
25835
25836 }
25837 /*If SLM_SESSIONIZATION is not supported then do this */
25838 else
25839 {
25840 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25841 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25842 * sizeof(tHalRcvPktFilterParams));
25843
25844 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 usRcvPktFilterCfgSize);
25846
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025847 if(NULL == pRcvPktFilterCfg)
25848 {
25849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25850 "%s: Failed to allocate memory for "
25851 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025852 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025853 WDI_ASSERT(0);
25854 return WDI_STATUS_E_FAILURE;
25855 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025856
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025857 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025858
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025859 /*-----------------------------------------------------------------------
25860 Get message buffer
25861 -----------------------------------------------------------------------*/
25862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 usRcvPktFilterCfgSize,
25864 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025865 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25866 {
25867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025868 "Unable to get send buffer in "
25869 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
25870 pEventData, pwdiSetRcvPktFilterReqInfo,
25871 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025872 WDI_ASSERT(0);
25873 wpalMemoryFree(pRcvPktFilterCfg);
25874 return WDI_STATUS_E_FAILURE;
25875 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 usSendSize,usRcvPktFilterCfgSize);
25880
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025881 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25882 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25883 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25884 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025885
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025891 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025892
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025893 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25894 {
25895 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25896 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25897 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25898 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25899 pRcvPktFilterCfg->paramsData[i].dataOffset =
25900 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25901 pRcvPktFilterCfg->paramsData[i].dataLength =
25902 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025903
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025904 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25906 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025907 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25909 8);
25910
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025913 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025914 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25915
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25917 "Data Offset %d Data Len %d\n",
25918 pRcvPktFilterCfg->paramsData[i].dataOffset,
25919 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025920
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25922 "CData: %d:%d:%d:%d:%d:%d\n",
25923 pRcvPktFilterCfg->paramsData[i].compareData[0],
25924 pRcvPktFilterCfg->paramsData[i].compareData[1],
25925 pRcvPktFilterCfg->paramsData[i].compareData[2],
25926 pRcvPktFilterCfg->paramsData[i].compareData[3],
25927 pRcvPktFilterCfg->paramsData[i].compareData[4],
25928 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025929
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25931 "MData: %d:%d:%d:%d:%d:%d\n",
25932 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25933 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25934 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25935 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25936 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25937 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25938 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025939
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025940 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025941 pRcvPktFilterCfg,
25942 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025943
25944
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025945 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25946 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025947
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025949 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025950 wpalMemoryFree(pRcvPktFilterCfg);
25951 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025953 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025957 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025958}
25959
25960/**
25961 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025962
25963 @param pWDICtx: pointer to the WLAN DAL context
25964 pEventData: pointer to the event information structure
25965
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 @see
25967 @return Result of the function call
25968*/
25969WDI_Status
25970WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025971(
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 WDI_ControlBlockType* pWDICtx,
25973 WDI_EventInfoType* pEventData
25974)
25975{
25976 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25977 NULL;
25978 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25979 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 wpt_uint16 usDataOffset = 0;
25982 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025983 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
25984 wpt_uint8 ucCurrentBSSSesIdx = 0;
25985 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025986
25987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025988 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025989
25990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 -------------------------------------------------------------------------*/
25993 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025994 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025995 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025996 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
25998 {
25999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 }
26004
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026005 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26006 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26007 &pBSSSes);
26008 if ( NULL == pBSSSes )
26009 {
26010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026011 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026012 return WDI_STATUS_E_FAILURE;
26013 }
26014
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 /*-----------------------------------------------------------------------
26016 Get message buffer
26017 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26019 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026020 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026022 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026023 {
26024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26025 "Unable to get send buffer in "
26026 "WDI_ProcessFilterMatchCountReq() %x %x %x",
26027 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26028 wdiFilterMatchCountCb);
26029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026031 }
26032
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026033 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26034 wpalMemoryCopy( pSendBuffer+usDataOffset,
26035 &rcvFltPktMatchCntReqParam,
26036 sizeof(rcvFltPktMatchCntReqParam));
26037
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 //
26039 // Don't need to fill send buffer other than header
26040 //
26041 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026042 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026043
26044
26045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026046 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26049 wdiFilterMatchCountCb,
26050 pEventData->pUserData,
26051 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026052}
26053
26054/**
26055 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026056
26057 @param pWDICtx: pointer to the WLAN DAL context
26058 pEventData: pointer to the event information structure
26059
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 @see
26061 @return Result of the function call
26062*/
26063WDI_Status
26064WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026065(
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 WDI_ControlBlockType* pWDICtx,
26067 WDI_EventInfoType* pEventData
26068)
Jeff Johnsone7245742012-09-05 17:12:55 -070026069{
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26071 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026072 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026073 wpt_uint16 usDataOffset = 0;
26074 wpt_uint16 usSendSize = 0;
26075 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026076 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026077 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026078
26079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026080 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026081
26082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026084 -------------------------------------------------------------------------*/
26085 if (( NULL == pEventData ) ||
26086 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26087 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026089 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26090 {
26091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026094 return WDI_STATUS_E_FAILURE;
26095 }
26096
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026097 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26099 &pBSSSes);
26100 if ( NULL == pBSSSes )
26101 {
26102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026103 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 }
26106
26107 /*-----------------------------------------------------------------------
26108 Get message buffer
26109 -----------------------------------------------------------------------*/
26110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026111 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 sizeof(tHalRcvFltPktClearParam),
26113 &pSendBuffer, &usDataOffset, &usSendSize))||
26114 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26115 {
26116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26117 "Unable to get send buffer in "
26118 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
26119 pEventData, pwdiRcvFltPktClearReqParamsType,
26120 wdiRcvFltPktClearFilterCb);
26121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 }
26124
26125
26126 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026127 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026129 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026130
Jeff Johnsone7245742012-09-05 17:12:55 -070026131 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26132 wpalMemoryCopy( pSendBuffer+usDataOffset,
26133 &rcvFltPktClearParam,
26134 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026135
26136 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026138
26139
26140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026144 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026145 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026146}
26147
26148/**
26149 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026150
26151 @param pWDICtx: pointer to the WLAN DAL context
26152 pEventData: pointer to the event information structure
26153
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 @see
26155 @return Result of the function call
26156*/
26157WDI_Status
26158WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026159(
Jeff Johnson295189b2012-06-20 16:38:30 -070026160 WDI_ControlBlockType* pWDICtx,
26161 WDI_EventInfoType* pEventData
26162)
26163{
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 eHalStatus halStatus;
26165 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026166 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26167 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26169
26170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026171 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026172
26173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 -------------------------------------------------------------------------*/
26176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26177 ( NULL == pEventData->pEventData ))
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
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186
26187 /*-------------------------------------------------------------------------
26188 Extract response and send it to UMAC
26189 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026190 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26191 {
26192 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26193 pEventData->pEventData,
26194 sizeof(halRcvFltPktSetMcListRsp));
26195
26196 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26197 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26198 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26199 halRcvFltPktSetMcListRsp.bssIdx;
26200 }
26201 else
26202 {
26203 halStatus = *((eHalStatus*)pEventData->pEventData);
26204 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26205 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026206
26207 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026208 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026209
Jeff Johnsone7245742012-09-05 17:12:55 -070026210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026211}
26212
26213/**
26214 @brief Process Set Rsp function (called when a
26215 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026216
26217 @param pWDICtx: pointer to the WLAN DAL context
26218 pEventData: pointer to the event information structure
26219
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 @see
26221 @return Result of the function call
26222*/
26223WDI_Status
26224WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026225(
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 WDI_ControlBlockType* pWDICtx,
26227 WDI_EventInfoType* pEventData
26228)
26229{
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 eHalStatus halStatus;
26231 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026232 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26233 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26235
26236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026237 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026238
26239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 -------------------------------------------------------------------------*/
26242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26243 ( NULL == pEventData->pEventData ))
26244 {
26245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026249 }
26250
26251 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026252 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026253
26254 /*-------------------------------------------------------------------------
26255 Extract response and send it to UMAC
26256 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026257 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26258 {
26259 wpalMemoryCopy( &halSetPktFilterRspParams,
26260 pEventData->pEventData,
26261 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026262
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026263 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26264 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26265 }
26266 else
26267 {
26268 halStatus = *((eHalStatus*)pEventData->pEventData);
26269 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26270 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026271 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026272 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026273
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026275}
26276
26277/**
26278 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026279
26280 @param pWDICtx: pointer to the WLAN DAL context
26281 pEventData: pointer to the event information structure
26282
Jeff Johnson295189b2012-06-20 16:38:30 -070026283 @see
26284 @return Result of the function call
26285*/
26286WDI_Status
26287WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026288(
Jeff Johnson295189b2012-06-20 16:38:30 -070026289 WDI_ControlBlockType* pWDICtx,
26290 WDI_EventInfoType* pEventData
26291)
26292{
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026295 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26296 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026297
26298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26299
26300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026301 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026302
26303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026305 -------------------------------------------------------------------------*/
26306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26307 ( NULL == pEventData->pEventData ))
26308 {
26309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 }
26314
Jeff Johnsone7245742012-09-05 17:12:55 -070026315 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026316
26317 /*-------------------------------------------------------------------------
26318 Extract response and send it to UMAC
26319 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026320 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26321 {
26322 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26323 pEventData->pEventData,
26324 sizeof(halRcvFltrPktMatachRsp));
26325
26326 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26327 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26328 }
26329 else
26330 {
26331 halStatus = *((eHalStatus*)pEventData->pEventData);
26332 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26333 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026334
26335 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026336 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026337
Jeff Johnsone7245742012-09-05 17:12:55 -070026338 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026339}
26340
26341/**
26342 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026343
26344 @param pWDICtx: pointer to the WLAN DAL context
26345 pEventData: pointer to the event information structure
26346
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 @see
26348 @return Result of the function call
26349*/
26350WDI_Status
26351WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026352(
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 WDI_ControlBlockType* pWDICtx,
26354 WDI_EventInfoType* pEventData
26355)
26356{
Jeff Johnson295189b2012-06-20 16:38:30 -070026357 eHalStatus halStatus;
26358 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026359 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26360 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26362
26363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026364 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026365
26366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 -------------------------------------------------------------------------*/
26369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26370 ( NULL == pEventData->pEventData ))
26371 {
26372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026376 }
26377
26378 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026379 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026380
26381 /*-------------------------------------------------------------------------
26382 Extract response and send it to UMAC
26383 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026384 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26385 {
26386 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26387 pEventData->pEventData,
26388 sizeof(halRcvFltPktClearRspMsg));
26389
26390 wdiRcvFltPktClearRspParamsType.wdiStatus =
26391 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26392 wdiRcvFltPktClearRspParamsType.bssIdx =
26393 halRcvFltPktClearRspMsg.bssIdx;
26394 }
26395 else
26396 {
26397 halStatus = *((eHalStatus*)pEventData->pEventData);
26398 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26399 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026400
26401 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026402 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026403
Jeff Johnsone7245742012-09-05 17:12:55 -070026404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026405}
26406#endif // WLAN_FEATURE_PACKET_FILTERING
26407
26408/**
26409 @brief Process Shutdown Rsp function
26410 There is no shutdown response comming from HAL
26411 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026412
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026414 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026415
26416 @see
26417 @return Result of the function call
26418*/
26419WDI_Status
26420WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026421(
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 WDI_ControlBlockType* pWDICtx,
26423 WDI_EventInfoType* pEventData
26424)
26425{
26426 /*There is no shutdown response comming from HAL - function just kept for
26427 simmetry */
26428 WDI_ASSERT(0);
26429 return WDI_STATUS_SUCCESS;
26430}/*WDI_ProcessShutdownRsp*/
26431
26432/**
26433 @brief WDI_SetPowerParamsReq
26434
Jeff Johnsone7245742012-09-05 17:12:55 -070026435 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026436 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026437
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 wdiPowerParamsCb: callback for passing back the response
26439 of the Set Power Params operation received from the
26440 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026441
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026443 callback
26444
Jeff Johnson295189b2012-06-20 16:38:30 -070026445 @return Result of the function call
26446*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026447WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026448WDI_SetPowerParamsReq
26449(
26450 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26451 WDI_SetPowerParamsCb wdiPowerParamsCb,
26452 void* pUserData
26453)
26454{
26455 WDI_EventInfoType wdiEventData;
26456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26457
26458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026459 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 ------------------------------------------------------------------------*/
26461 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26462 {
26463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26464 "WDI API call before module is initialized - Fail request");
26465
Jeff Johnsone7245742012-09-05 17:12:55 -070026466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026467 }
26468
26469 /*------------------------------------------------------------------------
26470 Fill in Event data and post to the Main FSM
26471 ------------------------------------------------------------------------*/
26472 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026473 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026475 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026476 wdiEventData.pUserData = pUserData;
26477
26478 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26479}/*WDI_SetPowerParamsReq*/
26480
26481/**
26482 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026483
26484 @param pWDICtx: pointer to the WLAN DAL context
26485 pEventData: pointer to the event information structure
26486
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 @see
26488 @return Result of the function call
26489*/
26490WDI_Status
26491WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026492(
Jeff Johnson295189b2012-06-20 16:38:30 -070026493 WDI_ControlBlockType* pWDICtx,
26494 WDI_EventInfoType* pEventData
26495)
26496{
26497 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26498 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026500 wpt_uint16 usDataOffset = 0;
26501 wpt_uint16 usSendSize = 0;
26502 tSetPowerParamsType powerParams;
26503
26504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 -------------------------------------------------------------------------*/
26507 if (( NULL == pEventData ) ||
26508 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26509 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26510 {
26511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 }
26516
26517 /*-----------------------------------------------------------------------
26518 Get message buffer
26519 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026520 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026521 sizeof(powerParams),
26522 &pSendBuffer, &usDataOffset, &usSendSize))||
26523 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26524 {
26525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26526 "Unable to get send buffer in Set PNO req %x %x %x",
26527 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026530 }
26531
26532 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026533 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026534 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26535
26536 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026537 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026538 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26539
26540 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26543
26544 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026545 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026546 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26547
26548 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026549 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026550 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26551
26552 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026553 powerParams.uBETInterval =
26554 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026555
Yue Ma0da19492013-05-13 17:01:29 -070026556 /* MAX LI for modulated DTIM */
26557 powerParams.uMaxLIModulatedDTIM =
26558 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026559
26560 wpalMemoryCopy( pSendBuffer+usDataOffset,
26561 &powerParams,
26562 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026563
26564 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026565 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026566
26567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026568 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026570 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26571 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026572}
26573
26574/**
26575 @brief Process Power Params Rsp function (called when a
26576 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026577
26578 @param pWDICtx: pointer to the WLAN DAL context
26579 pEventData: pointer to the event information structure
26580
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 @see
26582 @return Result of the function call
26583*/
26584WDI_Status
26585WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026586(
Jeff Johnson295189b2012-06-20 16:38:30 -070026587 WDI_ControlBlockType* pWDICtx,
26588 WDI_EventInfoType* pEventData
26589)
26590{
26591 WDI_Status wdiStatus;
26592 eHalStatus halStatus;
26593 WDI_SetPowerParamsCb wdiPowerParamsCb;
26594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26595
26596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026598 -------------------------------------------------------------------------*/
26599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26600 ( NULL == pEventData->pEventData ))
26601 {
26602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026606 }
26607
Jeff Johnsone7245742012-09-05 17:12:55 -070026608 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026609
26610 /*-------------------------------------------------------------------------
26611 Extract response and send it to UMAC
26612 -------------------------------------------------------------------------*/
26613 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026614 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026615
26616 /*Notify UMAC*/
26617 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26618
Jeff Johnsone7245742012-09-05 17:12:55 -070026619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026620}/*WDI_ProcessSetPowerParamsRsp*/
26621
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026622/**
26623 @brief WDI_dhcpStartInd
26624 Host will send an event to the FW when DHCP is initiated
26625
26626 @param
26627 WDI_DHCPInd: DHCP Indication
26628 @see
26629 @return Result of the function call
26630*/
26631WDI_Status
26632WDI_dhcpStartInd
26633(
26634 WDI_DHCPInd *wdiDHCPInd
26635)
26636{
26637 WDI_EventInfoType wdiEventData;
26638
26639 /*------------------------------------------------------------------------
26640 Sanity Check
26641 ------------------------------------------------------------------------*/
26642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26643 {
26644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26645 "WDI API call before module is initialized - Fail request");
26646
26647 return WDI_STATUS_E_NOT_ALLOWED;
26648 }
26649
26650 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26651 wdiEventData.pEventData = wdiDHCPInd;
26652 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26653 wdiEventData.pCBfnc = NULL;
26654 wdiEventData.pUserData = NULL;
26655
26656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26657}
26658
26659
26660/**
26661 @brief WDI_dhcpStopInd
26662 Host will send an event to the FW when DHCP is completed
26663
26664 @param
26665 WDI_DHCPInd: DHCP Indication
26666 @see
26667 @return Result of the function call
26668*/
26669WDI_Status
26670WDI_dhcpStopInd
26671(
26672 WDI_DHCPInd *wdiDHCPInd
26673)
26674{
26675 WDI_EventInfoType wdiEventData;
26676
26677 /*------------------------------------------------------------------------
26678 Sanity Check
26679 ------------------------------------------------------------------------*/
26680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26681 {
26682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26683 "WDI API call before module is initialized - Fail request");
26684
26685 return WDI_STATUS_E_NOT_ALLOWED;
26686 }
26687
26688 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26689 wdiEventData.pEventData = wdiDHCPInd;
26690 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26691 wdiEventData.pCBfnc = NULL;
26692 wdiEventData.pUserData = NULL;
26693
26694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26695}
26696
26697
26698/**
26699 @brief Process DHCP Start Indication message and post it to HAL
26700
26701 @param pWDICtx: pointer to the WLAN DAL context
26702 pEventData: pointer to the event information structure
26703
26704 @see
26705 @return Result of the function call
26706*/
26707WDI_Status
26708WDI_ProcessDHCPStartInd
26709(
26710 WDI_ControlBlockType* pWDICtx,
26711 WDI_EventInfoType* pEventData
26712)
26713{
26714 wpt_uint8* pSendBuffer = NULL;
26715 wpt_uint16 usDataOffset = 0;
26716 wpt_uint16 usSendSize = 0;
26717 wpt_uint16 usLen = 0;
26718 WDI_DHCPInd* pwdiDHCPInd = NULL;
26719 tDHCPInfo* pDHCPInfo;
26720
26721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26722
26723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26724 "%s", __func__);
26725
26726 /*-------------------------------------------------------------------------
26727 Sanity check
26728 -------------------------------------------------------------------------*/
26729 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26730 {
26731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26732 "%s: Invalid parameters", __func__);
26733 WDI_ASSERT(0);
26734 return WDI_STATUS_E_FAILURE;
26735 }
26736 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26737 /*-----------------------------------------------------------------------
26738 Get message buffer
26739 -----------------------------------------------------------------------*/
26740
26741 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26742 WDI_DHCP_START_IND,
26743 sizeof(tDHCPInfo),
26744 &pSendBuffer, &usDataOffset, &usSendSize))||
26745 ( usSendSize < (usDataOffset + usLen )))
26746 {
26747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26748 "Unable to get send buffer in DHCP Start req %p ",
26749 pEventData);
26750 WDI_ASSERT(0);
26751 return WDI_STATUS_E_FAILURE;
26752 }
26753
26754 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26755 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26756 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26757 WDI_MAC_ADDR_LEN);
26758
26759 pWDICtx->pReqStatusUserData = NULL;
26760 pWDICtx->pfncRspCB = NULL;
26761
26762 /*-------------------------------------------------------------------------
26763 Send DHCP Start Indication to HAL
26764 -------------------------------------------------------------------------*/
26765 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26766
26767}/*WDI_ProcessDHCPStartInd*/
26768
26769/**
26770 @brief Process DHCP Stop indication message and post it to HAL
26771
26772 @param pWDICtx: pointer to the WLAN DAL context
26773 pEventData: pointer to the event information structure
26774
26775 @see
26776 @return Result of the function call
26777*/
26778WDI_Status
26779WDI_ProcessDHCPStopInd
26780(
26781 WDI_ControlBlockType* pWDICtx,
26782 WDI_EventInfoType* pEventData
26783)
26784{
26785 wpt_uint8* pSendBuffer = NULL;
26786 wpt_uint16 usDataOffset = 0;
26787 wpt_uint16 usSendSize = 0;
26788 wpt_uint16 usLen = 0;
26789 WDI_DHCPInd* pwdiDHCPInd = NULL;
26790 tDHCPInfo* pDHCPInfo;
26791
26792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26793
26794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26795 "%s", __func__);
26796
26797 /*-------------------------------------------------------------------------
26798 Sanity check
26799 -------------------------------------------------------------------------*/
26800
26801 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26802 {
26803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26804 "%s: Invalid parameters", __func__);
26805 WDI_ASSERT(0);
26806 return WDI_STATUS_E_FAILURE;
26807 }
26808 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26809 /*-----------------------------------------------------------------------
26810 Get message buffer
26811 -----------------------------------------------------------------------*/
26812
26813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26814 WDI_DHCP_STOP_IND,
26815 sizeof(tDHCPInfo),
26816 &pSendBuffer, &usDataOffset, &usSendSize))||
26817 ( usSendSize < (usDataOffset + usLen )))
26818 {
26819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26820 "Unable to get send buffer in DHCP Start req %p ",
26821 pEventData);
26822 WDI_ASSERT(0);
26823 return WDI_STATUS_E_FAILURE;
26824 }
26825
26826 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26827 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26828 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26829 WDI_MAC_ADDR_LEN);
26830
26831 pWDICtx->pReqStatusUserData = NULL;
26832 pWDICtx->pfncRspCB = NULL;
26833 /*-------------------------------------------------------------------------
26834 Send DHCP Stop indication to HAL
26835 -------------------------------------------------------------------------*/
26836 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26837
26838}/*WDI_ProcessDHCPStopInd*/
26839
26840
Jeff Johnson295189b2012-06-20 16:38:30 -070026841#ifdef WLAN_FEATURE_GTK_OFFLOAD
26842/**
26843 @brief WDI_GTKOffloadReq will be called when the upper MAC
26844 wants to set GTK Rekey Counter while in power save. Upon
26845 the call of this API the WLAN DAL will pack and send a
26846 HAL GTK offload request message to the lower RIVA
26847 sub-system if DAL is in state STARTED.
26848
26849 In state BUSY this request will be queued. Request won't
26850 be allowed in any other state.
26851
26852 WDI_PostAssocReq must have been called.
26853
26854 @param pwdiGtkOffloadParams: the GTK offload as specified
26855 by the Device Interface
26856
26857 wdiGtkOffloadCb: callback for passing back the response
26858 of the GTK offload operation received from the device
26859
26860 pUserData: user data will be passed back with the
26861 callback
26862
26863 @see WDI_PostAssocReq
26864 @return Result of the function call
26865*/
26866WDI_Status
26867WDI_GTKOffloadReq
26868(
26869 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26870 WDI_GtkOffloadCb wdiGtkOffloadCb,
26871 void* pUserData
26872)
26873{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026874 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26876
26877 /*------------------------------------------------------------------------
26878 Sanity Check
26879 ------------------------------------------------------------------------*/
26880 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26881 {
26882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26883 "WDI API call before module is initialized - Fail request");
26884
26885 return WDI_STATUS_E_NOT_ALLOWED;
26886 }
26887
26888 /*------------------------------------------------------------------------
26889 Fill in Event data and post to the Main FSM
26890 ------------------------------------------------------------------------*/
26891 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26892 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026893 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026894 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26895 wdiEventData.pUserData = pUserData;
26896
26897 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26898}
26899
26900
26901/**
26902 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26903 MAC wants to get GTK Rekey Counter while in power save.
26904 Upon the call of this API the WLAN DAL will pack and
26905 send a HAL GTK offload request message to the lower RIVA
26906 sub-system if DAL is in state STARTED.
26907
26908 In state BUSY this request will be queued. Request won't
26909 be allowed in any other state.
26910
26911 WDI_PostAssocReq must have been called.
26912
26913 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26914 Information Message as specified by the
26915 Device Interface
26916
26917 wdiGtkOffloadGetInfoCb: callback for passing back the
26918 response of the GTK offload operation received from the
26919 device
26920
26921 pUserData: user data will be passed back with the
26922 callback
26923
26924 @see WDI_PostAssocReq
26925 @return Result of the function call
26926*/
26927WDI_Status
26928WDI_GTKOffloadGetInfoReq
26929(
26930 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26931 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26932 void* pUserData
26933)
26934{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026935 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26937
26938 /*------------------------------------------------------------------------
26939 Sanity Check
26940 ------------------------------------------------------------------------*/
26941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26942 {
26943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26944 "WDI API call before module is initialized - Fail request");
26945
26946 return WDI_STATUS_E_NOT_ALLOWED;
26947 }
26948
26949 /*------------------------------------------------------------------------
26950 Fill in Event data and post to the Main FSM
26951 ------------------------------------------------------------------------*/
26952 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26953 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26954 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26955 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26956 wdiEventData.pUserData = pUserData;
26957
26958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26959}
26960
26961
26962/**
26963 @brief Process set GTK Offload Request function
26964
26965 @param pWDICtx: pointer to the WLAN DAL context
26966 pEventData: pointer to the event information structure
26967
26968 @see
26969 @return Result of the function call
26970*/
26971WDI_Status
26972WDI_ProcessGTKOffloadReq
26973(
26974 WDI_ControlBlockType* pWDICtx,
26975 WDI_EventInfoType* pEventData
26976)
26977{
26978 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26979 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
26980 wpt_uint8* pSendBuffer = NULL;
26981 wpt_uint16 usDataOffset = 0;
26982 wpt_uint16 usSendSize = 0;
26983 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026984 wpt_uint8 ucCurrentSessionId = 0;
26985 WDI_BSSSessionType* pBSSSes = NULL;
26986
Jeff Johnson295189b2012-06-20 16:38:30 -070026987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26988
26989 /*-------------------------------------------------------------------------
26990 Sanity check
26991 -------------------------------------------------------------------------*/
26992 if (( NULL == pEventData ) ||
26993 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
26994 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
26995 {
26996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026998 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080026999 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027000 }
27001
27002 /*-----------------------------------------------------------------------
27003 Get message buffer
27004 -----------------------------------------------------------------------*/
27005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27006 sizeof(gtkOffloadReqParams),
27007 &pSendBuffer, &usDataOffset, &usSendSize))||
27008 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27009 {
27010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27011 "Unable to get send buffer in GTK offload req %x %x %x",
27012 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27013 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027014 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027015 }
27016
27017 //
27018 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27019 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027020 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27021 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27022 &pBSSSes);
27023 if ( NULL == pBSSSes )
27024 {
27025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027026 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027027 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027028 }
27029
27030 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27031
Jeff Johnson295189b2012-06-20 16:38:30 -070027032 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27033 // Copy KCK
27034 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27035 // Copy KEK
27036 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27037 // Copy KeyReplayCounter
27038 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27039
27040 wpalMemoryCopy( pSendBuffer+usDataOffset,
27041 &gtkOffloadReqParams,
27042 sizeof(gtkOffloadReqParams));
27043
27044 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27045 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27046
27047 /*-------------------------------------------------------------------------
27048 Send Get STA Request to HAL
27049 -------------------------------------------------------------------------*/
27050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27051 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027052
27053fail:
27054 // Release the message buffer so we don't leak
27055 wpalMemoryFree(pSendBuffer);
27056
27057failRequest:
27058 //WDA should have failure check to avoid the memory leak
27059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027060}
27061
27062
27063/**
27064 @brief Process GTK Offload Get Information Request function
27065
27066 @param pWDICtx: pointer to the WLAN DAL context
27067 pEventData: pointer to the event information structure
27068
27069 @see
27070 @return Result of the function call
27071*/
27072WDI_Status
27073WDI_ProcessGTKOffloadGetInfoReq
27074(
27075 WDI_ControlBlockType* pWDICtx,
27076 WDI_EventInfoType* pEventData
27077)
27078{
27079 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27080 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27081 wpt_uint8* pSendBuffer = NULL;
27082 wpt_uint16 usDataOffset = 0;
27083 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027084 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27085 wpt_uint8 ucCurrentSessionId = 0;
27086 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027087
27088 /*-------------------------------------------------------------------------
27089 Sanity check
27090 -------------------------------------------------------------------------*/
27091 if (( NULL == pEventData ) ||
27092 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27093 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27094 {
27095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027097 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027098 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027099 }
27100
27101 /*-----------------------------------------------------------------------
27102 Get message buffer
27103 -----------------------------------------------------------------------*/
27104 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027105 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027106 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027107 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 {
27109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27110 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
27111 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27112 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027113 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027115 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27116 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27117 &pBSSSes);
27118 if ( NULL == pBSSSes )
27119 {
27120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027121 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027122 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027123 }
27124 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027125
27126 //
27127 // Don't need to fill send buffer other than header
27128 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027129 wpalMemoryCopy( pSendBuffer+usDataOffset,
27130 &halGtkOffloadGetInfoReqParams,
27131 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027132
27133 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27134 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27135
27136 /*-------------------------------------------------------------------------
27137 Send Get STA Request to HAL
27138 -------------------------------------------------------------------------*/
27139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27140 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027141fail:
27142 // Release the message buffer so we don't leak
27143 wpalMemoryFree(pSendBuffer);
27144
27145failRequest:
27146 //WDA should have failure check to avoid the memory leak
27147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027148}
27149
27150/**
27151 @brief Process host offload Rsp function (called when a
27152 response is being received over the bus from HAL)
27153
27154 @param pWDICtx: pointer to the WLAN DAL context
27155 pEventData: pointer to the event information structure
27156
27157 @see
27158 @return Result of the function call
27159*/
27160WDI_Status
27161WDI_ProcessGtkOffloadRsp
27162(
27163 WDI_ControlBlockType* pWDICtx,
27164 WDI_EventInfoType* pEventData
27165)
27166{
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 eHalStatus halStatus;
27168 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027169 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27170 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027171
27172 /*-------------------------------------------------------------------------
27173 Sanity check
27174 -------------------------------------------------------------------------*/
27175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27176 ( NULL == pEventData->pEventData))
27177 {
27178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 WDI_ASSERT(0);
27181 return WDI_STATUS_E_FAILURE;
27182 }
27183
Wilson Yangcf2cf012013-10-10 23:13:38 -070027184 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27185
Jeff Johnson295189b2012-06-20 16:38:30 -070027186 /*-------------------------------------------------------------------------
27187 Extract response and send it to UMAC
27188 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027189 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27190 {
27191 wpalMemoryCopy( &halGtkOffloadRspParams,
27192 pEventData->pEventData,
27193 sizeof(halGtkOffloadRspParams));
27194
27195 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027196 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027197 wdiGtkOffloadRsparams.bssIdx =
27198 halGtkOffloadRspParams.bssIdx;
27199 }
27200 else
27201 {
27202 halStatus = *((eHalStatus*)pEventData->pEventData);
27203 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27204 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027205
27206 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027207 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027208
27209 return WDI_STATUS_SUCCESS;
27210}
27211
27212/**
27213 @brief Process GTK Offload Get Information Response function
27214
27215 @param pWDICtx: pointer to the WLAN DAL context
27216 pEventData: pointer to the event information structure
27217
27218 @see
27219 @return Result of the function call
27220*/
27221WDI_Status
27222WDI_ProcessGTKOffloadGetInfoRsp
27223(
27224 WDI_ControlBlockType* pWDICtx,
27225 WDI_EventInfoType* pEventData
27226)
27227{
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027229 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027230 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27231 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027232 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027233
Jeff Johnson295189b2012-06-20 16:38:30 -070027234
27235 /*-------------------------------------------------------------------------
27236 Sanity check
27237 -------------------------------------------------------------------------*/
27238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27239 ( NULL == pEventData->pEventData ))
27240 {
27241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027243 WDI_ASSERT(0);
27244 return WDI_STATUS_E_FAILURE;
27245 }
27246
Wilson Yangcf2cf012013-10-10 23:13:38 -070027247 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27248
27249 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027250 Extract response and send it to UMAC
27251 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027252 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27253 {
27254 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27255 pEventData->pEventData,
27256 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027257
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027258 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027259 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027260 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27261 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27262 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27263 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27264 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27265 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27266 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27267 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027268
27269 wpalMutexAcquire(&pWDICtx->wptMutex);
27270 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27271 &pBSSSes);
27272
27273 if ( NULL == pBSSSes )
27274 {
27275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27276 "Association sequence for this BSS does not exist or "
27277 "association no longer in progress - mysterious HAL response");
27278 wpalMutexRelease(&pWDICtx->wptMutex);
27279 return WDI_STATUS_E_NOT_ALLOWED;
27280 }
27281
27282 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27283 sizeof (wpt_macAddr));
27284 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027285 }
27286 else
27287 {
27288 halStatus = *((eHalStatus*)pEventData->pEventData);
27289 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27290 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 /*Notify UMAC*/
27292 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27293 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027294 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027295
27296 return WDI_STATUS_SUCCESS;
27297}
27298#endif // WLAN_FEATURE_GTK_OFFLOAD
27299
27300#ifdef WLAN_WAKEUP_EVENTS
27301WDI_Status
27302WDI_ProcessWakeReasonInd
27303(
27304 WDI_ControlBlockType* pWDICtx,
27305 WDI_EventInfoType* pEventData
27306)
27307{
27308 WDI_LowLevelIndType *pWdiInd;
27309 tpWakeReasonParams pWakeReasonParams;
27310 wpt_uint32 allocSize = 0;
27311
27312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027313 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027314
27315 /*-------------------------------------------------------------------------
27316 Sanity check
27317 -------------------------------------------------------------------------*/
27318 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27319 ( NULL == pEventData->pEventData ))
27320 {
27321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027323 WDI_ASSERT( 0 );
27324 return WDI_STATUS_E_FAILURE;
27325 }
27326
27327 /*-------------------------------------------------------------------------
27328 Extract indication and send it to UMAC
27329 -------------------------------------------------------------------------*/
27330 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27331
27332 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27333
27334 //Allocate memory for WDI_WakeReasonIndType structure
27335 pWdiInd = wpalMemoryAllocate(allocSize) ;
27336
27337 if(NULL == pWdiInd)
27338 {
27339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27340 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027341 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 WDI_ASSERT(0);
27343 return WDI_STATUS_E_FAILURE;
27344 }
27345
27346 wpalMemoryZero(pWdiInd, allocSize);
27347
27348 /* Fill in the indication parameters*/
27349 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27350 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27351 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27352 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27353 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27354 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27355 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27356 &(pWakeReasonParams->aDataStart[0]),
27357 pWakeReasonParams->ulStoredDataLen);
27358
ltimariu034f7d62013-01-24 18:54:33 -080027359
27360 if ( pWDICtx->wdiLowLevelIndCB )
27361 {
27362 /*Notify UMAC*/
27363 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27364 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027365
27366 //Free memory allocated for WDI_WakeReasonIndType structure
27367 wpalMemoryFree(pWdiInd);
27368
27369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027370 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027371
27372 return WDI_STATUS_SUCCESS;
27373}
27374#endif // WLAN_WAKEUP_EVENTS
27375
27376void WDI_GetWcnssCompiledApiVersion
27377(
27378 WDI_WlanVersionType *pWcnssApiVersion
27379)
27380{
27381 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27382 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27383 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27384 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27385}
27386
27387/**
27388 @brief Process Set TM Level Rsp function (called when a
27389 response is being received over the bus from HAL)
27390
27391 @param pWDICtx: pointer to the WLAN DAL context
27392 pEventData: pointer to the event information structure
27393
27394 @see
27395 @return Result of the function call
27396*/
27397WDI_Status
27398WDI_ProcessSetTmLevelRsp
27399(
27400 WDI_ControlBlockType* pWDICtx,
27401 WDI_EventInfoType* pEventData
27402)
27403{
27404 WDI_Status wdiStatus;
27405 eHalStatus halStatus;
27406 WDI_SetTmLevelCb wdiSetTmLevelCb;
27407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27408
27409 /*-------------------------------------------------------------------------
27410 Sanity check
27411 -------------------------------------------------------------------------*/
27412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27413 ( NULL == pEventData->pEventData ))
27414 {
27415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027417 WDI_ASSERT(0);
27418 return WDI_STATUS_E_FAILURE;
27419 }
27420
27421 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27422
27423 /*-------------------------------------------------------------------------
27424 Extract response and send it to UMAC
27425 -------------------------------------------------------------------------*/
27426 halStatus = *((eHalStatus*)pEventData->pEventData);
27427 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27428
27429 /*Notify UMAC*/
27430 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27431
27432 return WDI_STATUS_SUCCESS;
27433}/*WDI_ProcessSetTmLevelRsp*/
27434
27435/**
27436 @brief Process Set Thermal Mitigation level Changed request
27437
27438 @param pWDICtx: pointer to the WLAN DAL context
27439 pEventData: pointer to the event information structure
27440
27441 @see
27442 @return Result of the function call
27443*/
27444WDI_Status
27445WDI_ProcessSetTmLevelReq
27446(
27447 WDI_ControlBlockType* pWDICtx,
27448 WDI_EventInfoType* pEventData
27449)
27450{
27451 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27452 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27453 wpt_uint8* pSendBuffer = NULL;
27454 wpt_uint16 usDataOffset = 0;
27455 wpt_uint16 usSendSize = 0;
27456 tSetThermalMitgationType halTmMsg;
27457
27458 /*-------------------------------------------------------------------------
27459 Sanity check
27460 -------------------------------------------------------------------------*/
27461 if (( NULL == pEventData ) ||
27462 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27463 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27464 {
27465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 WDI_ASSERT(0);
27468 return WDI_STATUS_E_FAILURE;
27469 }
27470
27471 /*-----------------------------------------------------------------------
27472 Get message buffer
27473 -----------------------------------------------------------------------*/
27474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27475 sizeof(halTmMsg),
27476 &pSendBuffer, &usDataOffset, &usSendSize))||
27477 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27478 {
27479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27480 "Unable to get send buffer in Set PNO req %x %x %x",
27481 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27482 WDI_ASSERT(0);
27483 return WDI_STATUS_E_FAILURE;
27484 }
27485
27486 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27487 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27488
27489 wpalMemoryCopy( pSendBuffer+usDataOffset,
27490 &halTmMsg,
27491 sizeof(halTmMsg));
27492
27493 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27494 pWDICtx->pfncRspCB = NULL;
27495 /*-------------------------------------------------------------------------
27496 Send Get STA Request to HAL
27497 -------------------------------------------------------------------------*/
27498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27499 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27500}
27501
27502/* Fill the value from the global features enabled array to the global capabilities
27503 * bitmap struct
27504 */
27505static void
27506FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27507{
27508 wpt_int8 i;
27509 for (i=0; i<len; i++)
27510 {
27511 setFeatCaps(fCaps, enabledFeat[i]);
27512 }
27513}
27514
27515/**
27516 @brief WDI_featureCapsExchangeReq
27517 Post feature capability bitmap exchange event.
27518 Host will send its own capability to FW in this req and
27519 expect FW to send its capability back as a bitmap in Response
27520
27521 @param
27522
27523 wdiFeatureCapsExchangeCb: callback called on getting the response.
27524 It is kept to mantain similarity between WDI reqs and if needed, can
27525 be used in future. Currently, It is set to NULL
27526
27527 pUserData: user data will be passed back with the
27528 callback
27529
27530 @see
27531 @return Result of the function call
27532*/
27533WDI_Status
27534WDI_featureCapsExchangeReq
27535(
27536 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27537 void* pUserData
27538)
27539{
27540 WDI_EventInfoType wdiEventData;
27541 wpt_int32 fCapsStructSize;
27542
27543 /*------------------------------------------------------------------------
27544 Sanity Check
27545 ------------------------------------------------------------------------*/
27546 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27547 {
27548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27549 "WDI API call before module is initialized - Fail request");
27550
27551 return WDI_STATUS_E_NOT_ALLOWED;
27552 }
27553
27554 /* Allocate memory separately for global variable carrying FW caps */
27555 fCapsStructSize = sizeof(tWlanFeatCaps);
27556 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27557 if ( NULL == gpHostWlanFeatCaps )
27558 {
27559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27560 "Cannot allocate memory for host capability info\n");
27561 WDI_ASSERT(0);
27562 return WDI_STATUS_MEM_FAILURE;
27563 }
27564
27565 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27566
27567 /*------------------------------------------------------------------------
27568 Fill in Event data and post to the Main FSM
27569 ------------------------------------------------------------------------*/
27570 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27571 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027573 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027574 gpHostWlanFeatCaps->featCaps[0],
27575 gpHostWlanFeatCaps->featCaps[1],
27576 gpHostWlanFeatCaps->featCaps[2],
27577 gpHostWlanFeatCaps->featCaps[3]
27578 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27580 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027581 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27582 wdiEventData.pEventData = gpHostWlanFeatCaps;
27583 wdiEventData.uEventDataSize = fCapsStructSize;
27584 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27585 wdiEventData.pUserData = pUserData;
27586
27587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27588}
27589
27590/**
Yathishd8713192012-12-10 14:21:35 -080027591 @brief Disable Active mode offload in Host
27592
27593 @param void
27594 @see
27595 @return void
27596*/
27597void
27598WDI_disableCapablityFeature(wpt_uint8 feature_index)
27599{
27600 supportEnabledFeatures[feature_index] = 0;
27601 return;
27602}
27603
27604/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 @brief Process Host-FW Capability Exchange Request function
27606
27607 @param pWDICtx: pointer to the WLAN DAL context
27608 pEventData: pointer to the event information structure
27609
27610 @see
27611 @return Result of the function call
27612*/
27613WDI_Status
27614WDI_ProcessFeatureCapsExchangeReq
27615(
27616 WDI_ControlBlockType* pWDICtx,
27617 WDI_EventInfoType* pEventData
27618)
27619{
27620 wpt_uint8* pSendBuffer = NULL;
27621 wpt_uint16 usDataOffset = 0;
27622 wpt_uint16 usSendSize = 0;
27623 wpt_uint16 usLen = 0;
27624
27625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27626
27627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027628 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027629
27630 /*-------------------------------------------------------------------------
27631 Sanity check
27632 -------------------------------------------------------------------------*/
27633 /* Call back function is NULL since not required for cap exchange req */
27634 if (( NULL == pEventData ) ||
27635 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27636 {
27637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027639 WDI_ASSERT(0);
27640 return WDI_STATUS_E_FAILURE;
27641 }
27642
27643 /*-----------------------------------------------------------------------
27644 Get message buffer
27645 -----------------------------------------------------------------------*/
27646 usLen = sizeof(tWlanFeatCaps);
27647
27648 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27649 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27650 usLen,
27651 &pSendBuffer, &usDataOffset, &usSendSize))||
27652 ( usSendSize < (usDataOffset + usLen )))
27653 {
27654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27655 "Unable to get send buffer in feat caps exchange req %x %x",
27656 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27657 WDI_ASSERT(0);
27658 return WDI_STATUS_E_FAILURE;
27659 }
27660
27661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027662 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027663 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27664 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27665 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27666 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27667 );
27668
27669 /* Copy host caps after the offset in the send buffer */
27670 wpalMemoryCopy( pSendBuffer+usDataOffset,
27671 (tWlanFeatCaps *)pEventData->pEventData,
27672 usLen);
27673
27674 /*-------------------------------------------------------------------------
27675 Send Start Request to HAL
27676 -------------------------------------------------------------------------*/
27677 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27678 (WDI_StartRspCb)pEventData->pCBfnc,
27679 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27680
27681}/*WDI_ProcessFeatureCapsExchangeReq*/
27682
27683/**
27684 @brief Process Host-FW Capability Exchange Response function
27685
27686 @param pWDICtx: pointer to the WLAN DAL context
27687 pEventData: pointer to the event information structure
27688
27689 @see
27690 @return Result of the function call
27691*/
27692WDI_Status
27693WDI_ProcessFeatureCapsExchangeRsp
27694(
27695 WDI_ControlBlockType* pWDICtx,
27696 WDI_EventInfoType* pEventData
27697)
27698{
27699 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27700 wpt_int32 fCapsStructSize;
27701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27702
27703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027704 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027705
27706 /*-------------------------------------------------------------------------
27707 Sanity check
27708 -------------------------------------------------------------------------*/
27709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27710 ( NULL == pEventData->pEventData ))
27711 {
27712 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 WDI_ASSERT(0);
27716 return WDI_STATUS_E_FAILURE;
27717 }
27718
27719 /* Allocate memory separately for global variable carrying FW caps */
27720 fCapsStructSize = sizeof(tWlanFeatCaps);
27721 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27722 if ( NULL == gpFwWlanFeatCaps )
27723 {
27724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27725 "Cannot allocate memory for host capability info\n");
27726 WDI_ASSERT(0);
27727 return WDI_STATUS_MEM_FAILURE;
27728 }
27729
27730 /*-------------------------------------------------------------------------
27731 Unpack HAL Response Message - the header was already extracted by the
27732 main Response Handling procedure
27733 -------------------------------------------------------------------------*/
27734 /*-------------------------------------------------------------------------
27735 Extract response and send it to UMAC
27736 -------------------------------------------------------------------------*/
27737
27738 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27739 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027741 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027742 gpFwWlanFeatCaps->featCaps[0],
27743 gpFwWlanFeatCaps->featCaps[1],
27744 gpFwWlanFeatCaps->featCaps[2],
27745 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027746 );
27747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27748 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27750
27751 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27752 if (wdiFeatureCapsExchangeCb != NULL)
27753 wdiFeatureCapsExchangeCb(NULL, NULL);
27754
27755 return WDI_STATUS_SUCCESS;
27756}
27757
Mohit Khanna4a70d262012-09-11 16:30:12 -070027758#ifdef WLAN_FEATURE_11AC
27759WDI_Status
27760WDI_ProcessUpdateVHTOpModeRsp
27761(
27762 WDI_ControlBlockType* pWDICtx,
27763 WDI_EventInfoType* pEventData
27764)
27765{
27766 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27767 WDI_Status wdiStatus;
27768 eHalStatus halStatus;
27769
27770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27771
27772 /*-------------------------------------------------------------------------
27773 Sanity check
27774 -------------------------------------------------------------------------*/
27775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27776 ( NULL == pEventData->pEventData))
27777 {
27778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027779 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027780 WDI_ASSERT(0);
27781 return WDI_STATUS_E_FAILURE;
27782 }
27783 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27784
27785 /*-------------------------------------------------------------------------
27786 Extract response and send it to UMAC
27787 -------------------------------------------------------------------------*/
27788 halStatus = *((eHalStatus*)pEventData->pEventData);
27789 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27790
27791 /*Notify UMAC*/
27792 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27793
27794 return WDI_STATUS_SUCCESS;
27795}
27796#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027797/**
27798 @brief WDI_getHostWlanFeatCaps
27799 WDI API that returns whether the feature passed to it as enum value in
27800 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27801 variable storing host capability bitmap to find this. This can be used by
27802 other moduels to decide certain things like call different APIs based on
27803 whether a particular feature is supported.
27804
27805 @param
27806
27807 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27808
27809 @see
27810 @return
27811 0 - if the feature is NOT supported in host
27812 any non-zero value - if the feature is SUPPORTED in host.
27813*/
27814wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27815{
27816 wpt_uint8 featSupported = 0;
27817 if (gpHostWlanFeatCaps != NULL)
27818 {
27819 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27820 }
27821 else
27822 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027824 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027825 }
27826 return featSupported;
27827}
27828
27829/**
27830 @brief WDI_getFwWlanFeatCaps
27831 WDI API that returns whether the feature passed to it as enum value in
27832 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27833 variable storing host capability bitmap to find this. This can be used by
27834 other moduels to decide certain things like call different APIs based on
27835 whether a particular feature is supported.
27836
27837 @param
27838
27839 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27840 in wlan_hal_msg.h.
27841
27842 @see
27843 @return
27844 0 - if the feature is NOT supported in FW
27845 any non-zero value - if the feature is SUPPORTED in FW.
27846*/
27847wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27848{
27849 wpt_uint8 featSupported = 0;
27850 if (gpFwWlanFeatCaps != NULL)
27851 {
27852 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27853 }
27854 else
27855 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027857 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 }
27859 return featSupported;
27860}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027861
27862#ifdef WLAN_FEATURE_11AC
27863WDI_Status
27864WDI_ProcessUpdateVHTOpModeReq
27865(
27866 WDI_ControlBlockType* pWDICtx,
27867 WDI_EventInfoType* pEventData
27868)
27869{
27870 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27871 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27872 wpt_uint8* pSendBuffer = NULL;
27873 wpt_uint16 usDataOffset = 0;
27874 wpt_uint16 usSendSize = 0;
27875
27876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27877
27878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027879 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027880
27881 /*-------------------------------------------------------------------------
27882 Sanity check
27883 -------------------------------------------------------------------------*/
27884 if (( NULL == pEventData ) ||
27885 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27886 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27887 {
27888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027889 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027890 WDI_ASSERT(0);
27891 return WDI_STATUS_E_FAILURE;
27892 }
27893
27894 /*-----------------------------------------------------------------------
27895 Get message buffer
27896 -----------------------------------------------------------------------*/
27897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27898 sizeof(WDI_UpdateVHTOpMode),
27899 &pSendBuffer, &usDataOffset, &usSendSize))||
27900 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27901 {
27902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27903 "Unable to get send buffer in update vht opMode req");
27904 WDI_ASSERT(0);
27905 return WDI_STATUS_E_FAILURE;
27906 }
27907
27908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27909 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27910
27911 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27912 sizeof(WDI_UpdateVHTOpMode));
27913
27914 /*-------------------------------------------------------------------------
27915 Send Start Request to HAL
27916 -------------------------------------------------------------------------*/
27917 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27918 wdiVHTOpModeCb,
27919 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27920
27921}
27922
27923WDI_Status
27924WDI_UpdateVHTOpModeReq
27925(
27926 WDI_UpdateVHTOpMode *pData,
27927 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27928 void* pUserData
27929)
27930{
27931 WDI_EventInfoType wdiEventData;
27932
27933 /*------------------------------------------------------------------------
27934 Sanity Check
27935 ------------------------------------------------------------------------*/
27936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27937 {
27938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27939 "WDI API call before module is initialized - Fail request");
27940
27941 return WDI_STATUS_E_NOT_ALLOWED;
27942 }
27943
27944 /*------------------------------------------------------------------------
27945 Fill in Event data and post to the Main FSM
27946 ------------------------------------------------------------------------*/
27947 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27948 wdiEventData.pEventData = pData;
27949 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27950 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27951 wdiEventData.pUserData = pUserData;
27952
27953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27954 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27955
27956 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27957
27958}
27959#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027960
27961/**
27962 @brief WDI_TransportChannelDebug -
27963 Display DXE Channel debugging information
27964 User may request to display DXE channel snapshot
27965 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027966
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027967 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027968 @param enableStallDetect : Enable stall detect feature
27969 This feature will take effect to data performance
27970 Not integrate till fully verification
27971 @see
27972 @return none
27973*/
27974void WDI_TransportChannelDebug
27975(
27976 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027977 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027978)
27979{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027980 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027981 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070027982}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070027983/**
27984 @brief WDI_SsrTimerCB
27985 Callback function for SSR timer, if this is called then the graceful
27986 shutdown for Riva did not happen.
27987
27988 @param pUserData : user data to timer
27989
27990 @see
27991 @return none
27992*/
27993void
27994WDI_SsrTimerCB
27995(
27996 void *pUserData
27997)
27998{
27999 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28001
28002 if (NULL == pWDICtx )
28003 {
28004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028005 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028006 WDI_ASSERT(0);
28007 return;
28008 }
28009 wpalRivaSubystemRestart();
28010
28011 return;
28012
28013}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028014
28015/**
28016 @brief WDI_SetEnableSSR -
28017 This API is called to enable/disable SSR on WDI timeout.
28018
28019 @param enableSSR : enable/disable SSR
28020
28021 @see
28022 @return none
28023*/
28024void WDI_SetEnableSSR(wpt_boolean enableSSR)
28025{
28026 gWDICb.bEnableSSR = enableSSR;
28027}
Leo Chang00bc9132013-08-01 19:21:11 -070028028
28029
28030#ifdef FEATURE_WLAN_LPHB
28031/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028032 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028033 This function will be invoked when FW detects low power
28034 heart beat failure
28035
28036 @param pWDICtx : wdi context
28037 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028038 @see
28039 @return Result of the function call
28040*/
28041WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028042WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028043(
28044 WDI_ControlBlockType* pWDICtx,
28045 WDI_EventInfoType* pEventData
28046)
28047{
28048 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028049 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28051
28052 /*-------------------------------------------------------------------------
28053 Sanity check
28054 -------------------------------------------------------------------------*/
28055 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28056 (NULL == pEventData->pEventData))
28057 {
28058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28059 "%s: Invalid parameters", __func__);
28060 WDI_ASSERT(0);
28061 return WDI_STATUS_E_FAILURE;
28062 }
28063
28064 /*-------------------------------------------------------------------------
28065 Extract indication and send it to UMAC
28066 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028067 wpalMemoryCopy(&lphbIndicationParam,
28068 pEventData->pEventData,
28069 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028070
Leo Chang8d19a5f2013-09-26 13:32:26 -070028071 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028072 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028073 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028074 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028075 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028076 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028077 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028078 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028079 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028080 /*Notify UMAC*/
28081 if (pWDICtx->wdiLowLevelIndCB)
28082 {
28083 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28084 }
28085
28086 return WDI_STATUS_SUCCESS;
28087}
28088
28089/**
28090 @brief WDI_ProcessLphbCfgRsp -
28091 LPHB configuration response from FW
28092
28093 @param pWDICtx : wdi context
28094 pEventData : indication data
28095
28096 @see
28097 @return Result of the function call
28098*/
28099WDI_Status WDI_ProcessLphbCfgRsp
28100(
28101 WDI_ControlBlockType* pWDICtx,
28102 WDI_EventInfoType* pEventData
28103)
28104{
28105 WDI_Status wdiStatus;
28106 eHalStatus halStatus;
28107 WDI_LphbCfgCb wdiLphbCfgCb;
28108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28109
28110 /*-------------------------------------------------------------------------
28111 Sanity check
28112 -------------------------------------------------------------------------*/
28113 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28114 (NULL == pEventData->pEventData))
28115 {
28116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28117 "%s: Invalid parameters", __func__);
28118 WDI_ASSERT(0);
28119 return WDI_STATUS_E_FAILURE;
28120 }
28121
28122 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28123
28124 /*-------------------------------------------------------------------------
28125 Extract response and send it to UMAC
28126 -------------------------------------------------------------------------*/
28127 halStatus = *((eHalStatus*)pEventData->pEventData);
28128 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28129
28130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28131 "LPHB Cfg Rsp Return status %d", wdiStatus);
28132 /*Notify UMAC*/
28133 if (NULL != wdiLphbCfgCb)
28134 {
28135 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28136 }
28137
28138 return WDI_STATUS_SUCCESS;
28139}
28140
28141/**
28142 @brief WDI_ProcessLPHBConfReq -
28143 LPHB configuration request to FW
28144
28145 @param pWDICtx : wdi context
28146 pEventData : indication data
28147
28148 @see
28149 @return none
28150*/
28151WDI_Status WDI_ProcessLPHBConfReq
28152(
28153 WDI_ControlBlockType* pWDICtx,
28154 WDI_EventInfoType* pEventData
28155)
28156{
28157 WDI_LPHBReq *pLphbReqParams;
28158 WDI_Status wdiStatus;
28159 wpt_uint8* pSendBuffer = NULL;
28160 wpt_uint16 usDataOffset = 0;
28161 wpt_uint16 usSendSize = 0;
28162 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28164
28165 /*-------------------------------------------------------------------------
28166 Sanity check
28167 -------------------------------------------------------------------------*/
28168 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28169 {
28170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28171 "%s: Invalid parameters in Suspend ind",__func__);
28172 WDI_ASSERT(0);
28173 return WDI_STATUS_E_FAILURE;
28174 }
28175
28176 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28177
28178 /*-----------------------------------------------------------------------
28179 Get message buffer
28180 -----------------------------------------------------------------------*/
28181 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28182 WDI_LPHB_CFG_REQ,
28183 sizeof(tHalLowPowerHeartBeatReqMsg),
28184 &pSendBuffer, &usDataOffset, &usSendSize))||
28185 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28186 {
28187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28188 "Unable to get send buffer in LPHB Ind ");
28189 WDI_ASSERT(0);
28190 return WDI_STATUS_E_FAILURE;
28191 }
28192
28193 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28194 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28195
28196 halLphbReqRarams->lowPowerHeartBeatCmdType =
28197 (tANI_U16)(++pLphbReqParams->cmd);
28198 switch ((tANI_U16)pLphbReqParams->cmd)
28199 {
28200 case WDI_LPHB_SET_EN_PARAMS_INDID:
28201 halLphbReqRarams->sessionIdx =
28202 pLphbReqParams->params.lphbEnableReq.session;
28203 halLphbReqRarams->options.control.heartBeatEnable =
28204 pLphbReqParams->params.lphbEnableReq.enable;
28205 halLphbReqRarams->options.control.heartBeatType =
28206 pLphbReqParams->params.lphbEnableReq.item;
28207 break;
28208
28209 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28210 halLphbReqRarams->sessionIdx =
28211 pLphbReqParams->params.lphbTcpParamReq.session;
28212 halLphbReqRarams->options.tcpParams.timeOutSec =
28213 pLphbReqParams->params.lphbTcpParamReq.timeout;
28214 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28215 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28216 sizeof(v_U32_t));
28217 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28218 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28219 sizeof(v_U32_t));
28220
28221 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28222 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28223 WDI_MAC_ADDR_LEN);
28224
28225 halLphbReqRarams->options.tcpParams.hostPort =
28226 pLphbReqParams->params.lphbTcpParamReq.src_port;
28227 halLphbReqRarams->options.tcpParams.destPort =
28228 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028229 halLphbReqRarams->options.tcpParams.timePeriodSec =
28230 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28231 halLphbReqRarams->options.tcpParams.tcpSn =
28232 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028233 break;
28234
28235 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28236 halLphbReqRarams->sessionIdx =
28237 pLphbReqParams->params.lphbTcpFilterReq.session;
28238 halLphbReqRarams->options.tcpUdpFilter.offset =
28239 pLphbReqParams->params.lphbTcpFilterReq.offset;
28240 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28241 pLphbReqParams->params.lphbTcpFilterReq.length;
28242 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28243 pLphbReqParams->params.lphbTcpFilterReq.filter,
28244 WDI_LPHB_FILTER_LEN);
28245 break;
28246
28247 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28248 halLphbReqRarams->sessionIdx =
28249 pLphbReqParams->params.lphbUdpParamReq.session;
28250 halLphbReqRarams->options.udpParams.timeOutSec =
28251 pLphbReqParams->params.lphbUdpParamReq.timeout;
28252 halLphbReqRarams->options.udpParams.timePeriodSec =
28253 pLphbReqParams->params.lphbUdpParamReq.interval;
28254 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28255 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28256 sizeof(v_U32_t));
28257 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28258 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28259 sizeof(v_U32_t));
28260
28261 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28262 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28263 WDI_MAC_ADDR_LEN);
28264
28265 halLphbReqRarams->options.udpParams.hostPort =
28266 pLphbReqParams->params.lphbUdpParamReq.src_port;
28267 halLphbReqRarams->options.udpParams.destPort =
28268 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28269 break;
28270
28271 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28272 halLphbReqRarams->sessionIdx =
28273 pLphbReqParams->params.lphbUdpFilterReq.session;
28274 halLphbReqRarams->options.tcpUdpFilter.offset =
28275 pLphbReqParams->params.lphbUdpFilterReq.offset;
28276 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28277 pLphbReqParams->params.lphbUdpFilterReq.length;
28278 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28279 pLphbReqParams->params.lphbUdpFilterReq.filter,
28280 WDI_LPHB_FILTER_LEN);
28281 break;
28282
28283 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28284 /* NA */
28285 break;
28286
28287 default:
28288 break;
28289 }
28290
28291 /*-------------------------------------------------------------------------
28292 Send Suspend Request to HAL
28293 -------------------------------------------------------------------------*/
28294 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28295 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28296
28297 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28298 usSendSize, pWDICtx->pfncRspCB,
28299 pWDICtx->pReqStatusUserData,
28300 WDI_LPHB_CFG_RESP);
28301
28302 return wdiStatus;
28303}
28304
28305/**
28306 @brief WDI_LPHBConfReq -
28307 LPHB configuration request API
28308
28309 @param lphbconfParam : configuration parameter
28310 usrData : client context
28311 lphbCfgCb : callback function pointer
28312
28313 @see
28314 @return Success or fail status code
28315*/
28316WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28317 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28318{
28319 WDI_EventInfoType wdiEventData;
28320
28321 /*------------------------------------------------------------------------
28322 Sanity Check
28323 ------------------------------------------------------------------------*/
28324 if (eWLAN_PAL_FALSE == gWDIInitialized)
28325 {
28326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28327 "WDI API call before module is initialized - Fail request");
28328
28329 return WDI_STATUS_E_NOT_ALLOWED;
28330 }
28331
28332 /*------------------------------------------------------------------------
28333 Fill in Event data and post to the Main FSM
28334 ------------------------------------------------------------------------*/
28335 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28336 wdiEventData.pEventData = lphbconfParam;
28337 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28338 wdiEventData.pCBfnc = lphbCfgCb;
28339 wdiEventData.pUserData = usrData;
28340
28341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28342}
28343#endif /* FEATURE_WLAN_LPHB */
28344
Ravi Joshi96d77342013-07-23 08:37:49 -070028345/**
28346 @brief WDI_ProcessIbssPeerInactivityInd
28347 Process peer inactivity indication coming from HAL
28348
28349 @param pWDICtx: pointer to the WLAN DAL context
28350 pEventData: pointer to the event information structure
28351 @see
28352 @return Result of the function call
28353*/
28354WDI_Status
28355WDI_ProcessIbssPeerInactivityInd
28356(
28357 WDI_ControlBlockType* pWDICtx,
28358 WDI_EventInfoType* pEventData
28359)
28360{
28361 WDI_LowLevelIndType wdiInd;
28362 tIbssPeerInactivityIndMsg halIbssIndMsg;
28363
28364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28365
28366 /*-------------------------------------------------------------------------
28367 Sanity check
28368 -------------------------------------------------------------------------*/
28369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28370 ( NULL == pEventData->pEventData ))
28371 {
28372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28373 "%s: Invalid parameters", __func__);
28374 WDI_ASSERT( 0 );
28375 return WDI_STATUS_E_FAILURE;
28376 }
28377
28378 /*-------------------------------------------------------------------------
28379 Extract indication and send it to UMAC
28380 -------------------------------------------------------------------------*/
28381 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28382 pEventData->pEventData,
28383 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28384
28385 /*Fill in the indication parameters*/
28386 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28387
28388 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28389 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28390
28391 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28392 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28393
28394 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28395 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28396 sizeof(tSirMacAddr));
28397
28398 /*Notify UMAC*/
28399 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28400
28401 return WDI_STATUS_SUCCESS;
28402
28403} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028404
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028405/**
28406*@brief WDI_RateUpdateInd will be called when the upper MAC
28407 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028408
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028409
28410 @param wdiRateUpdateIndParams:
28411
28412
28413 @see
28414 @return Result of the function call
28415*/
28416WDI_Status
28417WDI_RateUpdateInd
28418(
28419 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28420)
28421{
28422 WDI_EventInfoType wdiEventData;
28423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28424
28425 /*------------------------------------------------------------------------
28426 Sanity Check
28427 ------------------------------------------------------------------------*/
28428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28429 {
28430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28431 "WDI API call before module is initialized - Fail request");
28432
28433 return WDI_STATUS_E_NOT_ALLOWED;
28434 }
28435
28436 /*------------------------------------------------------------------------
28437 Fill in Event data and post to the Main FSM
28438 ------------------------------------------------------------------------*/
28439 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28440 wdiEventData.pEventData = wdiRateUpdateIndParams;
28441 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28442 wdiEventData.pCBfnc = NULL;
28443 wdiEventData.pUserData = NULL;
28444
28445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28446
28447}/* WDI_RateUpdateInd */
28448
28449/**
28450 @brief Process Rate Update Indication and post it to HAL
28451
28452 @param pWDICtx: pointer to the WLAN DAL context
28453 pEventData: pointer to the event information structure
28454
28455 @see
28456 @return Result of the function call
28457*/
28458WDI_Status
28459WDI_ProcessRateUpdateInd
28460(
28461 WDI_ControlBlockType* pWDICtx,
28462 WDI_EventInfoType* pEventData
28463)
28464{
28465 wpt_uint8* pSendBuffer = NULL;
28466 wpt_uint16 usDataOffset = 0;
28467 wpt_uint16 usSendSize = 0;
28468 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28469 tHalRateUpdateInd *pRateUpdateInd;
28470 WDI_Status wdiStatus;
28471
28472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28473
28474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28475 "%s", __func__);
28476
28477 /*-------------------------------------------------------------------------
28478 Sanity check
28479 -------------------------------------------------------------------------*/
28480 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28481 {
28482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28483 "%s: Invalid parameters", __func__);
28484 WDI_ASSERT(0);
28485 return WDI_STATUS_E_FAILURE;
28486 }
28487 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28488 /*-----------------------------------------------------------------------
28489 Get message buffer
28490 -----------------------------------------------------------------------*/
28491
28492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28493 WDI_RATE_UPDATE_IND,
28494 sizeof(tHalRateUpdateParams),
28495 &pSendBuffer, &usDataOffset, &usSendSize))||
28496 ( usSendSize < (usDataOffset +
28497 sizeof(tHalRateUpdateParams) )))
28498 {
28499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28500 "Unable to get send buffer in Rate Update Indication %p ",
28501 pEventData);
28502 WDI_ASSERT(0);
28503 return WDI_STATUS_E_FAILURE;
28504 }
28505
28506 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28507
28508 /* Copy the bssid */
28509 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28510 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28511
28512 /* Copy the tx flags */
28513 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28514 pwdiRateUpdateInd->ucastDataRateTxFlag;
28515 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28516 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28517 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28518 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28519 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28520 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28521
28522 /* Copy the tx rates */
28523 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28524 pwdiRateUpdateInd->ucastDataRate;
28525 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28526 pwdiRateUpdateInd->reliableMcastDataRate;
28527 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28528 pwdiRateUpdateInd->mcastDataRate24GHz;
28529 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28530 pwdiRateUpdateInd->mcastDataRate5GHz;
28531
28532 /*-------------------------------------------------------------------------
28533 Send Rate Update Indication to HAL
28534 -------------------------------------------------------------------------*/
28535 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28536 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28537
28538 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28539
28540 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28541 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28542
28543} /* WDI_ProcessRateUpdateInd */
28544
28545#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028546/**
28547 @brief Process stop batch indication from WDA
28548
28549 @param pWDICtx: pointer to the WLAN DAL context
28550 pEventData: pointer to the event information structure
28551
28552 @see
28553 @return Result of the function call
28554*/
28555WDI_Status
28556WDI_ProcessStopBatchScanInd
28557(
28558 WDI_ControlBlockType* pWDICtx,
28559 WDI_EventInfoType* pEventData
28560)
28561{
28562 wpt_uint8* pSendBuffer = NULL;
28563 wpt_uint16 usDataOffset = 0;
28564 wpt_uint16 usSendSize = 0;
28565 WDI_Status wdiStatus;
28566 tHalBatchScanStopIndParam *pHalInd = NULL;
28567 WDI_StopBatchScanIndType *pWdiInd = NULL;
28568
28569
28570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28571
28572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28573 "%s", __func__);
28574
28575 /*-------------------------------------------------------------------------
28576 Sanity check
28577 -------------------------------------------------------------------------*/
28578
28579 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28580 {
28581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28582 "%s: Invalid parameters", __func__);
28583 WDI_ASSERT(0);
28584 return WDI_STATUS_E_FAILURE;
28585 }
28586 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28587 /*-----------------------------------------------------------------------
28588 Get message buffer
28589 -----------------------------------------------------------------------*/
28590
28591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28592 WDI_STOP_BATCH_SCAN_IND,
28593 sizeof(tHalBatchScanStopIndParam),
28594 &pSendBuffer, &usDataOffset, &usSendSize))||
28595 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28596 {
28597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28598 "Unable to get send buffer in stop batch scan ind %p ",
28599 pEventData);
28600 WDI_ASSERT(0);
28601 return WDI_STATUS_E_FAILURE;
28602 }
28603
28604 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28605 pHalInd->param = pWdiInd->param;
28606
28607 pWDICtx->pReqStatusUserData = NULL;
28608 pWDICtx->pfncRspCB = NULL;
28609 /*-------------------------------------------------------------------------
28610 Send Stop batch scan indication to HAL
28611 -------------------------------------------------------------------------*/
28612 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28613 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28614}
28615
28616/**
28617 @brief This API is called to trigger batch scan results from FW
28618
28619 @param pWDICtx: pointer to the WLAN DAL context
28620 pEventData: pointer to the event information structure
28621
28622 @see
28623 @return Result of the function call
28624*/
28625WDI_Status
28626WDI_ProcessTriggerBatchScanResultInd
28627(
28628 WDI_ControlBlockType* pWDICtx,
28629 WDI_EventInfoType* pEventData
28630)
28631{
28632 WDI_Status wdiStatus;
28633 wpt_uint8* pSendBuffer = NULL;
28634 wpt_uint16 usDataOffset = 0;
28635 wpt_uint16 usSendSize = 0;
28636 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28637 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28638
28639
28640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28641
28642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28643 "%s", __func__);
28644
28645 /*-------------------------------------------------------------------------
28646 Sanity check
28647 -------------------------------------------------------------------------*/
28648
28649 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28650 {
28651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28652 "%s: Invalid parameters", __func__);
28653 WDI_ASSERT(0);
28654 return WDI_STATUS_E_FAILURE;
28655 }
28656 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28657 /*-----------------------------------------------------------------------
28658 Get message buffer
28659 -----------------------------------------------------------------------*/
28660
28661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28662 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28663 sizeof(tHalBatchScanTriggerResultParam),
28664 &pSendBuffer, &usDataOffset, &usSendSize))||
28665 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28666 {
28667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28668 "Unable to get send buffer in stop batch scan ind %p ",
28669 pEventData);
28670 WDI_ASSERT(0);
28671 return WDI_STATUS_E_FAILURE;
28672 }
28673
28674 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28675 pHalInd->param = pWdiInd->param;
28676
28677 pWDICtx->pReqStatusUserData = NULL;
28678 pWDICtx->pfncRspCB = NULL;
28679 /*-------------------------------------------------------------------------
28680 Send trigger batch scan result indication to HAL
28681 -------------------------------------------------------------------------*/
28682 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28683 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28684}
28685
28686
28687/**
28688 @brief Process set batch scan response from FW
28689
28690 @param pWDICtx: pointer to the WLAN DAL context
28691 pEventData: pointer to the event information structure
28692
28693 @see
28694 @return Result of the function call
28695*/
28696WDI_Status
28697WDI_ProcessSetBatchScanRsp
28698(
28699 WDI_ControlBlockType* pWDICtx,
28700 WDI_EventInfoType* pEventData
28701)
28702{
28703 WDI_SetBatchScanCb wdiSetBatchScanCb;
28704 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28705
28706 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28708
28709 /*sanity check*/
28710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28711 ( NULL == pEventData->pEventData))
28712 {
28713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28714 "%s: Invalid parameters", __func__);
28715 WDI_ASSERT(0);
28716 return WDI_STATUS_E_FAILURE;
28717 }
28718
28719 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28720 if ( NULL == wdiSetBatchScanCb)
28721 {
28722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28723 "%s: call back function is NULL", __func__);
28724 WDI_ASSERT(0);
28725 return WDI_STATUS_E_FAILURE;
28726 }
28727
28728 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28729
28730 if (NULL == pSetBatchScanRsp)
28731 {
28732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28733 "Failed to allocate memory in set batch scan response %x %x %x ",
28734 pWDICtx, pEventData, pEventData->pEventData);
28735 WDI_ASSERT(0);
28736 return WDI_STATUS_E_FAILURE;
28737 }
28738
28739 /*extract response and send it to UMAC*/
28740 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28741
28742 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28743
28744 /*Notify UMAC*/
28745 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28746
28747 wpalMemoryFree(pSetBatchScanRsp);
28748
28749 return WDI_STATUS_SUCCESS;
28750}/*WDI_ProcessSetBatchScanRsp*/
28751
28752/**
28753 @brief Process batch scan result indication from FW
28754
28755 @param pWDICtx: pointer to the WLAN DAL context
28756 pEventData: pointer to the event information structure
28757
28758 @see
28759 @return Result of the function call
28760*/
28761WDI_Status
28762WDI_ProcessBatchScanResultInd
28763(
28764 WDI_ControlBlockType* pWDICtx,
28765 WDI_EventInfoType* pEventData
28766)
28767{
28768 void *pBatchScanResultInd;
28769 WDI_LowLevelIndType wdiInd;
28770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28771
28772 /*sanity check*/
28773 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28774 ( NULL == pEventData->pEventData))
28775 {
28776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28777 "%s: Invalid parameters", __func__);
28778 WDI_ASSERT(0);
28779 return WDI_STATUS_E_FAILURE;
28780 }
28781
28782 /*extract response and send it to UMAC*/
28783 pBatchScanResultInd = (void *)pEventData->pEventData;
28784
28785 /*Fill in the indication parameters*/
28786 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28787
28788 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28789
28790 /*Notify UMAC*/
28791 if (pWDICtx->wdiLowLevelIndCB)
28792 {
28793 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28794 }
28795 else
28796 {
28797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28798 "%s: WDILowLevelIndCb is null", __func__);
28799 WDI_ASSERT(0);
28800 return WDI_STATUS_E_FAILURE;
28801 }
28802
28803 return WDI_STATUS_SUCCESS;
28804} /*End of WDI_ProcessBatchScanResultInd*/
28805
28806/**
28807 @brief WDI_ProcessSetBatchScanReq -
28808 Set batch scan request to FW
28809
28810 @param pWDICtx : wdi context
28811 pEventData : indication data
28812
28813 @see
28814 @return none
28815*/
28816WDI_Status WDI_ProcessSetBatchScanReq
28817(
28818 WDI_ControlBlockType* pWDICtx,
28819 WDI_EventInfoType* pEventData
28820)
28821{
28822 WDI_SetBatchScanReqType *pWdiReq;
28823 WDI_Status wdiStatus;
28824 wpt_uint8* pSendBuffer = NULL;
28825 wpt_uint16 usDataOffset = 0;
28826 wpt_uint16 usSendSize = 0;
28827 tHalBatchScanSetParams *pHalReq;
28828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28829
28830 /*sanity check*/
28831 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28832 {
28833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28834 "%s: Invalid parameters in set batch scan request", __func__);
28835 WDI_ASSERT(0);
28836 return WDI_STATUS_E_FAILURE;
28837 }
28838
28839
28840 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
28841
28842
28843 /*get message buffer*/
28844 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28845 WDI_SET_BATCH_SCAN_REQ,
28846 sizeof(tHalBatchScanSetParams),
28847 &pSendBuffer, &usDataOffset, &usSendSize))||
28848 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
28849 {
28850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28851 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
28852 WDI_ASSERT(0);
28853 return WDI_STATUS_E_FAILURE;
28854 }
28855
28856 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
28857
28858 pHalReq->rtt = pWdiReq->rtt;
28859 pHalReq->rfBand = pWdiReq->rfBand;
28860 pHalReq->bestNetworks = pWdiReq->bestNetwork;
28861 pHalReq->scanInterval = pWdiReq->scanFrequency;
28862 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
28863
28864 /*send set batch scan request to fw*/
28865 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28866 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28867
28868 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28869 usSendSize, pWDICtx->pfncRspCB,
28870 pWDICtx->pReqStatusUserData,
28871 WDI_SET_BATCH_SCAN_RESP);
28872
28873 return wdiStatus;
28874}
28875
28876/**
28877 @brief WDI_SetBatchScanReq
28878 This API is called to set batch scan request in FW
28879
28880 @param pBatchScanReqParam : pointer to set batch scan re param
28881 usrData : Client context
28882 setBatchScanRspCb : set batch scan resp callback
28883 @see
28884 @return SUCCESS or FAIL
28885*/
28886WDI_Status WDI_SetBatchScanReq
28887(
28888 void *pBatchScanReqParam,
28889 void *usrData,
28890 WDI_SetBatchScanCb setBatchScanRspCb
28891)
28892{
28893 WDI_EventInfoType wdiEventData;
28894
28895 /*sanity check*/
28896 if (eWLAN_PAL_FALSE == gWDIInitialized)
28897 {
28898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28899 "WDI API call before module is initialized - Fail request");
28900
28901 return WDI_STATUS_E_NOT_ALLOWED;
28902 }
28903
28904 /* fill in event data and post to the main FSM */
28905 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
28906 wdiEventData.pEventData = pBatchScanReqParam;
28907 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
28908 wdiEventData.pCBfnc = setBatchScanRspCb;
28909 wdiEventData.pUserData = usrData;
28910
28911 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28912}
28913
28914/**
28915 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
28916
28917 @param None
28918
28919 @see
28920
28921 @return Status of the request
28922*/
28923WDI_Status
28924WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
28925{
28926 WDI_EventInfoType wdiEventData;
28927
28928 /*-------------------------------------------------------------------------
28929 Sanity Check
28930 ------------------------------------------------------------------------*/
28931 if (eWLAN_PAL_FALSE == gWDIInitialized)
28932 {
28933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28934 "WDI API call before module is initialized - Fail request!");
28935
28936 return WDI_STATUS_E_NOT_ALLOWED;
28937 }
28938
28939 /*-------------------------------------------------------------------------
28940 Fill in Event data and post to the Main FSM
28941 ------------------------------------------------------------------------*/
28942 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
28943 wdiEventData.pEventData = pWdiReq;
28944 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
28945 wdiEventData.pCBfnc = NULL;
28946 wdiEventData.pUserData = NULL;
28947
28948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28949}
28950
28951/**
28952 @brief WDI_TriggerBatchScanResultInd
28953 This API is called to pull batch scan result from FW
28954
28955 @param pWdiReq : pointer to get batch scan ind param
28956 @see
28957 @return SUCCESS or FAIL
28958*/
28959WDI_Status WDI_TriggerBatchScanResultInd
28960(
28961 WDI_TriggerBatchScanResultIndType *pWdiReq
28962)
28963{
28964 WDI_EventInfoType wdiEventData;
28965 /*-------------------------------------------------------------------------
28966 Sanity Check
28967 ------------------------------------------------------------------------*/
28968 if (eWLAN_PAL_FALSE == gWDIInitialized)
28969 {
28970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28971 "WDI API call before module is initialized - Fail request!");
28972
28973 return WDI_STATUS_E_NOT_ALLOWED;
28974 }
28975
28976 /*-------------------------------------------------------------------------
28977 Fill in Event data and post to the Main FSM
28978 ------------------------------------------------------------------------*/
28979 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
28980 wdiEventData.pEventData = pWdiReq;
28981 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
28982 wdiEventData.pCBfnc = NULL;
28983 wdiEventData.pUserData = NULL;
28984
28985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28986}
28987
28988#endif /*FEATURE_WLAN_BATCH_SCAN*/