blob: 0c83dacfc34e39406788c8f439fd2dfafb6d6d67 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Srikant Kuppa17ef2a62013-08-29 15:27:56 -0700106#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
108/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700109 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700110 ===========================================================================*/
111#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
112
Jeff Johnsone7245742012-09-05 17:12:55 -0700113#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
114#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
115
Yue Ma70627492013-03-28 11:33:46 -0700116#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700117
118#ifdef FEATURE_WLAN_SCAN_PNO
119#define WDI_PNO_VERSION_MASK 0x8000
120#endif
121
122/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700123static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700124/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700125static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700126/* array of features supported. Need to add a new feature
127 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
128 */
129static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800130 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800131#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700132 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800136#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700137 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800138#else
139 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800140#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700141 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800142#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700143 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800144#else
145 ,FEATURE_NOT_SUPPORTED
146#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700147 ,FEATURE_NOT_SUPPORTED //9
148 ,FEATURE_NOT_SUPPORTED //10
149 ,FEATURE_NOT_SUPPORTED //11
150 ,FEATURE_NOT_SUPPORTED //12
151 ,FEATURE_NOT_SUPPORTED //13
152 ,FEATURE_NOT_SUPPORTED //14
153 ,FEATURE_NOT_SUPPORTED //15
154 ,FEATURE_NOT_SUPPORTED //16
155 ,FEATURE_NOT_SUPPORTED //17
156 ,FEATURE_NOT_SUPPORTED //18
157 ,FEATURE_NOT_SUPPORTED //19
158 ,FEATURE_NOT_SUPPORTED //20
159 ,FEATURE_NOT_SUPPORTED //21
Yue Mae2e09da2013-08-26 10:59:03 -0700160 ,WOW //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700161#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Mae2e09da2013-08-26 10:59:03 -0700162 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700163#else
164 ,FEATURE_NOT_SUPPORTED
165#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700166 ,FEATURE_NOT_SUPPORTED //24
167 ,FEATURE_NOT_SUPPORTED //25
168 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Mae2e09da2013-08-26 10:59:03 -0700169 ,FEATURE_NOT_SUPPORTED //27
170 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudi5aa244c2013-09-13 19:36:52 +0530171#ifdef FEATURE_WLAN_TDLS
172 ,ADVANCE_TDLS //29
173#else
174 ,FEATURE_NOT_SUPPORTED //29
175#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800176 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700177
178/*--------------------------------------------------------------------------
179 WLAN DAL State Machine
180 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700181WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700182{
183 /*WDI_INIT_ST*/
184 {{
185 WDI_MainStart, /*WDI_START_EVENT*/
186 NULL, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
189 WDI_MainClose, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
191 }},
192
193 /*WDI_STARTED_ST*/
194 {{
195 WDI_MainStartStarted, /*WDI_START_EVENT*/
196 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
197 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
198 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
199 NULL, /*WDI_CLOSE_EVENT*/
200 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
201 }},
202
203 /*WDI_STOPPED_ST*/
204 {{
205 WDI_MainStart, /*WDI_START_EVENT*/
206 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
207 NULL, /*WDI_REQUEST_EVENT*/
208 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
209 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700210 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700211 }},
212
213 /*WDI_BUSY_ST*/
214 {{
215 WDI_MainStartBusy, /*WDI_START_EVENT*/
216 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
217 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
218 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
219 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
220 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
221 }}
222};
223
Jeff Johnsone7245742012-09-05 17:12:55 -0700224/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700225 DAL Request Processing Array - the functions in this table will only be
226 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700227 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700228 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700229WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700230{
231 /*INIT*/
232 WDI_ProcessStartReq, /* WDI_START_REQ */
233 WDI_ProcessStopReq, /* WDI_STOP_REQ */
234 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
235
236 /*SCAN*/
237 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
238 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
239 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
240 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
241
242 /*ASSOCIATION*/
243 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
244 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
245 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
246 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
247 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
248
249 /* Security */
250 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
251 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
252 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
253 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
254
255 /* QoS and BA APIs */
256 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
257 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
258 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
259 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
260 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
261
262 /* Miscellaneous Control APIs */
263 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
264 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
265 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
266 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
267 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
268
269 /*BA APIs*/
270 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
271 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
272
273 /*Beacon processing APIs*/
274 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
275 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
276
277 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
278 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
279 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
280 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 /* PowerSave APIs */
283 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
284 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
285 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
286 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
287 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
288 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
289 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
290 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
291 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
292 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
293 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
294 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
295 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
296 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
297 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
298 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
299 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
300 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
301 /*NV Download APIs*/
302 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
303 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
304 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
305#ifdef WLAN_FEATURE_VOWIFI_11R
306 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
307#else
308 NULL,
309#endif /* WLAN_FEATURE_VOWIFI_11R */
310 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
311 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313
314#ifdef FEATURE_OEM_DATA_SUPPORT
315 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
316#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700318#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700319 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700320
321 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700322
323#ifdef FEATURE_WLAN_SCAN_PNO
324 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
325 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
326 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
327#else
328 NULL,
329 NULL,
330 NULL,
331#endif /* FEATURE_WLAN_SCAN_PNO */
332
333 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334
Jeff Johnson295189b2012-06-20 16:38:30 -0700335#ifdef WLAN_FEATURE_PACKET_FILTERING
336 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700337 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700338 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700339 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700340 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700341 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700343 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700344#else
345 NULL,
346 NULL,
347 NULL,
348 NULL,
349#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700350 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
352 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
353
354 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
355#ifdef FEATURE_WLAN_CCX
356 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
357#else
358 NULL,
359#endif
360
361#ifdef WLAN_FEATURE_GTK_OFFLOAD
362 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
363 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
364#else
365 NULL,
366 NULL,
367#endif // WLAN_FEATURE_GTK_OFFLOAD
368
369 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
370 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700371#ifdef WLAN_FEATURE_11AC
372 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800373#else
374 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700375#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800376#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
377 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
378#else
schangd82195a2013-03-13 18:41:24 -0700379 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800380#endif
schangd82195a2013-03-13 18:41:24 -0700381 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700382#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700383 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700384#else
385 NULL,
386#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530387#ifdef FEATURE_WLAN_TDLS
388 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
389#else
390 NULL,
391#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700392#ifdef FEATURE_WLAN_LPHB
393 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
394#else
395 NULL,
396#endif /* FEATURE_WLAN_LPHB */
Arif Hussainfc753992013-08-09 15:09:58 -0700397#if defined WLAN_FEATURE_RELIABLE_MCAST
398 WDI_ProcessLBPLeaderReq, /* WDI_LBP_LEADER_REQ */
399#else
400 NULL,
401#endif /* WLAN_FEATURE_RELIABLE_MCAST */
402
403#ifdef FEATURE_CESIUM_PROPRIETARY
404 WDI_ProcessIbssPeerInfoReq, /* WDI_HAL_IBSS_PEER_INFO_REQ */
405#else
406 NULL,
407#endif /* FEATURE_CESIUM_PROPRIETARY */
Rajeev3db91f12013-10-05 11:03:42 +0530408
409#ifdef FEATURE_WLAN_BATCH_SCAN
410 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
411#else
412 NULL,
413#endif /* FEATURE_WLAN_BATCH_SCAN */
414
Arif Hussainfc753992013-08-09 15:09:58 -0700415 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schangd82195a2013-03-13 18:41:24 -0700416 /*-------------------------------------------------------------------------
417 Indications
418 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700419 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800420 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530421 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
422 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700423#ifdef WLAN_FEATURE_11W
424 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
425#else
426 NULL,
427#endif
Yue Ma365933a2013-08-14 15:59:08 -0700428 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
429 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530430#ifdef FEATURE_WLAN_BATCH_SCAN
431 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
432 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
433#else
434 NULL,
435 NULL,
436#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -0700437 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700438};
439
440
Jeff Johnsone7245742012-09-05 17:12:55 -0700441/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700442 DAL Request Processing Array - the functions in this table will only be
443 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700444 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700445 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700446WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700447{
448 /*INIT*/
449 WDI_ProcessStartRsp, /* WDI_START_RESP */
450 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
451 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
452
453 /*SCAN*/
454 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
455 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
456 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
457 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
458
459 /* ASSOCIATION*/
460 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
461 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
462 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
463 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
464 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
465
466 /* Security */
467 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
468 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
469 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
470 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
471
472 /* QoS and BA APIs */
473 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
474 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
475 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
476 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
477 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
478
479 /* Miscellaneous Control APIs */
480 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
481 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
482 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
483 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
484 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
485
486 /* BA APIs*/
487 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
488 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700489
Jeff Johnson295189b2012-06-20 16:38:30 -0700490 /* IBSS APIs*/
491 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
492 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
493
494 /*Soft AP APIs*/
495 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
496 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
497 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
498 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
499
500 /* PowerSave APIs */
501 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
502 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
503 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
504 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
505 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
506 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
507 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
508 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
509 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
510 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
511 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
512 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
513 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
514 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
515 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
516 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
517 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
518 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700519
Jeff Johnson295189b2012-06-20 16:38:30 -0700520
521 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
522
523 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
524 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
525#ifdef WLAN_FEATURE_VOWIFI_11R
526 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
527#else
528 NULL,
529#endif /* WLAN_FEATURE_VOWIFI_11R */
530 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
531 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700532#ifdef FEATURE_OEM_DATA_SUPPORT
533 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
534#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700535 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700536#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700537 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
538
Jeff Johnson295189b2012-06-20 16:38:30 -0700539 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700540
Jeff Johnson295189b2012-06-20 16:38:30 -0700541 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700542
Jeff Johnsone7245742012-09-05 17:12:55 -0700543 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
544
Jeff Johnson295189b2012-06-20 16:38:30 -0700545#ifdef FEATURE_WLAN_SCAN_PNO
546 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
547 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
548 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
549#else
550 NULL,
551 NULL,
552 NULL,
553#endif // FEATURE_WLAN_SCAN_PNO
554
555 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
556
557 /*---------------------------------------------------------------------
558 Indications
559 ---------------------------------------------------------------------*/
560#ifdef WLAN_FEATURE_PACKET_FILTERING
561 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700562 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700563 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700564 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700565 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700566 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700567 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700568 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700569#else
570 NULL,
571 NULL,
572 NULL,
573 NULL,
574#endif // WLAN_FEATURE_PACKET_FILTERING
575
576 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
577 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
578
579 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
580#ifdef FEATURE_WLAN_CCX
581 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
582#else
583 NULL,
584#endif
585
586#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700587 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
588 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700589#else
590 NULL,
591 NULL,
592#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700593 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
594 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700595#ifdef WLAN_FEATURE_11AC
596 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700597#else
598 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700599#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800600#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
601 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
602#else
603 NULL,
604#endif
schangd82195a2013-03-13 18:41:24 -0700605 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700606#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700607 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700608#else
609 NULL,
610#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530611#ifdef FEATURE_WLAN_TDLS
612 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
613#else
614 NULL,
615#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700616#ifdef FEATURE_WLAN_LPHB
617 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
618#else
619 NULL,
620#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530621
622#ifdef FEATURE_WLAN_BATCH_SCAN
623 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
624#else
625 NULL,
626#endif /*FEATURE_WLAN_BATCH_SCAN*/
627
Jeff Johnson295189b2012-06-20 16:38:30 -0700628 /*---------------------------------------------------------------------
629 Indications
630 ---------------------------------------------------------------------*/
631 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
632 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
633 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
634 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
635 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
636 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
637
638 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
639
640 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
641
Jeff Johnson295189b2012-06-20 16:38:30 -0700642 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700643
644#ifdef FEATURE_WLAN_SCAN_PNO
645 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
646#else
647 NULL,
648#endif // FEATURE_WLAN_SCAN_PNO
649
650#ifdef WLAN_WAKEUP_EVENTS
651 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
652#else // WLAN_WAKEUP_EVENTS
653 NULL,
654#endif // WLAN_WAKEUP_EVENTS
655
656 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800657
Viral Modi9dc288a2012-12-10 13:09:21 -0800658 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530659#ifdef FEATURE_WLAN_TDLS
660 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
661#else
662 NULL,
663#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700664
665#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700666 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700667#else
668 NULL,
669#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700670
671 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700672
673 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530674
675#ifdef FEATURE_WLAN_BATCH_SCAN
676 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
677#else
678 NULL,
679#endif
680
Leo Changd95d6622013-12-15 15:18:55 -0800681#ifdef FEATURE_WLAN_CH_AVOID
682 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
683#else
684 NULL,
685#endif /* FEATURE_WLAN_CH_AVOID */
686
Jeff Johnson295189b2012-06-20 16:38:30 -0700687};
688
689
Jeff Johnsone7245742012-09-05 17:12:55 -0700690/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700691 WLAN DAL Global Control Block
692 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700693WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700694static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
695
Jeff Johnsone7245742012-09-05 17:12:55 -0700696const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700697
698/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700699WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700700void* WDI_GET_PAL_CTX( void )
701{
Jeff Johnsone7245742012-09-05 17:12:55 -0700702 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700703}/*WDI_GET_PAL_CTX*/
704
Jeff Johnsone7245742012-09-05 17:12:55 -0700705/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700706 Helper inline converters
707 ============================================================================*/
708/*Convert WDI driver type into HAL driver type*/
709WPT_STATIC WPT_INLINE WDI_Status
710WDI_HAL_2_WDI_STATUS
711(
712 eHalStatus halStatus
713);
714
715/*Convert WDI request type into HAL request type*/
716WPT_STATIC WPT_INLINE tHalHostMsgType
717WDI_2_HAL_REQ_TYPE
718(
719 WDI_RequestEnumType wdiReqType
720);
721
722/*Convert WDI response type into HAL response type*/
723WPT_STATIC WPT_INLINE WDI_ResponseEnumType
724HAL_2_WDI_RSP_TYPE
725(
726 tHalHostMsgType halMsg
727);
728
729/*Convert WDI driver type into HAL driver type*/
730WPT_STATIC WPT_INLINE tDriverType
731WDI_2_HAL_DRV_TYPE
732(
733 WDI_DriverType wdiDriverType
734);
735
736/*Convert WDI stop reason into HAL stop reason*/
737WPT_STATIC WPT_INLINE tHalStopType
738WDI_2_HAL_STOP_REASON
739(
740 WDI_StopType wdiStopType
741);
742
743/*Convert WDI scan mode type into HAL scan mode type*/
744WPT_STATIC WPT_INLINE eHalSysMode
745WDI_2_HAL_SCAN_MODE
746(
747 WDI_ScanMode wdiScanMode
748);
749
750/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700751WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700752WDI_2_HAL_SEC_CH_OFFSET
753(
754 WDI_HTSecondaryChannelOffset wdiSecChOffset
755);
756
757/*Convert WDI BSS type into HAL BSS type*/
758WPT_STATIC WPT_INLINE tSirBssType
759WDI_2_HAL_BSS_TYPE
760(
761 WDI_BssType wdiBSSType
762);
763
764/*Convert WDI NW type into HAL NW type*/
765WPT_STATIC WPT_INLINE tSirNwType
766WDI_2_HAL_NW_TYPE
767(
768 WDI_NwType wdiNWType
769);
770
771/*Convert WDI chanel bonding type into HAL cb type*/
772WPT_STATIC WPT_INLINE ePhyChanBondState
773WDI_2_HAL_CB_STATE
774(
775 WDI_PhyChanBondState wdiCbState
776);
777
778/*Convert WDI chanel bonding type into HAL cb type*/
779WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
780WDI_2_HAL_HT_OPER_MODE
781(
782 WDI_HTOperatingMode wdiHTOperMode
783);
784
785/*Convert WDI mimo PS type into HAL mimo PS type*/
786WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
787WDI_2_HAL_MIMO_PS
788(
789 WDI_HTMIMOPowerSaveState wdiHTOperMode
790);
791
792/*Convert WDI ENC type into HAL ENC type*/
793WPT_STATIC WPT_INLINE tAniEdType
794WDI_2_HAL_ENC_TYPE
795(
796 WDI_EncryptType wdiEncType
797);
798
799/*Convert WDI WEP type into HAL WEP type*/
800WPT_STATIC WPT_INLINE tAniWepType
801WDI_2_HAL_WEP_TYPE
802(
803 WDI_WepType wdiWEPType
804);
805
806/*Convert WDI Link State into HAL Link State*/
807WPT_STATIC WPT_INLINE tSirLinkState
808WDI_2_HAL_LINK_STATE
809(
810 WDI_LinkStateType wdiLinkState
811);
812
Jeff Johnsone7245742012-09-05 17:12:55 -0700813/*Translate a STA Context from WDI into HAL*/
814WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700815void
816WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700817(
Jeff Johnson295189b2012-06-20 16:38:30 -0700818 tConfigStaParams* phalConfigSta,
819 WDI_ConfigStaReqInfoType* pwdiConfigSta
820);
Jeff Johnsone7245742012-09-05 17:12:55 -0700821
822/*Translate a Rate set info from WDI into HAL*/
823WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700824WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700825(
Jeff Johnson295189b2012-06-20 16:38:30 -0700826 tSirMacRateSet* pHalRateSet,
827 WDI_RateSet* pwdiRateSet
828);
829
830/*Translate an EDCA Parameter Record from WDI into HAL*/
831WPT_STATIC WPT_INLINE void
832WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700833(
Jeff Johnson295189b2012-06-20 16:38:30 -0700834 tSirMacEdcaParamRecord* phalEdcaParam,
835 WDI_EdcaParamRecord* pWDIEdcaParam
836);
837
838/*Copy a management frame header from WDI fmt into HAL fmt*/
839WPT_STATIC WPT_INLINE void
840WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
841(
842 tSirMacMgmtHdr* pmacMgmtHdr,
843 WDI_MacMgmtHdr* pwdiMacMgmtHdr
844);
845
846/*Copy config bss parameters from WDI fmt into HAL fmt*/
847WPT_STATIC WPT_INLINE void
848WDI_CopyWDIConfigBSSToHALConfigBSS
849(
850 tConfigBssParams* phalConfigBSS,
851 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
852);
853
Jeff Johnsone7245742012-09-05 17:12:55 -0700854/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700855 pointed to by user data */
856WPT_STATIC WPT_INLINE void
857WDI_ExtractRequestCBFromEvent
858(
859 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700860 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700861 void** ppUserData
862);
863
864wpt_uint8
865WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700866(
Jeff Johnson295189b2012-06-20 16:38:30 -0700867 WDI_ControlBlockType* pWDICtx,
868 WDI_BSSSessionType** ppSession
869);
870
871void
872WDI_AddBcastSTAtoSTATable
873(
874 WDI_ControlBlockType* pWDICtx,
875 WDI_AddStaParams * staParams,
876 wpt_uint16 usBcastStaIdx
877);
878
879WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700880(
Jeff Johnson295189b2012-06-20 16:38:30 -0700881 WDI_ControlBlockType* pWDICtx,
882 WDI_EventInfoType* pEventData
883);
884
885void
886WDI_SetPowerStateCb
887(
888 wpt_status status,
889 unsigned int dxePhyAddr,
890 void *pContext
891);
892
893#define CASE_RETURN_STRING( str ) \
894 case ( ( str ) ): return( #str ); break \
895
896/**
897 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700898
899 @param wdiReqMsgId: WDI Message request Id
900
901 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700902 @return Result of the function call
903*/
904static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
905{
906 switch (wdiReqMsgId)
907 {
908 CASE_RETURN_STRING( WDI_START_REQ );
909 CASE_RETURN_STRING( WDI_STOP_REQ );
910 CASE_RETURN_STRING( WDI_CLOSE_REQ );
911 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
912 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
913 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
914 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
915 CASE_RETURN_STRING( WDI_JOIN_REQ );
916 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
917 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
918 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
919 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
920 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
921 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
922 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
923 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
924 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
925 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
926 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
927 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
928 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
929 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
930 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
931 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
932 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
933 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
934 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
935 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
936 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
937 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
938 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
939 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
940 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
941 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussainfc753992013-08-09 15:09:58 -0700942 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700943 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530944#ifdef FEATURE_WLAN_TDLS
945 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
946#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700947 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
948 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
949 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
950 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
951 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
952 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
953 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
954 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
955 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
956 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
957 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
958 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
959 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
960 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
961 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
962 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
963 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
964 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
965 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
966 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
967 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
968 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
969 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
970 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
971 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700972 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700973 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
974 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
975 #ifdef FEATURE_WLAN_SCAN_PNO
976 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
977 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
978 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
979 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700980#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700981 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700982#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700983 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
984 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
985 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
986 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
987 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
988 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
989 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
990 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
991 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800992 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800993 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700994#ifdef WLAN_FEATURE_11W
995 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
996#endif
Rajeev3db91f12013-10-05 11:03:42 +0530997#ifdef FEATURE_WLAN_BATCH_SCAN
998 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
999 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1000 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1001#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001002 default:
1003 return "Unknown WDI MessageId";
1004 }
1005}
1006
1007
1008
1009/**
1010 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001011
1012 @param wdiRespMsgId: WDI Message response Id
1013
1014 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001015 @return Result of the function call
1016*/
1017static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1018{
1019 switch (wdiRespMsgId)
1020 {
1021 CASE_RETURN_STRING( WDI_START_RESP );
1022 CASE_RETURN_STRING( WDI_STOP_RESP );
1023 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1024 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1025 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1026 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1027 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1028 CASE_RETURN_STRING( WDI_JOIN_RESP );
1029 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1030 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1031 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1032 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1033 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1034 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1035 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1036 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1037 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1038 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1039 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1040 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1041 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1042 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1043 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1044 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1045 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1046 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1047 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1048 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1049 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1050 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1051 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1052 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1053 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1054 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1055 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301056#ifdef FEATURE_WLAN_TDLS
1057 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1058 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1059#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1061 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1062 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1063 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1064 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1065 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1066 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1067 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1068 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1069 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1070 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1071 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1072 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1073 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1074 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1075 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1076 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1077 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1078 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1079 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1080 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1081 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1082 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1083 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1084 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001085 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001086 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1087 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1088 #ifdef FEATURE_WLAN_SCAN_PNO
1089 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1090 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1091 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1092 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001093#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001094 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001095#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001096 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1097 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1098 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1099 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1100 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1101 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1102 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1103 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001104 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301105#ifdef FEATURE_WLAN_BATCH_SCAN
1106 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1107#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001108 default:
1109 return "Unknown WDI MessageId";
1110 }
1111}
1112
1113/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301114 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1115 Capability bitmap array.
1116 @param capabilityBitmap - Base address of Bitmap array
1117 @see
1118 @returns None
1119 */
1120void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1121{
1122 int i;
1123 char capStr[512];
1124 char *pCapStr = capStr;
1125 for (i = 0; i < 32; i++) {
1126 if ((*(capabilityBitmap + 0) & (1 << i))) {
1127 switch(i) {
1128 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1129 pCapStr += strlen("MCC");
1130 break;
1131 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1132 pCapStr += strlen("P2P");
1133 break;
1134 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1135 pCapStr += strlen("DOT11AC");
1136 break;
1137 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1138 pCapStr += strlen("SLM_SESSIONIZATION");
1139 break;
1140 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1141 pCapStr += strlen("DOT11AC_OPMODE");
1142 break;
1143 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1144 pCapStr += strlen("SAP32STA");
1145 break;
1146 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1147 pCapStr += strlen("TDLS");
1148 break;
1149 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1150 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1151 break;
1152 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1153 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1154 break;
1155 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1156 pCapStr += strlen("BEACON_OFFLOAD");
1157 break;
1158 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1159 pCapStr += strlen("SCAN_OFFLOAD");
1160 break;
1161 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1162 pCapStr += strlen("ROAM_OFFLOAD");
1163 break;
1164 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1165 pCapStr += strlen("BCN_MISS_OFFLOAD");
1166 break;
1167 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1168 pCapStr += strlen("STA_POWERSAVE");
1169 break;
1170 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1171 pCapStr += strlen("AP_UAPSD");
1172 break;
1173 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1174 pCapStr += strlen("AP_DFS");
1175 break;
1176 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1177 pCapStr += strlen("BLOCKACK");
1178 break;
1179 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1180 pCapStr += strlen("PHY_ERR");
1181 break;
1182 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1183 pCapStr += strlen("BCN_FILTER");
1184 break;
1185 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1186 pCapStr += strlen("RTT");
1187 break;
1188 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1189 pCapStr += strlen("RATECTRL");
1190 break;
1191 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1192 pCapStr += strlen("WOW");
1193 break;
1194 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1195 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1196 break;
1197 }
1198 *pCapStr++ = ',';
1199 *pCapStr++ = ' ';
1200 }
1201 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301202 pCapStr -= 2;
1203 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301204 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301206}
1207
1208/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001210
1211 @param halStatusId: HAL status Id
1212
1213 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001214 @return Result of the function call
1215*/
1216static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1217{
1218 switch (halStatusId)
1219 {
1220 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1221 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1222 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1223 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1224 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1225 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1226 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1227 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1228 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1229 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1230 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1231 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1232 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1233 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1234 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1235 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1236 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1237 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1238 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1239 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1240 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1241 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1242 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1243 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1244 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1245 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1246 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1247 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1248 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1249 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1250 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1251 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1252 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1253 default:
1254 return "Unknown HAL status";
1255 }
1256}
1257
Jeff Johnsone7245742012-09-05 17:12:55 -07001258/*========================================================================
1259
Jeff Johnson295189b2012-06-20 16:38:30 -07001260 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001261
Jeff Johnson295189b2012-06-20 16:38:30 -07001262==========================================================================*/
1263
1264/**
1265 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001266
Jeff Johnson295189b2012-06-20 16:38:30 -07001267 DAL will allocate all the resources it needs. It will open PAL, it will also
1268 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001269 DXE/SMD or any other drivers that they need.
1270
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 @param pOSContext: pointer to the OS context provided by the UMAC
1272 will be passed on to PAL on Open
1273 ppWDIGlobalCtx: output pointer of Global Context
1274 pWdiDevCapability: output pointer of device capability
1275
1276 @return Result of the function call
1277*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001278WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001279WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001280(
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 void* pOSContext,
1282 void** ppWDIGlobalCtx,
1283 WDI_DeviceCapabilityType* pWdiDevCapability,
1284 unsigned int driverType
1285)
1286{
1287 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001288 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001289 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001290 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1292
1293 /*---------------------------------------------------------------------
1294 Sanity check
1295 ---------------------------------------------------------------------*/
1296 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1297 {
1298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1299 "Invalid input parameters in WDI_Init");
1300
Jeff Johnsone7245742012-09-05 17:12:55 -07001301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001302 }
1303
1304 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001305 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001306 ---------------------------------------------------------------------*/
1307 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1308 {
1309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1310 "WDI module already initialized - return");
1311
Jeff Johnsone7245742012-09-05 17:12:55 -07001312 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001313 }
1314
1315 /*Module is now initialized - this flag is to ensure the fact that multiple
1316 init will not happen on WDI
1317 !! - potential race does exist because read and set are not atomic,
1318 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001319 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001320
1321 /*Setup the control block */
1322 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001323 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001324
1325 /*Setup the STA Table*/
1326 wdiStatus = WDI_STATableInit(&gWDICb);
1327 if ( WDI_STATUS_SUCCESS != wdiStatus )
1328 {
1329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1330 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001331 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001332 goto fail_STATableInit;
1333 }
1334
1335 /*------------------------------------------------------------------------
1336 Open the PAL
1337 ------------------------------------------------------------------------*/
1338 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1339 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1340 {
1341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1342 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001343 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001344 goto fail_wpalOpen;
1345 }
1346
1347 /*Initialize main synchro mutex - it will be used to ensure integrity of
1348 the main WDI Control Block*/
1349 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1350 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1351 {
1352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1353 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001354 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001355 goto fail_mutex;
1356 }
1357
1358 /*Initialize the response timer - it will be used to time all messages
1359 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1361 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 &gWDICb);
1363 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1364 {
1365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1366 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001367 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 goto fail_timer;
1369 }
1370
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001371 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1372 WDI_SsrTimerCB,
1373 &gWDICb);
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 SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001378 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001379 goto fail_timer2;
1380 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 /* Initialize the WDI Pending Request Queue*/
1382 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1383 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1384 {
1385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1386 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001387 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001388 goto fail_pend_queue;
1389 }
1390
1391 /*Init WDI Pending Assoc Id Queue */
1392 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1393 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1394 {
1395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1396 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001397 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001398 goto fail_assoc_queue;
1399 }
1400
1401 /*Initialize the BSS sessions pending Queue */
1402 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1403 {
1404 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1405 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1406 {
1407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1408 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001409 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 goto fail_bss_queue;
1411 }
1412 }
1413
1414 /*Indicate the control block is sufficiently initialized for callbacks*/
1415 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1416
1417 /*------------------------------------------------------------------------
1418 Initialize the Data Path Utility Module
1419 ------------------------------------------------------------------------*/
1420 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1421 if ( WDI_STATUS_SUCCESS != wdiStatus )
1422 {
1423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1424 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001425 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 goto fail_dp_util_init;
1427 }
1428
1429 /* Init Set power state event */
1430 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001431 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001432 {
1433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1434 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001435 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 goto fail_power_event;
1437 }
1438
1439 /* Init WCTS action event */
1440 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001441 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001442 {
1443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1444 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001445 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 goto fail_wcts_event;
1447 }
1448
1449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 ------------------------------------------------------------------------*/
1452 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1453 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001454 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 wctsCBs.wctsRxMsgCBData = &gWDICb;
1456
Jeff Johnsone7245742012-09-05 17:12:55 -07001457 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001458 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001459 WDI_CT_CHANNEL_SIZE,
1460 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001461
1462 if ( NULL == gWDICb.wctsHandle )
1463 {
1464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001465 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001466 goto fail_wcts_open;
1467 }
1468
1469 gWDICb.driverMode = (tDriverType)driverType;
1470 /* FTM mode not need to open Transport Driver */
1471 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001472 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001473 /*------------------------------------------------------------------------
1474 Open the Data Transport
1475 ------------------------------------------------------------------------*/
1476 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1477 {
1478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001479 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001480 goto fail_wdts_open;
1481 }
1482 }
1483
1484 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001485 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001486
1487 /*Send the context as a ptr to the global WDI Control Block*/
1488 *ppWDIGlobalCtx = &gWDICb;
1489
1490 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001491 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1493 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1494 return WDI_STATUS_SUCCESS;
1495
1496 /* ERROR handlers
1497 Undo everything that completed successfully */
1498
1499 fail_wdts_open:
1500 {
1501 wpt_status eventStatus;
1502
1503 /* Closing WCTS in this scenario is tricky since it has to close
1504 the SMD channel and then we get notified asynchronously when
1505 the channel has been closed. So we take some of the logic from
1506 the "normal" close procedure in WDI_Close()
1507 */
1508
1509 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001510 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 {
1512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 }
1515
1516 WCTS_CloseTransport(gWDICb.wctsHandle);
1517
1518 /* Wait for WCTS to close the control transport. If we were able
1519 to reset the event flag, then we'll wait for the event,
1520 otherwise we'll wait for a maximum amount of time required for
1521 the channel to be closed */
1522 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1523 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001524 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 WDI_WCTS_ACTION_TIMEOUT);
1526 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1527 {
1528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001529 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001530 }
1531 }
1532 else
1533 {
1534 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1535 }
1536 }
1537 fail_wcts_open:
1538 wpalEventDelete(&gWDICb.wctsActionEvent);
1539 fail_wcts_event:
1540 wpalEventDelete(&gWDICb.setPowerStateEvent);
1541 fail_power_event:
1542 WDI_DP_UtilsExit(&gWDICb);
1543 fail_dp_util_init:
1544 gWDICb.magic = 0;
1545 fail_bss_queue:
1546 /* entries 0 thru i-1 were successfully initialized */
1547 while (0 < i)
1548 {
1549 i--;
1550 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1551 }
1552 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1553 fail_assoc_queue:
1554 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1555 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001556 wpalTimerDelete(&gWDICb.ssrTimer);
1557 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001558 wpalTimerDelete(&gWDICb.wptResponseTimer);
1559 fail_timer:
1560 wpalMutexDelete(&gWDICb.wptMutex);
1561 fail_mutex:
1562 wpalClose(gWDICb.pPALContext);
1563 fail_wpalOpen:
1564 WDI_STATableClose(&gWDICb);
1565 fail_STATableInit:
1566 gWDIInitialized = eWLAN_PAL_FALSE;
1567
1568 return WDI_STATUS_E_FAILURE;
1569
1570}/*WDI_Init*/;
1571
1572/**
1573 @brief WDI_Start will be called when the upper MAC is ready to
1574 commence operation with the WLAN Device. Upon the call
1575 of this API the WLAN DAL will pack and send a HAL Start
1576 message to the lower RIVA sub-system if the SMD channel
1577 has been fully opened and the RIVA subsystem is up.
1578
1579 If the RIVA sub-system is not yet up and running DAL
1580 will queue the request for Open and will wait for the
1581 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001582 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001583
1584 WDI_Init must have been called.
1585
Jeff Johnsone7245742012-09-05 17:12:55 -07001586 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001588
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 wdiStartRspCb: callback for passing back the response of
1590 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001591
Jeff Johnson295189b2012-06-20 16:38:30 -07001592 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001593 callback
1594
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 @see WDI_Start
1596 @return Result of the function call
1597*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001598WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001599WDI_Start
1600(
1601 WDI_StartReqParamsType* pwdiStartParams,
1602 WDI_StartRspCb wdiStartRspCb,
1603 void* pUserData
1604)
1605{
1606 WDI_EventInfoType wdiEventData;
1607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1608
1609 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001610 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 ------------------------------------------------------------------------*/
1612 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1613 {
1614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1615 "WDI API call before module is initialized - Fail request");
1616
Jeff Johnsone7245742012-09-05 17:12:55 -07001617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001618 }
1619
1620 /*------------------------------------------------------------------------
1621 Fill in Event data and post to the Main FSM
1622 ------------------------------------------------------------------------*/
1623 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001624 wdiEventData.pEventData = pwdiStartParams;
1625 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1626 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 wdiEventData.pUserData = pUserData;
1628
1629 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1630
1631}/*WDI_Start*/
1632
1633/**
1634 @brief WDI_Stop will be called when the upper MAC is ready to
1635 stop any operation with the WLAN Device. Upon the call
1636 of this API the WLAN DAL will pack and send a HAL Stop
1637 message to the lower RIVA sub-system if the DAL Core is
1638 in started state.
1639
1640 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001641
1642 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001643
1644 WDI_Start must have been called.
1645
Jeff Johnsone7245742012-09-05 17:12:55 -07001646 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001647 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001648
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 wdiStopRspCb: callback for passing back the response of
1650 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001651
Jeff Johnson295189b2012-06-20 16:38:30 -07001652 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001653 callback
1654
Jeff Johnson295189b2012-06-20 16:38:30 -07001655 @see WDI_Start
1656 @return Result of the function call
1657*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001658WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001659WDI_Stop
1660(
1661 WDI_StopReqParamsType* pwdiStopParams,
1662 WDI_StopRspCb wdiStopRspCb,
1663 void* pUserData
1664)
1665{
1666 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001667 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1669
1670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001672 ------------------------------------------------------------------------*/
1673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1674 {
1675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1676 "WDI API call before module is initialized - Fail request");
1677
Jeff Johnsone7245742012-09-05 17:12:55 -07001678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001679 }
1680
Jeff Johnson43971f52012-07-17 12:26:56 -07001681 /*Access to the global state must be locked before cleaning */
1682 wpalMutexAcquire(&pWDICtx->wptMutex);
1683
1684 /*Clear all pending request*/
1685 WDI_ClearPendingRequests(pWDICtx);
1686
1687 /*We have completed cleaning unlock now*/
1688 wpalMutexRelease(&pWDICtx->wptMutex);
1689
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 /* Free the global variables */
1691 wpalMemoryFree(gpHostWlanFeatCaps);
1692 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001693 gpHostWlanFeatCaps = NULL;
1694 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001695
1696 /*------------------------------------------------------------------------
1697 Fill in Event data and post to the Main FSM
1698 ------------------------------------------------------------------------*/
1699 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001700 wdiEventData.pEventData = pwdiStopParams;
1701 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1702 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 wdiEventData.pUserData = pUserData;
1704
1705 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1706
1707}/*WDI_Stop*/
1708
1709
1710
1711/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001712 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 needs to interact with DAL. DAL will free its control
1714 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001715
1716 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001717
1718 WDI_Stop must have been called.
1719
1720 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001721
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 @see WDI_Stop
1723 @return Result of the function call
1724*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001725WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001726WDI_Close
1727(
1728 void
1729)
1730{
1731 wpt_uint8 i;
1732 WDI_EventInfoType wdiEventData;
1733 wpt_status wptStatus;
1734 wpt_status eventStatus;
1735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1736
1737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 ------------------------------------------------------------------------*/
1740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1741 {
1742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1743 "WDI API call before module is initialized - Fail request");
1744
Jeff Johnsone7245742012-09-05 17:12:55 -07001745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001746 }
1747
1748 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1749 (the control transport will be closed by the FSM and we'll want
1750 to wait until that completes)*/
1751 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001752 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001753 {
1754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001755 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001756 /* fall through and try to finish closing via the FSM */
1757 }
1758
1759 /*------------------------------------------------------------------------
1760 Fill in Event data and post to the Main FSM
1761 ------------------------------------------------------------------------*/
1762 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001763 wdiEventData.pEventData = NULL;
1764 wdiEventData.uEventDataSize = 0;
1765 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 wdiEventData.pUserData = NULL;
1767
1768 gWDIInitialized = eWLAN_PAL_FALSE;
1769
1770 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1771
1772 /*Wait for WCTS to close the control transport
1773 (but only if we were able to reset the event flag*/
1774 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1775 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001776 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 WDI_WCTS_ACTION_TIMEOUT);
1778 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1779 {
1780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001781 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001782 }
1783 }
1784
1785 /* Destroy the WCTS action event */
1786 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1787 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1788 {
1789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1790 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 }
1793
1794 /* Destroy the Set Power State event */
1795 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1796 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1797 {
1798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1799 "WDI Close failed to destroy an event");
1800
Jeff Johnsone7245742012-09-05 17:12:55 -07001801 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001802 }
1803
1804 /*------------------------------------------------------------------------
1805 Closes the Data Path Utility Module
1806 ------------------------------------------------------------------------*/
1807 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1808 {
1809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1810 "WDI Init failed to close the DP Util Module");
1811
Jeff Johnsone7245742012-09-05 17:12:55 -07001812 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001813 }
1814
1815 /*destroy the BSS sessions pending Queue */
1816 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1817 {
1818 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1819 }
1820
1821 /* destroy the WDI Pending Assoc Id Request Queue*/
1822 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1823
1824 /* destroy the WDI Pending Request Queue*/
1825 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001826
Jeff Johnson295189b2012-06-20 16:38:30 -07001827 /*destroy the response timer */
1828 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1829
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001830 /*destroy the SSR timer */
1831 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1832
Jeff Johnson295189b2012-06-20 16:38:30 -07001833 /*invalidate the main synchro mutex */
1834 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1835 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1836 {
1837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1838 "Failed to delete mutex %d", wptStatus);
1839 WDI_ASSERT(0);
1840 }
1841
1842 /*Clear control block. note that this will clear the "magic"
1843 which will inhibit all asynchronous callbacks*/
1844 WDI_CleanCB(&gWDICb);
1845
1846 return wptStatus;
1847
1848}/*WDI_Close*/
1849
1850/**
1851 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1852 This will do most of the WDI stop & close
1853 operations without doing any handshake with Riva
1854
1855 This will also make sure that the control transport
1856 will NOT be closed.
1857
1858 This request will not be queued.
1859
1860
1861 WDI_Start must have been called.
1862
1863 @param closeTransport: Close control channel if this is set
1864
1865 @return Result of the function call
1866*/
1867WDI_Status
1868WDI_Shutdown
1869(
1870 wpt_boolean closeTransport
1871)
1872{
1873 WDI_EventInfoType wdiEventData;
1874 wpt_status wptStatus;
1875 int i = 0;
1876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1877
1878 /*------------------------------------------------------------------------
1879 Sanity Check
1880 ------------------------------------------------------------------------*/
1881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1882 {
1883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1884 "WDI API call before module is initialized - Fail request");
1885
1886 return WDI_STATUS_E_NOT_ALLOWED;
1887 }
1888
1889 /*------------------------------------------------------------------------
1890 Fill in Event data and post to the Main FSM
1891 ------------------------------------------------------------------------*/
1892 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1893 wdiEventData.pEventData = NULL;
1894 wdiEventData.uEventDataSize = 0;
1895
1896 /* Shutdown will not be queued, if the state is busy timer will be
1897 * stopped & this message will be processed.*/
1898 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1899 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1900 {
1901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001902 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001903 }
1904 /* Destroy the Set Power State event */
1905 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1906 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1907 {
1908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1909 "WDI Close failed to destroy an event");
1910
1911 WDI_ASSERT(0);
1912 }
1913 /*------------------------------------------------------------------------
1914 Closes the Data Path Utility Module
1915 ------------------------------------------------------------------------*/
1916 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1917 {
1918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1919 "WDI Init failed to close the DP Util Module");
1920
1921 WDI_ASSERT(0);
1922 }
1923 if ( closeTransport )
1924 {
1925 /* Close control transport, called from module unload */
1926 WCTS_CloseTransport(gWDICb.wctsHandle);
1927 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001928 else
1929 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001930 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001931 the pending messages in the transport queue */
1932 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1933 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 /*destroy the BSS sessions pending Queue */
1935 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1936 {
1937 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1938 }
1939
1940 /* destroy the WDI Pending Assoc Id Request Queue*/
1941 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1942 /* destroy the WDI Pending Request Queue*/
1943 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1944 /*destroy the response timer */
1945 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001946 /*destroy the SSR timer */
1947 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001948
1949 /*invalidate the main synchro mutex */
1950 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1951 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1952 {
1953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001954 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001955 WDI_ASSERT(0);
1956 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001957 /* Free the global variables */
1958 wpalMemoryFree(gpHostWlanFeatCaps);
1959 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001960 gpHostWlanFeatCaps = NULL;
1961 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001962 /*Clear control block. note that this will clear the "magic"
1963 which will inhibit all asynchronous callbacks*/
1964 WDI_CleanCB(&gWDICb);
1965 return wptStatus;
1966
1967}/*WDI_Shutdown*/
1968
1969
Jeff Johnsone7245742012-09-05 17:12:55 -07001970/*========================================================================
1971
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001973
Jeff Johnson295189b2012-06-20 16:38:30 -07001974==========================================================================*/
1975
1976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 the WLAN Device to get ready for a scan procedure. Upon
1979 the call of this API the WLAN DAL will pack and send a
1980 HAL Init Scan request message to the lower RIVA
1981 sub-system if DAL is in state STARTED.
1982
1983 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001984 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001985
1986 WDI_Start must have been called.
1987
1988 @param wdiInitScanParams: the init scan parameters as specified
1989 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001990
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 wdiInitScanRspCb: callback for passing back the response
1992 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001993
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001995 callback
1996
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 @see WDI_Start
1998 @return Result of the function call
1999*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002000WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002001WDI_InitScanReq
2002(
2003 WDI_InitScanReqParamsType* pwdiInitScanParams,
2004 WDI_InitScanRspCb wdiInitScanRspCb,
2005 void* pUserData
2006)
2007{
2008 WDI_EventInfoType wdiEventData;
2009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2010
2011 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002013 ------------------------------------------------------------------------*/
2014 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2015 {
2016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2017 "WDI API call before module is initialized - Fail request");
2018
Jeff Johnsone7245742012-09-05 17:12:55 -07002019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 }
2021
2022 /*------------------------------------------------------------------------
2023 Fill in Event data and post to the Main FSM
2024 ------------------------------------------------------------------------*/
2025 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002026 wdiEventData.pEventData = pwdiInitScanParams;
2027 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2028 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 wdiEventData.pUserData = pUserData;
2030
2031 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2032
2033}/*WDI_InitScanReq*/
2034
2035/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002036 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002037 wishes to change the Scan channel on the WLAN Device.
2038 Upon the call of this API the WLAN DAL will pack and
2039 send a HAL Start Scan request message to the lower RIVA
2040 sub-system if DAL is in state STARTED.
2041
2042 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002043 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002044
2045 WDI_InitScanReq must have been called.
2046
Jeff Johnsone7245742012-09-05 17:12:55 -07002047 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002049
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 wdiStartScanRspCb: callback for passing back the
2051 response of the start scan operation received from the
2052 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002053
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002055 callback
2056
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 @see WDI_InitScanReq
2058 @return Result of the function call
2059*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002060WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002061WDI_StartScanReq
2062(
2063 WDI_StartScanReqParamsType* pwdiStartScanParams,
2064 WDI_StartScanRspCb wdiStartScanRspCb,
2065 void* pUserData
2066)
2067{
2068 WDI_EventInfoType wdiEventData;
2069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2070
2071 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 ------------------------------------------------------------------------*/
2074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2077 "WDI API call before module is initialized - Fail request");
2078
Jeff Johnsone7245742012-09-05 17:12:55 -07002079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 }
2081
2082 /*------------------------------------------------------------------------
2083 Fill in Event data and post to the Main FSM
2084 ------------------------------------------------------------------------*/
2085 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002086 wdiEventData.pEventData = pwdiStartScanParams;
2087 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2088 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 wdiEventData.pUserData = pUserData;
2090
2091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2092
2093}/*WDI_StartScanReq*/
2094
2095
2096/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 wants to end scanning for a particular channel that it
2099 had set before by calling Scan Start on the WLAN Device.
2100 Upon the call of this API the WLAN DAL will pack and
2101 send a HAL End Scan request message to the lower RIVA
2102 sub-system if DAL is in state STARTED.
2103
2104 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002106
2107 WDI_StartScanReq must have been called.
2108
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002110 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002111
Jeff Johnson295189b2012-06-20 16:38:30 -07002112 wdiEndScanRspCb: callback for passing back the response
2113 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002114
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002116 callback
2117
Jeff Johnson295189b2012-06-20 16:38:30 -07002118 @see WDI_StartScanReq
2119 @return Result of the function call
2120*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002121WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002122WDI_EndScanReq
2123(
2124 WDI_EndScanReqParamsType* pwdiEndScanParams,
2125 WDI_EndScanRspCb wdiEndScanRspCb,
2126 void* pUserData
2127)
2128{
2129 WDI_EventInfoType wdiEventData;
2130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2131
2132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002133 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002134 ------------------------------------------------------------------------*/
2135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2136 {
2137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2138 "WDI API call before module is initialized - Fail request");
2139
Jeff Johnsone7245742012-09-05 17:12:55 -07002140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002141 }
2142
2143 /*------------------------------------------------------------------------
2144 Fill in Event data and post to the Main FSM
2145 ------------------------------------------------------------------------*/
2146 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002147 wdiEventData.pEventData = pwdiEndScanParams;
2148 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2149 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 wdiEventData.pUserData = pUserData;
2151
2152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2153
2154}/*WDI_EndScanReq*/
2155
2156
2157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 completed the scan process on the WLAN Device. Upon the
2160 call of this API the WLAN DAL will pack and send a HAL
2161 Finish Scan Request request message to the lower RIVA
2162 sub-system if DAL is in state STARTED.
2163
2164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002166
2167 WDI_InitScanReq must have been called.
2168
Jeff Johnsone7245742012-09-05 17:12:55 -07002169 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002171
Jeff Johnson295189b2012-06-20 16:38:30 -07002172 wdiFinishScanRspCb: callback for passing back the
2173 response of the finish scan operation received from the
2174 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002175
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 callback
2178
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 @see WDI_InitScanReq
2180 @return Result of the function call
2181*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002183WDI_FinishScanReq
2184(
2185 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2186 WDI_FinishScanRspCb wdiFinishScanRspCb,
2187 void* pUserData
2188)
2189{
2190 WDI_EventInfoType wdiEventData;
2191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2192
2193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002194 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 ------------------------------------------------------------------------*/
2196 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2197 {
2198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2199 "WDI API call before module is initialized - Fail request");
2200
Jeff Johnsone7245742012-09-05 17:12:55 -07002201 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 }
2203
2204 /*------------------------------------------------------------------------
2205 Fill in Event data and post to the Main FSM
2206 ------------------------------------------------------------------------*/
2207 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002208 wdiEventData.pEventData = pwdiFinishScanParams;
2209 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2210 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 wdiEventData.pUserData = pUserData;
2212
2213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2214
2215}/*WDI_FinishScanReq*/
2216
Jeff Johnsone7245742012-09-05 17:12:55 -07002217/*========================================================================
2218
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002220
Jeff Johnson295189b2012-06-20 16:38:30 -07002221==========================================================================*/
2222
2223/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002224 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 to start an association procedure to a BSS. Upon the
2226 call of this API the WLAN DAL will pack and send a HAL
2227 Join request message to the lower RIVA sub-system if
2228 DAL is in state STARTED.
2229
2230 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002232
2233 WDI_Start must have been called.
2234
Jeff Johnsone7245742012-09-05 17:12:55 -07002235 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002237
Jeff Johnson295189b2012-06-20 16:38:30 -07002238 wdiJoinRspCb: callback for passing back the response of
2239 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002240
Jeff Johnson295189b2012-06-20 16:38:30 -07002241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002242 callback
2243
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 @see WDI_Start
2245 @return Result of the function call
2246*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002248WDI_JoinReq
2249(
2250 WDI_JoinReqParamsType* pwdiJoinParams,
2251 WDI_JoinRspCb wdiJoinRspCb,
2252 void* pUserData
2253)
2254{
2255 WDI_EventInfoType wdiEventData;
2256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2257
2258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002260 ------------------------------------------------------------------------*/
2261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2262 {
2263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2264 "WDI API call before module is initialized - Fail request");
2265
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 }
2268
2269 /*------------------------------------------------------------------------
2270 Fill in Event data and post to the Main FSM
2271 ------------------------------------------------------------------------*/
2272 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 wdiEventData.pEventData = pwdiJoinParams;
2274 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2275 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 wdiEventData.pUserData = pUserData;
2277
2278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2279
2280}/*WDI_JoinReq*/
2281
2282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 wishes to configure the newly acquired or in process of
2285 being acquired BSS to the HW . Upon the call of this API
2286 the WLAN DAL will pack and send a HAL Config BSS request
2287 message to the lower RIVA sub-system if DAL is in state
2288 STARTED.
2289
2290 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002292
2293 WDI_JoinReq must have been called.
2294
Jeff Johnsone7245742012-09-05 17:12:55 -07002295 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002296 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002297
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 wdiConfigBSSRspCb: callback for passing back the
2299 response of the config BSS operation received from the
2300 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002301
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002303 callback
2304
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 @see WDI_JoinReq
2306 @return Result of the function call
2307*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002308WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002309WDI_ConfigBSSReq
2310(
2311 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2312 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2313 void* pUserData
2314)
2315{
2316 WDI_EventInfoType wdiEventData;
2317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2318
2319 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002320 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002321 ------------------------------------------------------------------------*/
2322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2323 {
2324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2325 "WDI API call before module is initialized - Fail request");
2326
Jeff Johnsone7245742012-09-05 17:12:55 -07002327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 }
2329
2330 /*------------------------------------------------------------------------
2331 Fill in Event data and post to the Main FSM
2332 ------------------------------------------------------------------------*/
2333 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 wdiEventData.pEventData = pwdiConfigBSSParams;
2335 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2336 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 wdiEventData.pUserData = pUserData;
2338
2339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2340
2341}/*WDI_ConfigBSSReq*/
2342
2343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002344 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002345 disassociating from the BSS and wishes to notify HW.
2346 Upon the call of this API the WLAN DAL will pack and
2347 send a HAL Del BSS request message to the lower RIVA
2348 sub-system if DAL is in state STARTED.
2349
2350 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002351 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002352
2353 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2354
Jeff Johnsone7245742012-09-05 17:12:55 -07002355 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002357
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 wdiDelBSSRspCb: callback for passing back the response
2359 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002362 callback
2363
2364 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 @return Result of the function call
2366*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002367WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002368WDI_DelBSSReq
2369(
2370 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2371 WDI_DelBSSRspCb wdiDelBSSRspCb,
2372 void* pUserData
2373)
2374{
2375 WDI_EventInfoType wdiEventData;
2376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2377
2378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002380 ------------------------------------------------------------------------*/
2381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2382 {
2383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2384 "WDI API call before module is initialized - Fail request");
2385
Jeff Johnsone7245742012-09-05 17:12:55 -07002386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 }
2388
2389 /*------------------------------------------------------------------------
2390 Fill in Event data and post to the Main FSM
2391 ------------------------------------------------------------------------*/
2392 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 wdiEventData.pEventData = pwdiDelBSSParams;
2394 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2395 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 wdiEventData.pUserData = pUserData;
2397
2398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2399
2400}/*WDI_DelBSSReq*/
2401
2402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 associated to a BSS and wishes to configure HW for
2405 associated state. Upon the call of this API the WLAN DAL
2406 will pack and send a HAL Post Assoc request message to
2407 the lower RIVA sub-system if DAL is in state STARTED.
2408
2409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002411
2412 WDI_JoinReq must have been called.
2413
2414 @param wdiPostAssocReqParams: the assoc parameters as specified
2415 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002416
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 wdiPostAssocRspCb: callback for passing back the
2418 response of the post assoc operation received from the
2419 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002420
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 callback
2423
Jeff Johnson295189b2012-06-20 16:38:30 -07002424 @see WDI_JoinReq
2425 @return Result of the function call
2426*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002427WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002428WDI_PostAssocReq
2429(
2430 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2431 WDI_PostAssocRspCb wdiPostAssocRspCb,
2432 void* pUserData
2433)
2434{
2435 WDI_EventInfoType wdiEventData;
2436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2437
2438 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 ------------------------------------------------------------------------*/
2441 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2442 {
2443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2444 "WDI API call before module is initialized - Fail request");
2445
Jeff Johnsone7245742012-09-05 17:12:55 -07002446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002447 }
2448
2449 /*------------------------------------------------------------------------
2450 Fill in Event data and post to the Main FSM
2451 ------------------------------------------------------------------------*/
2452 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002453 wdiEventData.pEventData = pwdiPostAssocReqParams;
2454 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2455 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 wdiEventData.pUserData = pUserData;
2457
2458 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2459
2460}/*WDI_PostAssocReq*/
2461
2462/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 association with another STA has ended and the station
2465 must be deleted from HW. Upon the call of this API the
2466 WLAN DAL will pack and send a HAL Del STA request
2467 message to the lower RIVA sub-system if DAL is in state
2468 STARTED.
2469
2470 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002472
2473 WDI_PostAssocReq must have been called.
2474
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002476 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002477
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 wdiDelSTARspCb: callback for passing back the response
2479 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002480
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002482 callback
2483
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 @see WDI_PostAssocReq
2485 @return Result of the function call
2486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002488WDI_DelSTAReq
2489(
2490 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2491 WDI_DelSTARspCb wdiDelSTARspCb,
2492 void* pUserData
2493)
2494{
2495 WDI_EventInfoType wdiEventData;
2496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2497
2498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 ------------------------------------------------------------------------*/
2501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2502 {
2503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2504 "WDI API call before module is initialized - Fail request");
2505
Jeff Johnsone7245742012-09-05 17:12:55 -07002506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 }
2508
2509 /*------------------------------------------------------------------------
2510 Fill in Event data and post to the Main FSM
2511 ------------------------------------------------------------------------*/
2512 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002513 wdiEventData.pEventData = pwdiDelSTAParams;
2514 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2515 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 wdiEventData.pUserData = pUserData;
2517
2518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2519
2520}/*WDI_DelSTAReq*/
2521
Jeff Johnsone7245742012-09-05 17:12:55 -07002522/*========================================================================
2523
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002525
Jeff Johnson295189b2012-06-20 16:38:30 -07002526==========================================================================*/
2527
2528/**
2529 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2530 install a BSS encryption key on the HW. Upon the call of this
2531 API the WLAN DAL will pack and send a Set BSS Key request
2532 message to the lower RIVA sub-system if DAL is in state
2533 STARTED.
2534
2535 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002537
2538 WDI_PostAssocReq must have been called.
2539
Jeff Johnsone7245742012-09-05 17:12:55 -07002540 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002542
Jeff Johnson295189b2012-06-20 16:38:30 -07002543 wdiSetBSSKeyRspCb: callback for passing back the
2544 response of the set BSS Key operation received from the
2545 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002546
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 callback
2549
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 @see WDI_PostAssocReq
2551 @return Result of the function call
2552*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002553WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002554WDI_SetBSSKeyReq
2555(
2556 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2557 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2558 void* pUserData
2559)
2560{
2561 WDI_EventInfoType wdiEventData;
2562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2563
2564 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002566 ------------------------------------------------------------------------*/
2567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2568 {
2569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2570 "WDI API call before module is initialized - Fail request");
2571
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 }
2574
2575 /*------------------------------------------------------------------------
2576 Fill in Event data and post to the Main FSM
2577 ------------------------------------------------------------------------*/
2578 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2580 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2581 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 wdiEventData.pUserData = pUserData;
2583
2584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2585
2586}/*WDI_SetBSSKeyReq*/
2587
2588/**
2589 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2590 uninstall a BSS key from HW. Upon the call of this API the
2591 WLAN DAL will pack and send a HAL Remove BSS Key request
2592 message to the lower RIVA sub-system if DAL is in state
2593 STARTED.
2594
2595 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002596 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002597
2598 WDI_SetBSSKeyReq must have been called.
2599
Jeff Johnsone7245742012-09-05 17:12:55 -07002600 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002602
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 wdiRemoveBSSKeyRspCb: callback for passing back the
2604 response of the remove BSS key operation received from
2605 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002606
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002608 callback
2609
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 @see WDI_SetBSSKeyReq
2611 @return Result of the function call
2612*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002613WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002614WDI_RemoveBSSKeyReq
2615(
2616 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2617 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2618 void* pUserData
2619)
2620{
2621 WDI_EventInfoType wdiEventData;
2622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2623
2624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 ------------------------------------------------------------------------*/
2627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2628 {
2629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2630 "WDI API call before module is initialized - Fail request");
2631
Jeff Johnsone7245742012-09-05 17:12:55 -07002632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 }
2634
2635 /*------------------------------------------------------------------------
2636 Fill in Event data and post to the Main FSM
2637 ------------------------------------------------------------------------*/
2638 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002639 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2640 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2641 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 wdiEventData.pUserData = pUserData;
2643
2644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2645
2646}/*WDI_RemoveBSSKeyReq*/
2647
2648
2649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 ready to install a STA(ast) encryption key in HW. Upon
2652 the call of this API the WLAN DAL will pack and send a
2653 HAL Set STA Key request message to the lower RIVA
2654 sub-system if DAL is in state STARTED.
2655
2656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002658
2659 WDI_PostAssocReq must have been called.
2660
Jeff Johnsone7245742012-09-05 17:12:55 -07002661 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002663
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 wdiSetSTAKeyRspCb: callback for passing back the
2665 response of the set STA key operation received from the
2666 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002667
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002669 callback
2670
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 @see WDI_PostAssocReq
2672 @return Result of the function call
2673*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002675WDI_SetSTAKeyReq
2676(
2677 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2678 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2679 void* pUserData
2680)
2681{
2682 WDI_EventInfoType wdiEventData;
2683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2684
2685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 ------------------------------------------------------------------------*/
2688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2689 {
2690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2691 "WDI API call before module is initialized - Fail request");
2692
Jeff Johnsone7245742012-09-05 17:12:55 -07002693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 }
2695
2696 /*------------------------------------------------------------------------
2697 Fill in Event data and post to the Main FSM
2698 ------------------------------------------------------------------------*/
2699 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002700 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2701 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2702 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 wdiEventData.pUserData = pUserData;
2704
2705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2706
2707}/*WDI_SetSTAKeyReq*/
2708
2709
2710/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 wants to uninstall a previously set STA key in HW. Upon
2713 the call of this API the WLAN DAL will pack and send a
2714 HAL Remove STA Key request message to the lower RIVA
2715 sub-system if DAL is in state STARTED.
2716
2717 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002719
2720 WDI_SetSTAKeyReq must have been called.
2721
Jeff Johnsone7245742012-09-05 17:12:55 -07002722 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002724
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 wdiRemoveSTAKeyRspCb: callback for passing back the
2726 response of the remove STA key operation received from
2727 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002728
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002730 callback
2731
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 @see WDI_SetSTAKeyReq
2733 @return Result of the function call
2734*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002735WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002736WDI_RemoveSTAKeyReq
2737(
2738 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2739 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2740 void* pUserData
2741)
2742{
2743 WDI_EventInfoType wdiEventData;
2744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2745
2746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002747 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 ------------------------------------------------------------------------*/
2749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2750 {
2751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2752 "WDI API call before module is initialized - Fail request");
2753
Jeff Johnsone7245742012-09-05 17:12:55 -07002754 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002755 }
2756
2757 /*------------------------------------------------------------------------
2758 Fill in Event data and post to the Main FSM
2759 ------------------------------------------------------------------------*/
2760 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002761 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2762 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2763 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 wdiEventData.pUserData = pUserData;
2765
2766 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2767
2768}/*WDI_RemoveSTAKeyReq*/
2769
2770
2771/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 wants to install a STA Bcast encryption key on the HW.
2774 Upon the call of this API the WLAN DAL will pack and
2775 send a HAL Start request message to the lower RIVA
2776 sub-system if DAL is in state STARTED.
2777
2778 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002780
2781 WDI_PostAssocReq must have been called.
2782
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002785
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 wdiSetSTABcastKeyRspCb: callback for passing back the
2787 response of the set BSS Key operation received from the
2788 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002789
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 callback
2792
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 @see WDI_PostAssocReq
2794 @return Result of the function call
2795*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002797WDI_SetSTABcastKeyReq
2798(
2799 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2800 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2801 void* pUserData
2802)
2803
2804{
2805 WDI_EventInfoType wdiEventData;
2806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2807
2808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 ------------------------------------------------------------------------*/
2811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2812 {
2813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2814 "WDI API call before module is initialized - Fail request");
2815
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 }
2818
2819 /*------------------------------------------------------------------------
2820 Fill in Event data and post to the Main FSM
2821 ------------------------------------------------------------------------*/
2822 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2824 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2825 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 wdiEventData.pUserData = pUserData;
2827
2828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2829
2830}/*WDI_SetSTABcastKeyReq*/
2831
2832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 MAC wants to uninstall a STA Bcast key from HW. Upon the
2835 call of this API the WLAN DAL will pack and send a HAL
2836 Remove STA Bcast Key request message to the lower RIVA
2837 sub-system if DAL is in state STARTED.
2838
2839 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002841
2842 WDI_SetSTABcastKeyReq must have been called.
2843
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 parameters as specified by the Device
2846 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002847
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2849 response of the remove STA Bcast key operation received
2850 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002851
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 callback
2854
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 @see WDI_SetSTABcastKeyReq
2856 @return Result of the function call
2857*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002858WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002859WDI_RemoveSTABcastKeyReq
2860(
2861 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2862 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2863 void* pUserData
2864)
2865{
2866 WDI_EventInfoType wdiEventData;
2867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2868
2869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002871 ------------------------------------------------------------------------*/
2872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2873 {
2874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2875 "WDI API call before module is initialized - Fail request");
2876
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 }
2879
2880 /*------------------------------------------------------------------------
2881 Fill in Event data and post to the Main FSM
2882 ------------------------------------------------------------------------*/
2883 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2885 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2886 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 wdiEventData.pUserData = pUserData;
2888
2889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2890
2891}/*WDI_RemoveSTABcastKeyReq*/
2892
2893/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 MAC wants to set Max Tx Power to HW. Upon the
2896 call of this API the WLAN DAL will pack and send a HAL
2897 Remove STA Bcast Key request message to the lower RIVA
2898 sub-system if DAL is in state STARTED.
2899
2900 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002902
2903 WDI_SetSTABcastKeyReq must have been called.
2904
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 parameters as specified by the Device
2907 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002908
Jeff Johnson295189b2012-06-20 16:38:30 -07002909 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2910 response of the remove STA Bcast key operation received
2911 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002912
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 callback
2915
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 @see WDI_SetMaxTxPowerReq
2917 @return Result of the function call
2918*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002919WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002920WDI_SetMaxTxPowerReq
2921(
2922 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2923 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2924 void* pUserData
2925)
2926{
2927 WDI_EventInfoType wdiEventData;
2928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2929
2930 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 ------------------------------------------------------------------------*/
2933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2934 {
2935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2936 "WDI API call before module is initialized - Fail request");
2937
Jeff Johnsone7245742012-09-05 17:12:55 -07002938 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 }
2940
2941 /*------------------------------------------------------------------------
2942 Fill in Event data and post to the Main FSM
2943 ------------------------------------------------------------------------*/
2944 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002945 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2946 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2947 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 wdiEventData.pUserData = pUserData;
2949
2950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2951}
2952
schangd82195a2013-03-13 18:41:24 -07002953/**
Arif Hussainfc753992013-08-09 15:09:58 -07002954 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2955 MAC wants to set Max Tx Power to HW for specific band.
2956
2957 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2958
2959 wdiReqStatusCb: callback for passing back the
2960 response msg from the device
2961
2962 pUserData: user data will be passed back with the
2963 callback
2964
2965 @see WDI_SetMaxTxPowerPerBandReq
2966 @return Result of the function call
2967*/
2968WDI_Status
2969WDI_SetMaxTxPowerPerBandReq
2970(
2971 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2972 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2973 void* pUserData
2974)
2975{
2976 WDI_EventInfoType wdiEventData;
2977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2978
2979 /*------------------------------------------------------------------------
2980 Sanity Check
2981 ------------------------------------------------------------------------*/
2982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2983 {
2984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2985 "WDI API call before module is initialized - Fail request");
2986
2987 return WDI_STATUS_E_NOT_ALLOWED;
2988 }
2989
2990 /*------------------------------------------------------------------------
2991 Fill in Event data and post to the Main FSM
2992 ------------------------------------------------------------------------*/
2993 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
2994 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
2995 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
2996 wdiEventData.pCBfnc = wdiReqStatusCb;
2997 wdiEventData.pUserData = pUserData;
2998
2999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3000}
3001
3002/**
schangd82195a2013-03-13 18:41:24 -07003003 @brief WDI_SetTxPowerReq will be called when the upper
3004 MAC wants to set Tx Power to HW.
3005 In state BUSY this request will be queued. Request won't
3006 be allowed in any other state.
3007
3008
3009 @param pwdiSetTxPowerParams: set TS Power parameters
3010 BSSID and target TX Power with dbm included
3011
3012 wdiReqStatusCb: callback for passing back the response
3013
3014 pUserData: user data will be passed back with the
3015 callback
3016
3017 @return Result of the function call
3018*/
3019WDI_Status
3020WDI_SetTxPowerReq
3021(
3022 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3023 WDA_SetTxPowerRspCb wdiReqStatusCb,
3024 void* pUserData
3025)
3026{
3027 WDI_EventInfoType wdiEventData;
3028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3029
3030 /*------------------------------------------------------------------------
3031 Sanity Check
3032 ------------------------------------------------------------------------*/
3033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3034 {
3035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3036 "WDI API call before module is initialized - Fail request");
3037
3038 return WDI_STATUS_E_NOT_ALLOWED;
3039 }
3040
3041 /*------------------------------------------------------------------------
3042 Fill in Event data and post to the Main FSM
3043 ------------------------------------------------------------------------*/
3044 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3045 wdiEventData.pEventData = pwdiSetTxPowerParams;
3046 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3047 wdiEventData.pCBfnc = wdiReqStatusCb;
3048 wdiEventData.pUserData = pUserData;
3049
3050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3051}
3052
Jeff Johnson295189b2012-06-20 16:38:30 -07003053#ifdef FEATURE_WLAN_CCX
3054WDI_Status
3055WDI_TSMStatsReq
3056(
3057 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3058 WDI_TsmRspCb wdiReqStatusCb,
3059 void* pUserData
3060)
3061{
3062 WDI_EventInfoType wdiEventData;
3063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003064 /*------------------------------------------------------------------------
3065 Sanity Check
3066 ------------------------------------------------------------------------*/
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
3072 return WDI_STATUS_E_NOT_ALLOWED;
3073 }
3074
3075 /*------------------------------------------------------------------------
3076 Fill in Event data and post to the Main FSM
3077 ------------------------------------------------------------------------*/
3078 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3079 wdiEventData.pEventData = pwdiTsmReqParams;
3080 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3081 wdiEventData.pCBfnc = wdiReqStatusCb;
3082 wdiEventData.pUserData = pUserData;
3083
3084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3085
3086}
3087#endif
3088
3089/*========================================================================
3090
3091 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003092
Jeff Johnson295189b2012-06-20 16:38:30 -07003093==========================================================================*/
3094
3095/**
3096 @brief WDI_AddTSReq will be called when the upper MAC to inform
3097 the device of a successful add TSpec negotiation. HW
3098 needs to receive the TSpec Info from the UMAC in order
3099 to configure properly the QoS data traffic. Upon the
3100 call of this API the WLAN DAL will pack and send a HAL
3101 Add TS request message to the lower RIVA sub-system if
3102 DAL is in state STARTED.
3103
3104 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003105 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003106
3107 WDI_PostAssocReq must have been called.
3108
3109 @param wdiAddTsReqParams: the add TS parameters as specified by
3110 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003111
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 wdiAddTsRspCb: callback for passing back the response of
3113 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003114
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 callback
3117
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 @see WDI_PostAssocReq
3119 @return Result of the function call
3120*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003121WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003122WDI_AddTSReq
3123(
3124 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3125 WDI_AddTsRspCb wdiAddTsRspCb,
3126 void* pUserData
3127)
3128{
3129 WDI_EventInfoType wdiEventData;
3130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3131
3132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 ------------------------------------------------------------------------*/
3135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3136 {
3137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3138 "WDI API call before module is initialized - Fail request");
3139
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 }
3142
3143 /*------------------------------------------------------------------------
3144 Fill in Event data and post to the Main FSM
3145 ------------------------------------------------------------------------*/
3146 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 wdiEventData.pEventData = pwdiAddTsReqParams;
3148 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3149 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003150 wdiEventData.pUserData = pUserData;
3151
3152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3153
3154}/*WDI_AddTSReq*/
3155
3156
3157
3158/**
3159 @brief WDI_DelTSReq will be called when the upper MAC has ended
3160 admission on a specific AC. This is to inform HW that
3161 QoS traffic parameters must be rest. Upon the call of
3162 this API the WLAN DAL will pack and send a HAL Del TS
3163 request message to the lower RIVA sub-system if DAL is
3164 in state STARTED.
3165
3166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003168
3169 WDI_AddTSReq must have been called.
3170
3171 @param wdiDelTsReqParams: the del TS parameters as specified by
3172 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003173
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 wdiDelTsRspCb: callback for passing back the response of
3175 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003176
Jeff Johnson295189b2012-06-20 16:38:30 -07003177 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 callback
3179
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 @see WDI_AddTSReq
3181 @return Result of the function call
3182*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003183WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003184WDI_DelTSReq
3185(
3186 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3187 WDI_DelTsRspCb wdiDelTsRspCb,
3188 void* pUserData
3189)
3190{
3191 WDI_EventInfoType wdiEventData;
3192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3193
3194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003196 ------------------------------------------------------------------------*/
3197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3198 {
3199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3200 "WDI API call before module is initialized - Fail request");
3201
Jeff Johnsone7245742012-09-05 17:12:55 -07003202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003203 }
3204
3205 /*------------------------------------------------------------------------
3206 Fill in Event data and post to the Main FSM
3207 ------------------------------------------------------------------------*/
3208 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003209 wdiEventData.pEventData = pwdiDelTsReqParams;
3210 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3211 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 wdiEventData.pUserData = pUserData;
3213
3214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3215
3216}/*WDI_DelTSReq*/
3217
3218
3219
3220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003221 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003222 wishes to update the EDCA parameters used by HW for QoS
3223 data traffic. Upon the call of this API the WLAN DAL
3224 will pack and send a HAL Update EDCA Params request
3225 message to the lower RIVA sub-system if DAL is in state
3226 STARTED.
3227
3228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003230
3231 WDI_PostAssocReq must have been called.
3232
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003235
Jeff Johnson295189b2012-06-20 16:38:30 -07003236 wdiUpdateEDCAParamsRspCb: callback for passing back the
3237 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003238
Jeff Johnson295189b2012-06-20 16:38:30 -07003239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003240 callback
3241
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 @see WDI_PostAssocReq
3243 @return Result of the function call
3244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003246WDI_UpdateEDCAParams
3247(
3248 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3249 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3250 void* pUserData
3251)
3252{
3253 WDI_EventInfoType wdiEventData;
3254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3255
3256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003258 ------------------------------------------------------------------------*/
3259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3260 {
3261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3262 "WDI API call before module is initialized - Fail request");
3263
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 }
3266
3267 /*------------------------------------------------------------------------
3268 Fill in Event data and post to the Main FSM
3269 ------------------------------------------------------------------------*/
3270 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3272 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3273 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 wdiEventData.pUserData = pUserData;
3275
3276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3277
3278}/*WDI_UpdateEDCAParams*/
3279
3280
3281/**
3282 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3283 successfully a BA session and needs to notify the HW for
3284 the appropriate settings to take place. Upon the call of
3285 this API the WLAN DAL will pack and send a HAL Add BA
3286 request message to the lower RIVA sub-system if DAL is
3287 in state STARTED.
3288
3289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003291
3292 WDI_PostAssocReq must have been called.
3293
3294 @param wdiAddBAReqParams: the add BA parameters as specified by
3295 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003296
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 wdiAddBARspCb: callback for passing back the response of
3298 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003299
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 callback
3302
Jeff Johnson295189b2012-06-20 16:38:30 -07003303 @see WDI_PostAssocReq
3304 @return Result of the function call
3305*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003306WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003307WDI_AddBASessionReq
3308(
3309 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3310 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3311 void* pUserData
3312)
3313{
3314 WDI_EventInfoType wdiEventData;
3315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3316
3317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003318 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003319 ------------------------------------------------------------------------*/
3320 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3321 {
3322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3323 "WDI API call before module is initialized - Fail request");
3324
Jeff Johnsone7245742012-09-05 17:12:55 -07003325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 }
3327
3328 /*------------------------------------------------------------------------
3329 Fill in Event data and post to the Main FSM
3330 ------------------------------------------------------------------------*/
3331 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3333 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3334 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 wdiEventData.pUserData = pUserData;
3336
3337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3338
3339}/*WDI_AddBASessionReq*/
3340
3341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003342 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003343 inform HW that it has deleted a previously created BA
3344 session. Upon the call of this API the WLAN DAL will
3345 pack and send a HAL Del BA request message to the lower
3346 RIVA sub-system if DAL is in state STARTED.
3347
3348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003350
3351 WDI_AddBAReq must have been called.
3352
3353 @param wdiDelBAReqParams: the del BA parameters as specified by
3354 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003355
Jeff Johnson295189b2012-06-20 16:38:30 -07003356 wdiDelBARspCb: callback for passing back the response of
3357 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003358
Jeff Johnson295189b2012-06-20 16:38:30 -07003359 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 callback
3361
Jeff Johnson295189b2012-06-20 16:38:30 -07003362 @see WDI_AddBAReq
3363 @return Result of the function call
3364*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003365WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003366WDI_DelBAReq
3367(
3368 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3369 WDI_DelBARspCb wdiDelBARspCb,
3370 void* pUserData
3371)
3372{
3373 WDI_EventInfoType wdiEventData;
3374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3375
3376 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003377 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003378 ------------------------------------------------------------------------*/
3379 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3380 {
3381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3382 "WDI API call before module is initialized - Fail request");
3383
Jeff Johnsone7245742012-09-05 17:12:55 -07003384 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 }
3386
3387 /*------------------------------------------------------------------------
3388 Fill in Event data and post to the Main FSM
3389 ------------------------------------------------------------------------*/
3390 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 wdiEventData.pEventData = pwdiDelBAReqParams;
3392 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3393 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 wdiEventData.pUserData = pUserData;
3395
3396 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3397
3398}/*WDI_DelBAReq*/
3399
Jeff Johnsone7245742012-09-05 17:12:55 -07003400/*========================================================================
3401
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003403
Jeff Johnson295189b2012-06-20 16:38:30 -07003404==========================================================================*/
3405
3406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003407 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003408 wants to set the power save related configurations of
3409 the WLAN Device. Upon the call of this API the WLAN DAL
3410 will pack and send a HAL Update CFG request message to
3411 the lower RIVA sub-system if DAL is in state STARTED.
3412
3413 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003415
3416 WDI_Start must have been called.
3417
Jeff Johnsone7245742012-09-05 17:12:55 -07003418 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003420
Jeff Johnson295189b2012-06-20 16:38:30 -07003421 wdiSetPwrSaveCfgCb: callback for passing back the
3422 response of the set power save cfg operation received
3423 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003424
Jeff Johnson295189b2012-06-20 16:38:30 -07003425 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003426 callback
3427
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 @return Result of the function call
3430*/
3431WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003432WDI_SetPwrSaveCfgReq
3433(
3434 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3435 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3436 void* pUserData
3437)
3438{
3439 WDI_EventInfoType wdiEventData;
3440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3441
3442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 ------------------------------------------------------------------------*/
3445 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3446 {
3447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3448 "WDI API call before module is initialized - Fail request");
3449
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 }
3452
3453 /*------------------------------------------------------------------------
3454 Fill in Event data and post to the Main FSM
3455 ------------------------------------------------------------------------*/
3456 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 wdiEventData.pEventData = pwdiPowerSaveCfg;
3458 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3459 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 wdiEventData.pUserData = pUserData;
3461
3462 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3463
3464}/*WDI_SetPwrSaveCfgReq*/
3465
3466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003467 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 request the device to get into IMPS power state. Upon
3469 the call of this API the WLAN DAL will send a HAL Enter
3470 IMPS request message to the lower RIVA sub-system if DAL
3471 is in state STARTED.
3472
3473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003475
Jeff Johnsone7245742012-09-05 17:12:55 -07003476
3477 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 response of the Enter IMPS operation received from the
3479 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003480
Jeff Johnson295189b2012-06-20 16:38:30 -07003481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 callback
3483
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 @see WDI_Start
3485 @return Result of the function call
3486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003488WDI_EnterImpsReq
3489(
3490 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3491 void* pUserData
3492)
3493{
3494 WDI_EventInfoType wdiEventData;
3495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3496
3497 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 ------------------------------------------------------------------------*/
3500 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3501 {
3502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3503 "WDI API call before module is initialized - Fail request");
3504
Jeff Johnsone7245742012-09-05 17:12:55 -07003505 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 }
3507
3508 /*------------------------------------------------------------------------
3509 Fill in Event data and post to the Main FSM
3510 ------------------------------------------------------------------------*/
3511 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003512 wdiEventData.pEventData = NULL;
3513 wdiEventData.uEventDataSize = 0;
3514 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 wdiEventData.pUserData = pUserData;
3516
3517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3518
3519}/*WDI_EnterImpsReq*/
3520
3521/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 request the device to get out of IMPS power state. Upon
3524 the call of this API the WLAN DAL will send a HAL Exit
3525 IMPS request message to the lower RIVA sub-system if DAL
3526 is in state STARTED.
3527
3528 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003530
Jeff Johnson295189b2012-06-20 16:38:30 -07003531
Jeff Johnsone7245742012-09-05 17:12:55 -07003532
3533 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003534 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003537 callback
3538
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 @see WDI_Start
3540 @return Result of the function call
3541*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003542WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003543WDI_ExitImpsReq
3544(
3545 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3546 void* pUserData
3547)
3548{
3549 WDI_EventInfoType wdiEventData;
3550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3551
3552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 ------------------------------------------------------------------------*/
3555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3556 {
3557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3558 "WDI API call before module is initialized - Fail request");
3559
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 }
3562
3563 /*------------------------------------------------------------------------
3564 Fill in Event data and post to the Main FSM
3565 ------------------------------------------------------------------------*/
3566 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 wdiEventData.pEventData = NULL;
3568 wdiEventData.uEventDataSize = 0;
3569 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 wdiEventData.pUserData = pUserData;
3571
3572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3573
3574}/*WDI_ExitImpsReq*/
3575
3576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 request the device to get into BMPS power state. Upon
3579 the call of this API the WLAN DAL will pack and send a
3580 HAL Enter BMPS request message to the lower RIVA
3581 sub-system if DAL is in state STARTED.
3582
3583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003585
3586 WDI_PostAssocReq must have been called.
3587
Jeff Johnsone7245742012-09-05 17:12:55 -07003588 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003590
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 wdiEnterBmpsRspCb: callback for passing back the
3592 response of the Enter BMPS operation received from the
3593 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 callback
3597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 @see WDI_PostAssocReq
3599 @return Result of the function call
3600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003602WDI_EnterBmpsReq
3603(
3604 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3605 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3606 void* pUserData
3607)
3608{
3609 WDI_EventInfoType wdiEventData;
3610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3611
3612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 ------------------------------------------------------------------------*/
3615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3616 {
3617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3618 "WDI API call before module is initialized - Fail request");
3619
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 }
3622
3623 /*------------------------------------------------------------------------
3624 Fill in Event data and post to the Main FSM
3625 ------------------------------------------------------------------------*/
3626 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3628 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3629 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 wdiEventData.pUserData = pUserData;
3631
3632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3633
3634}/*WDI_EnterBmpsReq*/
3635
3636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 request the device to get out of BMPS power state. Upon
3639 the call of this API the WLAN DAL will pack and send a
3640 HAL Exit BMPS request message to the lower RIVA
3641 sub-system if DAL is in state STARTED.
3642
3643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003645
3646 WDI_PostAssocReq must have been called.
3647
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 wdiExitBmpsRspCb: callback for passing back the response
3652 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003653
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 callback
3656
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 @see WDI_PostAssocReq
3658 @return Result of the function call
3659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003661WDI_ExitBmpsReq
3662(
3663 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3664 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3665 void* pUserData
3666)
3667{
3668 WDI_EventInfoType wdiEventData;
3669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3670
3671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 ------------------------------------------------------------------------*/
3674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3675 {
3676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3677 "WDI API call before module is initialized - Fail request");
3678
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 }
3681
3682 /*------------------------------------------------------------------------
3683 Fill in Event data and post to the Main FSM
3684 ------------------------------------------------------------------------*/
3685 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3687 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3688 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 wdiEventData.pUserData = pUserData;
3690
3691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3692
3693}/*WDI_ExitBmpsReq*/
3694
3695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 request the device to get into UAPSD power state. Upon
3698 the call of this API the WLAN DAL will pack and send a
3699 HAL Enter UAPSD request message to the lower RIVA
3700 sub-system if DAL is in state STARTED.
3701
3702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003704
3705 WDI_PostAssocReq must have been called.
3706 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003707
3708 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003710
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 wdiEnterUapsdRspCb: callback for passing back the
3712 response of the Enter UAPSD operation received from the
3713 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003714
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003716 callback
3717
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3719 @return Result of the function call
3720*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003721WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003722WDI_EnterUapsdReq
3723(
3724 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3725 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3726 void* pUserData
3727)
3728{
3729 WDI_EventInfoType wdiEventData;
3730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3731
3732 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003733 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 ------------------------------------------------------------------------*/
3735 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3736 {
3737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3738 "WDI API call before module is initialized - Fail request");
3739
Jeff Johnsone7245742012-09-05 17:12:55 -07003740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 }
3742
3743 /*------------------------------------------------------------------------
3744 Fill in Event data and post to the Main FSM
3745 ------------------------------------------------------------------------*/
3746 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003747 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3748 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3749 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 wdiEventData.pUserData = pUserData;
3751
3752 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3753
3754}/*WDI_EnterUapsdReq*/
3755
3756/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003757 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 request the device to get out of UAPSD power state. Upon
3759 the call of this API the WLAN DAL will send a HAL Exit
3760 UAPSD request message to the lower RIVA sub-system if
3761 DAL is in state STARTED.
3762
3763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003765
3766 WDI_PostAssocReq must have been called.
3767
Jeff Johnsone7245742012-09-05 17:12:55 -07003768 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 response of the Exit UAPSD operation received from the
3770 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003771
Jeff Johnson295189b2012-06-20 16:38:30 -07003772 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 callback
3774
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 @see WDI_PostAssocReq
3776 @return Result of the function call
3777*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003778WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003779WDI_ExitUapsdReq
3780(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003781 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3783 void* pUserData
3784)
3785{
3786 WDI_EventInfoType wdiEventData;
3787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3788
3789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 ------------------------------------------------------------------------*/
3792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3793 {
3794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3795 "WDI API call before module is initialized - Fail request");
3796
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003798 }
3799
3800 /*------------------------------------------------------------------------
3801 Fill in Event data and post to the Main FSM
3802 ------------------------------------------------------------------------*/
3803 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003804 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3805 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 wdiEventData.pUserData = pUserData;
3808
3809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3810
3811}/*WDI_ExitUapsdReq*/
3812
3813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003815 MAC wants to set the UAPSD related configurations
3816 of an associated STA (while acting as an AP) to the WLAN
3817 Device. Upon the call of this API the WLAN DAL will pack
3818 and send a HAL Update UAPSD params request message to
3819 the lower RIVA sub-system if DAL is in state STARTED.
3820
3821 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003823
3824 WDI_ConfigBSSReq must have been called.
3825
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 wdiUpdateUapsdParamsCb: callback for passing back the
3830 response of the update UAPSD params operation received
3831 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 callback
3835
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 @see WDI_ConfigBSSReq
3837 @return Result of the function call
3838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003840WDI_UpdateUapsdParamsReq
3841(
3842 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3843 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3844 void* pUserData
3845)
3846{
3847 WDI_EventInfoType wdiEventData;
3848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3849
3850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 ------------------------------------------------------------------------*/
3853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3854 {
3855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3856 "WDI API call before module is initialized - Fail request");
3857
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 }
3860
3861 /*------------------------------------------------------------------------
3862 Fill in Event data and post to the Main FSM
3863 ------------------------------------------------------------------------*/
3864 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003866 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 wdiEventData.pUserData = pUserData;
3869
3870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3871
3872}/*WDI_UpdateUapsdParamsReq*/
3873
3874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 MAC wants to set the UAPSD related configurations before
3877 requesting for enter UAPSD power state to the WLAN
3878 Device. Upon the call of this API the WLAN DAL will pack
3879 and send a HAL Set UAPSD params request message to
3880 the lower RIVA sub-system if DAL is in state STARTED.
3881
3882 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003884
3885 WDI_PostAssocReq must have been called.
3886
3887 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3888 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 wdiSetUapsdAcParamsCb: callback for passing back the
3891 response of the set UAPSD params operation received from
3892 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003893
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003895 callback
3896
Jeff Johnson295189b2012-06-20 16:38:30 -07003897 @see WDI_PostAssocReq
3898 @return Result of the function call
3899*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003900WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003901WDI_SetUapsdAcParamsReq
3902(
3903 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3904 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3905 void* pUserData
3906)
3907{
3908 WDI_EventInfoType wdiEventData;
3909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3910
3911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003913 ------------------------------------------------------------------------*/
3914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3915 {
3916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3917 "WDI API call before module is initialized - Fail request");
3918
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 }
3921
3922 /*------------------------------------------------------------------------
3923 Fill in Event data and post to the Main FSM
3924 ------------------------------------------------------------------------*/
3925 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 wdiEventData.pEventData = pwdiUapsdInfo;
3927 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3928 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 wdiEventData.pUserData = pUserData;
3930
3931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3932
3933}/*WDI_SetUapsdAcParamsReq*/
3934
3935/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 MAC wants to set/reset the RXP filters for received pkts
3938 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3939 and send a HAL configure RXP filter request message to
3940 the lower RIVA sub-system.
3941
3942 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003944
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
3946 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 filter as specified by the Device
3948 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 wdiConfigureRxpFilterCb: callback for passing back the
3951 response of the configure RXP filter operation received
3952 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003953
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003955 callback
3956
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 @return Result of the function call
3958*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003959WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003960WDI_ConfigureRxpFilterReq
3961(
3962 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3963 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3964 void* pUserData
3965)
3966{
3967 WDI_EventInfoType wdiEventData;
3968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3969
3970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 ------------------------------------------------------------------------*/
3973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3974 {
3975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3976 "WDI API call before module is initialized - Fail request");
3977
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003979 }
3980
3981 /*------------------------------------------------------------------------
3982 Fill in Event data and post to the Main FSM
3983 ------------------------------------------------------------------------*/
3984 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3986 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3987 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 wdiEventData.pUserData = pUserData;
3989
3990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3991}/*WDI_ConfigureRxpFilterReq*/
3992
3993/**
3994 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3995 wants to set the beacon filters while in power save.
3996 Upon the call of this API the WLAN DAL will pack and
3997 send a Beacon filter request message to the
3998 lower RIVA sub-system.
3999
4000 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004002
Jeff Johnsone7245742012-09-05 17:12:55 -07004003
4004 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 filter as specified by the Device
4006 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004007
Jeff Johnson295189b2012-06-20 16:38:30 -07004008 wdiBeaconFilterCb: callback for passing back the
4009 response of the set beacon filter operation received
4010 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004011
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 callback
4014
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 @return Result of the function call
4016*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004018WDI_SetBeaconFilterReq
4019(
4020 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4021 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4022 void* pUserData
4023)
4024{
4025 WDI_EventInfoType wdiEventData;
4026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4027
4028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 ------------------------------------------------------------------------*/
4031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4032 {
4033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4034 "WDI API call before module is initialized - Fail request");
4035
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 }
4038
4039 /*------------------------------------------------------------------------
4040 Fill in Event data and post to the Main FSM
4041 ------------------------------------------------------------------------*/
4042 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004043 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004044 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 wdiEventData.pUserData = pUserData;
4047
4048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4049}/*WDI_SetBeaconFilterReq*/
4050
4051/**
4052 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4053 wants to remove the beacon filter for particular IE
4054 while in power save. Upon the call of this API the WLAN
4055 DAL will pack and send a remove Beacon filter request
4056 message to the lower RIVA sub-system.
4057
4058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004060
Jeff Johnsone7245742012-09-05 17:12:55 -07004061
4062 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 filter as specified by the Device
4064 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 wdiBeaconFilterCb: callback for passing back the
4067 response of the remove beacon filter operation received
4068 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @return Result of the function call
4074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004076WDI_RemBeaconFilterReq
4077(
4078 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4079 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4080 void* pUserData
4081)
4082{
4083 WDI_EventInfoType wdiEventData;
4084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4085
4086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004088 ------------------------------------------------------------------------*/
4089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4090 {
4091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4092 "WDI API call before module is initialized - Fail request");
4093
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004095 }
4096
4097 /*------------------------------------------------------------------------
4098 Fill in Event data and post to the Main FSM
4099 ------------------------------------------------------------------------*/
4100 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004102 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 wdiEventData.pUserData = pUserData;
4105
4106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4107}/*WDI_RemBeaconFilterReq*/
4108
4109/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 MAC wants to set the RSSI thresholds related
4112 configurations while in power save. Upon the call of
4113 this API the WLAN DAL will pack and send a HAL Set RSSI
4114 thresholds request message to the lower RIVA
4115 sub-system if DAL is in state STARTED.
4116
4117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004119
4120 WDI_PostAssocReq must have been called.
4121
4122 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4123 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004124
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 wdiSetUapsdAcParamsCb: callback for passing back the
4126 response of the set UAPSD params operation received from
4127 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004128
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 callback
4131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 @see WDI_PostAssocReq
4133 @return Result of the function call
4134*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004135WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004136WDI_SetRSSIThresholdsReq
4137(
4138 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4139 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4140 void* pUserData
4141)
4142{
4143 WDI_EventInfoType wdiEventData;
4144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4145
4146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 ------------------------------------------------------------------------*/
4149 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4150 {
4151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4152 "WDI API call before module is initialized - Fail request");
4153
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 }
4156
4157 /*------------------------------------------------------------------------
4158 Fill in Event data and post to the Main FSM
4159 ------------------------------------------------------------------------*/
4160 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004162 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 wdiEventData.pUserData = pUserData;
4165
4166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4167}/* WDI_SetRSSIThresholdsReq*/
4168
4169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 wants to set the filter to minimize unnecessary host
4172 wakeup due to broadcast traffic while in power save.
4173 Upon the call of this API the WLAN DAL will pack and
4174 send a HAL host offload request message to the
4175 lower RIVA sub-system if DAL is in state STARTED.
4176
4177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004179
4180 WDI_PostAssocReq must have been called.
4181
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 wdiHostOffloadCb: callback for passing back the response
4186 of the host offload operation received from the
4187 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 callback
4191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 @see WDI_PostAssocReq
4193 @return Result of the function call
4194*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004195WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004196WDI_HostOffloadReq
4197(
4198 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4199 WDI_HostOffloadCb wdiHostOffloadCb,
4200 void* pUserData
4201)
4202{
4203 WDI_EventInfoType wdiEventData;
4204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4205
4206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 ------------------------------------------------------------------------*/
4209 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4210 {
4211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4212 "WDI API call before module is initialized - Fail request");
4213
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 }
4216
4217 /*------------------------------------------------------------------------
4218 Fill in Event data and post to the Main FSM
4219 ------------------------------------------------------------------------*/
4220 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004222 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wdiEventData.pUserData = pUserData;
4225
4226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4227}/*WDI_HostOffloadReq*/
4228
4229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 @brief WDI_KeepAliveReq will be called when the upper MAC
4231 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 and minimize unnecessary host wakeups due to while in power save.
4233 Upon the call of this API the WLAN DAL will pack and
4234 send a HAL Keep Alive request message to the
4235 lower RIVA sub-system if DAL is in state STARTED.
4236
4237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004239
4240 WDI_PostAssocReq must have been called.
4241
Jeff Johnsone7245742012-09-05 17:12:55 -07004242 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004244
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 wdiKeepAliveCb: callback for passing back the response
4246 of the Keep Alive operation received from the
4247 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004248
Jeff Johnson295189b2012-06-20 16:38:30 -07004249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 callback
4251
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 @see WDI_PostAssocReq
4253 @return Result of the function call
4254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004256WDI_KeepAliveReq
4257(
4258 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4259 WDI_KeepAliveCb wdiKeepAliveCb,
4260 void* pUserData
4261)
4262{
4263 WDI_EventInfoType wdiEventData;
4264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4265
4266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 ------------------------------------------------------------------------*/
4269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4270 {
4271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4272 "WDI_KeepAliveReq: WDI API call before module "
4273 "is initialized - Fail request");
4274
Jeff Johnsone7245742012-09-05 17:12:55 -07004275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 }
4277
4278 /*------------------------------------------------------------------------
4279 Fill in Event data and post to the Main FSM
4280 ------------------------------------------------------------------------*/
4281 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 wdiEventData.pEventData = pwdiKeepAliveParams;
4283 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4284 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 wdiEventData.pUserData = pUserData;
4286
4287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4288}/*WDI_KeepAliveReq*/
4289
4290/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004292 wants to set the Wowl Bcast ptrn to minimize unnecessary
4293 host wakeup due to broadcast traffic while in power
4294 save. Upon the call of this API the WLAN DAL will pack
4295 and send a HAL Wowl Bcast ptrn request message to the
4296 lower RIVA sub-system if DAL is in state STARTED.
4297
4298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004300
4301 WDI_PostAssocReq must have been called.
4302
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004305
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 wdiWowlAddBcPtrnCb: callback for passing back the
4307 response of the add Wowl bcast ptrn operation received
4308 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004309
Jeff Johnson295189b2012-06-20 16:38:30 -07004310 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 callback
4312
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 @see WDI_PostAssocReq
4314 @return Result of the function call
4315*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004317WDI_WowlAddBcPtrnReq
4318(
4319 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4320 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4321 void* pUserData
4322)
4323{
4324 WDI_EventInfoType wdiEventData;
4325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4326
4327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 ------------------------------------------------------------------------*/
4330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4331 {
4332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4333 "WDI API call before module is initialized - Fail request");
4334
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 }
4337
4338 /*------------------------------------------------------------------------
4339 Fill in Event data and post to the Main FSM
4340 ------------------------------------------------------------------------*/
4341 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004343 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 wdiEventData.pUserData = pUserData;
4346
4347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4348}/*WDI_WowlAddBcPtrnReq*/
4349
4350/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 wants to clear the Wowl Bcast ptrn. Upon the call of
4353 this API the WLAN DAL will pack and send a HAL delete
4354 Wowl Bcast ptrn request message to the lower RIVA
4355 sub-system if DAL is in state STARTED.
4356
4357 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004358 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004359
4360 WDI_WowlAddBcPtrnReq must have been called.
4361
Jeff Johnsone7245742012-09-05 17:12:55 -07004362 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004364
Jeff Johnson295189b2012-06-20 16:38:30 -07004365 wdiWowlDelBcPtrnCb: callback for passing back the
4366 response of the del Wowl bcast ptrn operation received
4367 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004368
Jeff Johnson295189b2012-06-20 16:38:30 -07004369 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004370 callback
4371
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 @see WDI_WowlAddBcPtrnReq
4373 @return Result of the function call
4374*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004375WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004376WDI_WowlDelBcPtrnReq
4377(
4378 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4379 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4380 void* pUserData
4381)
4382{
4383 WDI_EventInfoType wdiEventData;
4384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4385
4386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004387 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 ------------------------------------------------------------------------*/
4389 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4390 {
4391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4392 "WDI API call before module is initialized - Fail request");
4393
Jeff Johnsone7245742012-09-05 17:12:55 -07004394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 }
4396
4397 /*------------------------------------------------------------------------
4398 Fill in Event data and post to the Main FSM
4399 ------------------------------------------------------------------------*/
4400 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004402 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004404 wdiEventData.pUserData = pUserData;
4405
4406 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4407}/*WDI_WowlDelBcPtrnReq*/
4408
4409/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004411 wants to enter the Wowl state to minimize unnecessary
4412 host wakeup while in power save. Upon the call of this
4413 API the WLAN DAL will pack and send a HAL Wowl enter
4414 request message to the lower RIVA sub-system if DAL is
4415 in state STARTED.
4416
4417 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004418 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004419
4420 WDI_PostAssocReq must have been called.
4421
Jeff Johnsone7245742012-09-05 17:12:55 -07004422 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004424
Jeff Johnson295189b2012-06-20 16:38:30 -07004425 wdiWowlEnterReqCb: callback for passing back the
4426 response of the enter Wowl operation received from the
4427 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004428
Jeff Johnson295189b2012-06-20 16:38:30 -07004429 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004430 callback
4431
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 @see WDI_PostAssocReq
4433 @return Result of the function call
4434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004436WDI_WowlEnterReq
4437(
4438 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4439 WDI_WowlEnterReqCb wdiWowlEnterCb,
4440 void* pUserData
4441)
4442{
4443 WDI_EventInfoType wdiEventData;
4444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4445
4446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 ------------------------------------------------------------------------*/
4449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4450 {
4451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4452 "WDI API call before module is initialized - Fail request");
4453
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 }
4456
4457 /*------------------------------------------------------------------------
4458 Fill in Event data and post to the Main FSM
4459 ------------------------------------------------------------------------*/
4460 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004462 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 wdiEventData.pUserData = pUserData;
4465
4466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4467}/*WDI_WowlEnterReq*/
4468
4469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 wants to exit the Wowl state. Upon the call of this API
4472 the WLAN DAL will pack and send a HAL Wowl exit request
4473 message to the lower RIVA sub-system if DAL is in state
4474 STARTED.
4475
4476 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004477 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004478
4479 WDI_WowlEnterReq must have been called.
4480
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004483
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 wdiWowlExitReqCb: callback for passing back the response
4485 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 callback
4489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 @see WDI_WowlEnterReq
4491 @return Result of the function call
4492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004494WDI_WowlExitReq
4495(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004496 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 WDI_WowlExitReqCb wdiWowlExitCb,
4498 void* pUserData
4499)
4500{
4501 WDI_EventInfoType wdiEventData;
4502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4503
4504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 ------------------------------------------------------------------------*/
4507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4508 {
4509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4510 "WDI API call before module is initialized - Fail request");
4511
Jeff Johnsone7245742012-09-05 17:12:55 -07004512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 }
4514
4515 /*------------------------------------------------------------------------
4516 Fill in Event data and post to the Main FSM
4517 ------------------------------------------------------------------------*/
4518 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004519 wdiEventData.pEventData = pwdiWowlExitParams;
4520 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004521 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 wdiEventData.pUserData = pUserData;
4523
4524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4525}/*WDI_WowlExitReq*/
4526
4527/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004528 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004529 the upper MAC wants to dynamically adjusts the listen
4530 interval based on the WLAN/MSM activity. Upon the call
4531 of this API the WLAN DAL will pack and send a HAL
4532 configure Apps Cpu Wakeup State request message to the
4533 lower RIVA sub-system.
4534
4535 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004537
Jeff Johnsone7245742012-09-05 17:12:55 -07004538
4539 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 Apps Cpu Wakeup State as specified by the
4541 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004542
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4544 back the response of the configure Apps Cpu Wakeup State
4545 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004546
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004548 callback
4549
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 @return Result of the function call
4551*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004552WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004553WDI_ConfigureAppsCpuWakeupStateReq
4554(
4555 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4556 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4557 void* pUserData
4558)
4559{
4560 WDI_EventInfoType wdiEventData;
4561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4562
4563 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004565 ------------------------------------------------------------------------*/
4566 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4567 {
4568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4569 "WDI API call before module is initialized - Fail request");
4570
Jeff Johnsone7245742012-09-05 17:12:55 -07004571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004572 }
4573
4574 /*------------------------------------------------------------------------
4575 Fill in Event data and post to the Main FSM
4576 ------------------------------------------------------------------------*/
4577 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4579 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4580 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 wdiEventData.pUserData = pUserData;
4582
4583 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4584}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004586 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 to to perform a flush operation on a given AC. Upon the
4588 call of this API the WLAN DAL will pack and send a HAL
4589 Flush AC request message to the lower RIVA sub-system if
4590 DAL is in state STARTED.
4591
4592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004594
4595 WDI_AddBAReq must have been called.
4596
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004599
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 wdiFlushAcRspCb: callback for passing back the response
4601 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004602
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004604 callback
4605
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 @see WDI_AddBAReq
4607 @return Result of the function call
4608*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004609WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004610WDI_FlushAcReq
4611(
4612 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4613 WDI_FlushAcRspCb wdiFlushAcRspCb,
4614 void* pUserData
4615)
4616{
4617 WDI_EventInfoType wdiEventData;
4618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4619
4620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004622 ------------------------------------------------------------------------*/
4623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4624 {
4625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4626 "WDI API call before module is initialized - Fail request");
4627
Jeff Johnsone7245742012-09-05 17:12:55 -07004628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 }
4630
4631 /*------------------------------------------------------------------------
4632 Fill in Event data and post to the Main FSM
4633 ------------------------------------------------------------------------*/
4634 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004635 wdiEventData.pEventData = pwdiFlushAcReqParams;
4636 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4637 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 wdiEventData.pUserData = pUserData;
4639
4640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4641
4642}/*WDI_FlushAcReq*/
4643
4644/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 wants to notify the lower mac on a BT AMP event. This is
4647 to inform BTC-SLM that some BT AMP event occurred. Upon
4648 the call of this API the WLAN DAL will pack and send a
4649 HAL BT AMP event request message to the lower RIVA
4650 sub-system if DAL is in state STARTED.
4651
4652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004654
Jeff Johnsone7245742012-09-05 17:12:55 -07004655
4656 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004658
Jeff Johnson295189b2012-06-20 16:38:30 -07004659 wdiBtAmpEventRspCb: callback for passing back the
4660 response of the BT AMP event operation received from the
4661 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004662
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004664 callback
4665
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 @return Result of the function call
4667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004669WDI_BtAmpEventReq
4670(
4671 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4672 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4673 void* pUserData
4674)
4675{
4676 WDI_EventInfoType wdiEventData;
4677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4678
4679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004681 ------------------------------------------------------------------------*/
4682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4683 {
4684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4685 "WDI API call before module is initialized - Fail request");
4686
Jeff Johnsone7245742012-09-05 17:12:55 -07004687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004688 }
4689
4690 /*------------------------------------------------------------------------
4691 Fill in Event data and post to the Main FSM
4692 ------------------------------------------------------------------------*/
4693 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4695 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4696 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiEventData.pUserData = pUserData;
4698
4699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4700
4701}/*WDI_BtAmpEventReq*/
4702
Jeff Johnsone7245742012-09-05 17:12:55 -07004703#ifdef FEATURE_OEM_DATA_SUPPORT
4704/**
4705 @brief WDI_Start Oem Data Req will be called when the upper MAC
4706 wants to notify the lower mac on a oem data Req event.Upon
4707 the call of this API the WLAN DAL will pack and send a
4708 HAL OEM Data Req event 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
4712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004713
4714
Jeff Johnsone7245742012-09-05 17:12:55 -07004715
4716 @param pwdiOemDataReqParams: the Oem Data Req as
4717 specified by the Device Interface
4718
4719 wdiStartOemDataRspCb: callback for passing back the
4720 response of the Oem Data Req received from the
4721 device
4722
4723 pUserData: user data will be passed back with the
4724 callback
4725
4726 @return Result of the function call
4727*/
4728WDI_Status
4729WDI_StartOemDataReq
4730(
4731 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4732 WDI_oemDataRspCb wdiOemDataRspCb,
4733 void* pUserData
4734)
4735{
4736 WDI_EventInfoType wdiEventData;
4737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4738
4739 /*------------------------------------------------------------------------
4740 Sanity Check
4741 ------------------------------------------------------------------------*/
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
4747 return WDI_STATUS_E_NOT_ALLOWED;
4748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4754 wdiEventData.pEventData = pwdiOemDataReqParams;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4756 wdiEventData.pCBfnc = wdiOemDataRspCb;
4757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760
4761
4762}
4763
4764#endif
4765
4766
4767/*========================================================================
4768
Jeff Johnson295189b2012-06-20 16:38:30 -07004769 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004770
Jeff Johnson295189b2012-06-20 16:38:30 -07004771==========================================================================*/
4772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004773 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 the WLAN HW to change the current channel of operation.
4775 Upon the call of this API the WLAN DAL will pack and
4776 send a HAL Start request message to the lower RIVA
4777 sub-system if DAL is in state STARTED.
4778
4779 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004781
4782 WDI_Start must have been called.
4783
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004786
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 wdiSwitchChRspCb: callback for passing back the response
4788 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004789
Jeff Johnson295189b2012-06-20 16:38:30 -07004790 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 callback
4792
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 @see WDI_Start
4794 @return Result of the function call
4795*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004797WDI_SwitchChReq
4798(
4799 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4800 WDI_SwitchChRspCb wdiSwitchChRspCb,
4801 void* pUserData
4802)
4803{
4804 WDI_EventInfoType wdiEventData;
4805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4806
4807 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004808 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 ------------------------------------------------------------------------*/
4810 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4811 {
4812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4813 "WDI API call before module is initialized - Fail request");
4814
Jeff Johnsone7245742012-09-05 17:12:55 -07004815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 }
4817
4818 /*------------------------------------------------------------------------
4819 Fill in Event data and post to the Main FSM
4820 ------------------------------------------------------------------------*/
4821 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004822 wdiEventData.pEventData = pwdiSwitchChReqParams;
4823 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4824 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 wdiEventData.pUserData = pUserData;
4826
4827 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4828
4829}/*WDI_SwitchChReq*/
4830
4831
4832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004833 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wishes to add or update a STA in HW. Upon the call of
4835 this API the WLAN DAL will pack and send a HAL Start
4836 message request message to the lower RIVA sub-system if
4837 DAL is in state STARTED.
4838
4839 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004840 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004841
4842 WDI_Start must have been called.
4843
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004845 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004846
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 wdiConfigSTARspCb: callback for passing back the
4848 response of the config STA operation received from the
4849 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004850
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004852 callback
4853
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 @see WDI_Start
4855 @return Result of the function call
4856*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004857WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004858WDI_ConfigSTAReq
4859(
4860 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4861 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4862 void* pUserData
4863)
4864{
4865 WDI_EventInfoType wdiEventData;
4866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4867
4868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004869 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004870 ------------------------------------------------------------------------*/
4871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4872 {
4873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4874 "WDI API call before module is initialized - Fail request");
4875
Jeff Johnsone7245742012-09-05 17:12:55 -07004876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 }
4878
4879 /*------------------------------------------------------------------------
4880 Fill in Event data and post to the Main FSM
4881 ------------------------------------------------------------------------*/
4882 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004883 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4884 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4885 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 wdiEventData.pUserData = pUserData;
4887
4888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4889
4890}/*WDI_ConfigSTAReq*/
4891
4892/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004893 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004894 wants to change the state of an ongoing link. Upon the
4895 call of this API the WLAN DAL will pack and send a HAL
4896 Start message request message to the lower RIVA
4897 sub-system if DAL is in state STARTED.
4898
4899 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004900 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004901
4902 WDI_JoinStartReq must have been called.
4903
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004906
Jeff Johnson295189b2012-06-20 16:38:30 -07004907 wdiSetLinkStateRspCb: callback for passing back the
4908 response of the set link state operation received from
4909 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004910
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004912 callback
4913
Jeff Johnson295189b2012-06-20 16:38:30 -07004914 @see WDI_JoinStartReq
4915 @return Result of the function call
4916*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004917WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004918WDI_SetLinkStateReq
4919(
4920 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4921 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4922 void* pUserData
4923)
4924{
4925 WDI_EventInfoType wdiEventData;
4926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4927
4928 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004929 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004930 ------------------------------------------------------------------------*/
4931 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4932 {
4933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4934 "WDI API call before module is initialized - Fail request");
4935
Jeff Johnsone7245742012-09-05 17:12:55 -07004936 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004937 }
4938
4939 /*------------------------------------------------------------------------
4940 Fill in Event data and post to the Main FSM
4941 ------------------------------------------------------------------------*/
4942 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004943 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4944 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4945 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 wdiEventData.pUserData = pUserData;
4947
4948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4949
4950}/*WDI_SetLinkStateReq*/
4951
4952
4953/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 to get statistics (MIB counters) from the device. Upon
4956 the call of this API the WLAN DAL will pack and send a
4957 HAL Start request message to the lower RIVA sub-system
4958 if DAL is in state STARTED.
4959
4960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004962
4963 WDI_Start must have been called.
4964
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004967
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 wdiGetStatsRspCb: callback for passing back the response
4969 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004970
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004972 callback
4973
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 @see WDI_Start
4975 @return Result of the function call
4976*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004977WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004978WDI_GetStatsReq
4979(
4980 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4981 WDI_GetStatsRspCb wdiGetStatsRspCb,
4982 void* pUserData
4983)
4984{
4985 WDI_EventInfoType wdiEventData;
4986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4987
4988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004990 ------------------------------------------------------------------------*/
4991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4992 {
4993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4994 "WDI API call before module is initialized - Fail request");
4995
Jeff Johnsone7245742012-09-05 17:12:55 -07004996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004997 }
4998
4999 /*------------------------------------------------------------------------
5000 Fill in Event data and post to the Main FSM
5001 ------------------------------------------------------------------------*/
5002 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005003 wdiEventData.pEventData = pwdiGetStatsReqParams;
5004 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5005 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 wdiEventData.pUserData = pUserData;
5007
5008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5009
5010}/*WDI_GetStatsReq*/
5011
Srinivas Girigowda2471d832013-01-25 13:33:11 -08005012#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5013/**
5014 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5015 to get roam rssi from the device. Upon
5016 the call of this API the WLAN DAL will pack and send a
5017 HAL Start request message to the lower RIVA sub-system
5018 if DAL is in state STARTED.
5019
5020 In state BUSY this request will be queued. Request won't
5021 be allowed in any other state.
5022
5023 WDI_Start must have been called.
5024
5025 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5026 specified by the Device Interface
5027
5028 wdiGetRoamRssiRspCb: callback for passing back the response
5029 of the get stats operation received from the device
5030
5031 pUserData: user data will be passed back with the
5032 callback
5033
5034 @see WDI_Start
5035 @return Result of the function call
5036*/
5037WDI_Status
5038WDI_GetRoamRssiReq
5039(
5040 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5041 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5042 void* pUserData
5043)
5044{
5045 WDI_EventInfoType wdiEventData;
5046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5047
5048 /*------------------------------------------------------------------------
5049 Sanity Check
5050 ------------------------------------------------------------------------*/
5051 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5052 {
5053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5054 "WDI API call before module is initialized - Fail request");
5055
5056 return WDI_STATUS_E_NOT_ALLOWED;
5057 }
5058 /*------------------------------------------------------------------------
5059 Fill in Event data and post to the Main FSM
5060 ------------------------------------------------------------------------*/
5061 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5062 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5063 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5064 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5065 wdiEventData.pUserData = pUserData;
5066
5067 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5068
5069}/*WDI_GetRoamRssiReq*/
5070#endif
5071
Jeff Johnson295189b2012-06-20 16:38:30 -07005072
5073/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 it wishes to change the configuration of the WLAN
5076 Device. Upon the call of this API the WLAN DAL will pack
5077 and send a HAL Update CFG request message to the lower
5078 RIVA sub-system if DAL is in state STARTED.
5079
5080 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005081 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005082
5083 WDI_Start must have been called.
5084
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005087
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 wdiUpdateCfgsRspCb: callback for passing back the
5089 response of the update cfg operation received from the
5090 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005091
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 callback
5094
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 @see WDI_Start
5096 @return Result of the function call
5097*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005098WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005099WDI_UpdateCfgReq
5100(
5101 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5102 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5103 void* pUserData
5104)
5105{
5106 WDI_EventInfoType wdiEventData;
5107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5108
5109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005111 ------------------------------------------------------------------------*/
5112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5113 {
5114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5115 "WDI API call before module is initialized - Fail request");
5116
Jeff Johnsone7245742012-09-05 17:12:55 -07005117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 }
5119
5120 /*------------------------------------------------------------------------
5121 Fill in Event data and post to the Main FSM
5122 ------------------------------------------------------------------------*/
5123 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005124 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5125 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5126 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005127 wdiEventData.pUserData = pUserData;
5128
5129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5130
5131}/*WDI_UpdateCfgReq*/
5132
5133
5134
5135/**
5136 @brief WDI_AddBAReq will be called when the upper MAC has setup
5137 successfully a BA session and needs to notify the HW for
5138 the appropriate settings to take place. Upon the call of
5139 this API the WLAN DAL will pack and send a HAL Add BA
5140 request message to the lower RIVA sub-system if DAL is
5141 in state STARTED.
5142
5143 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005145
5146 WDI_PostAssocReq must have been called.
5147
5148 @param wdiAddBAReqParams: the add BA parameters as specified by
5149 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005150
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 wdiAddBARspCb: callback for passing back the response of
5152 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005153
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 callback
5156
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 @see WDI_PostAssocReq
5158 @return Result of the function call
5159*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005160WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005161WDI_AddBAReq
5162(
5163 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5164 WDI_AddBARspCb wdiAddBARspCb,
5165 void* pUserData
5166)
5167{
5168 WDI_EventInfoType wdiEventData;
5169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5170
5171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 ------------------------------------------------------------------------*/
5174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5175 {
5176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5177 "WDI API call before module is initialized - Fail request");
5178
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 }
5181
5182 /*------------------------------------------------------------------------
5183 Fill in Event data and post to the Main FSM
5184 ------------------------------------------------------------------------*/
5185 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005186 wdiEventData.pEventData = pwdiAddBAReqParams;
5187 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5188 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 wdiEventData.pUserData = pUserData;
5190
5191 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5192
5193}/*WDI_AddBAReq*/
5194
5195
5196/**
5197 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5198 successfully a BA session and needs to notify the HW for
5199 the appropriate settings to take place. Upon the call of
5200 this API the WLAN DAL will pack and send a HAL Add BA
5201 request message to the lower RIVA sub-system if DAL is
5202 in state STARTED.
5203
5204 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005206
5207 WDI_PostAssocReq must have been called.
5208
5209 @param wdiAddBAReqParams: the add BA parameters as specified by
5210 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005211
Jeff Johnson295189b2012-06-20 16:38:30 -07005212 wdiAddBARspCb: callback for passing back the response of
5213 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005216 callback
5217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 @see WDI_PostAssocReq
5219 @return Result of the function call
5220*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005221WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005222WDI_TriggerBAReq
5223(
5224 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5225 WDI_TriggerBARspCb wdiTriggerBARspCb,
5226 void* pUserData
5227)
5228{
5229 WDI_EventInfoType wdiEventData;
5230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5231
5232 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 ------------------------------------------------------------------------*/
5235 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5236 {
5237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5238 "WDI API call before module is initialized - Fail request");
5239
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 }
5242
5243 /*------------------------------------------------------------------------
5244 Fill in Event data and post to the Main FSM
5245 ------------------------------------------------------------------------*/
5246 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5248 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5249 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 wdiEventData.pUserData = pUserData;
5251
5252 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5253
5254}/*WDI_AddBAReq*/
5255
5256/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 wishes to update any of the Beacon parameters used by HW.
5259 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5260 message to the lower RIVA sub-system if DAL is in state
5261 STARTED.
5262
5263 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005265
5266 WDI_PostAssocReq must have been called.
5267
Jeff Johnsone7245742012-09-05 17:12:55 -07005268 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005269 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005270
Jeff Johnson295189b2012-06-20 16:38:30 -07005271 wdiUpdateBeaconParamsRspCb: callback for passing back the
5272 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005273
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 callback
5276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 @see WDI_PostAssocReq
5278 @return Result of the function call
5279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005281WDI_UpdateBeaconParamsReq
5282(
5283 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5284 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5285 void* pUserData
5286)
5287{
5288 WDI_EventInfoType wdiEventData;
5289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5290
5291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005293 ------------------------------------------------------------------------*/
5294 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5295 {
5296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5297 "WDI API call before module is initialized - Fail request");
5298
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 }
5301
5302 /*------------------------------------------------------------------------
5303 Fill in Event data and post to the Main FSM
5304 ------------------------------------------------------------------------*/
5305 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5307 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5308 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 wdiEventData.pUserData = pUserData;
5310
5311 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5312
5313}/*WDI_UpdateBeaconParamsReq*/
5314
5315/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wishes to update the Beacon template used by HW.
5318 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5319 message to the lower RIVA sub-system if DAL is in state
5320 STARTED.
5321
5322 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005323 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005324
5325 WDI_PostAssocReq must have been called.
5326
Jeff Johnsone7245742012-09-05 17:12:55 -07005327 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 wdiSendBeaconParamsRspCb: callback for passing back the
5331 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005332
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005334 callback
5335
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 @see WDI_PostAssocReq
5337 @return Result of the function call
5338*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005339WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005340WDI_SendBeaconParamsReq
5341(
5342 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5343 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5344 void* pUserData
5345)
5346{
5347 WDI_EventInfoType wdiEventData;
5348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5349
5350 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 ------------------------------------------------------------------------*/
5353 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5354 {
5355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5356 "WDI API call before module is initialized - Fail request");
5357
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 }
5360
5361 /*------------------------------------------------------------------------
5362 Fill in Event data and post to the Main FSM
5363 ------------------------------------------------------------------------*/
5364 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 wdiEventData.pEventData = pwdiSendBeaconParams;
5366 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5367 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 wdiEventData.pUserData = pUserData;
5369
5370 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5371
5372}/*WDI_SendBeaconParamsReq*/
5373
5374/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 upper MAC wants to update the probe response template to
5377 be transmitted as Soft AP
5378 Upon the call of this API the WLAN DAL will
5379 pack and send the probe rsp template message to the
5380 lower RIVA sub-system if DAL is in state STARTED.
5381
5382 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005383 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005384
5385
Jeff Johnsone7245742012-09-05 17:12:55 -07005386 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005388
Jeff Johnson295189b2012-06-20 16:38:30 -07005389 wdiSendBeaconParamsRspCb: callback for passing back the
5390 response of the Send Beacon Params operation received
5391 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005392
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 callback
5395
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 @see WDI_AddBAReq
5397 @return Result of the function call
5398*/
5399
Jeff Johnsone7245742012-09-05 17:12:55 -07005400WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005401WDI_UpdateProbeRspTemplateReq
5402(
5403 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5404 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5405 void* pUserData
5406)
5407{
5408 WDI_EventInfoType wdiEventData;
5409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5410
5411 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005412 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005413 ------------------------------------------------------------------------*/
5414 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5415 {
5416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5417 "WDI API call before module is initialized - Fail request");
5418
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 }
5421
5422 /*------------------------------------------------------------------------
5423 Fill in Event data and post to the Main FSM
5424 ------------------------------------------------------------------------*/
5425 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5427 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5428 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 wdiEventData.pUserData = pUserData;
5430
5431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5432
5433}/*WDI_UpdateProbeRspTemplateReq*/
5434
5435/**
5436 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5437 to the NV memory.
5438
5439
5440 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5441 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005442
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 wdiNvDownloadRspCb: callback for passing back the response of
5444 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005445
Jeff Johnson295189b2012-06-20 16:38:30 -07005446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 callback
5448
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 @see WDI_PostAssocReq
5450 @return Result of the function call
5451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005453WDI_NvDownloadReq
5454(
5455 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5456 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5457 void* pUserData
5458)
5459{
5460 WDI_EventInfoType wdiEventData;
5461
5462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 ------------------------------------------------------------------------*/
5465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5466 {
5467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5468 "WDI API call before module is initialized - Fail request");
5469
Jeff Johnsone7245742012-09-05 17:12:55 -07005470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 }
5472
5473 /*------------------------------------------------------------------------
5474 Fill in Event data and post to the Main FSM
5475 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005476 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5477 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5478 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5479 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 wdiEventData.pUserData = pUserData;
5481
5482 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5483
5484}/*WDI_NVDownloadReq*/
5485
Jeff Johnson295189b2012-06-20 16:38:30 -07005486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005487 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005488 upper MAC wants to send Notice of Absence
5489 Upon the call of this API the WLAN DAL will
5490 pack and send the probe rsp template message to the
5491 lower RIVA sub-system if DAL is in state STARTED.
5492
5493 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005495
5496
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005498 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005499
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 wdiSendBeaconParamsRspCb: callback for passing back the
5501 response of the Send Beacon Params operation received
5502 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 callback
5506
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 @see WDI_AddBAReq
5508 @return Result of the function call
5509*/
5510WDI_Status
5511WDI_SetP2PGONOAReq
5512(
5513 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5514 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5515 void* pUserData
5516)
5517{
5518 WDI_EventInfoType wdiEventData;
5519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5520
5521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005523 ------------------------------------------------------------------------*/
5524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5525 {
5526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5527 "WDI API call before module is initialized - Fail request");
5528
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 }
5531
5532 /*------------------------------------------------------------------------
5533 Fill in Event data and post to the Main FSM
5534 ------------------------------------------------------------------------*/
5535 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005536 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5537 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5538 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 wdiEventData.pUserData = pUserData;
5540
5541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5542
5543}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005544
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305545#ifdef FEATURE_WLAN_TDLS
5546/**
5547 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5548 upper MAC wants to send TDLS Link Establish Request Parameters
5549 Upon the call of this API the WLAN DAL will
5550 pack and send the TDLS Link Establish Request message to the
5551 lower RIVA sub-system if DAL is in state STARTED.
5552
5553 In state BUSY this request will be queued. Request won't
5554 be allowed in any other state.
5555
5556
5557 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5558 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5559
5560 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5561 response of the TDLS Link Establish request received
5562 from the device
5563
5564 pUserData: user data will be passed back with the
5565 callback
5566
5567 @see
5568 @return Result of the function call
5569*/
5570WDI_Status
5571WDI_SetTDLSLinkEstablishReq
5572(
5573 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5574 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5575 void* pUserData
5576)
5577{
5578 WDI_EventInfoType wdiEventData;
5579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5580
5581 /*------------------------------------------------------------------------
5582 Sanity Check
5583 ------------------------------------------------------------------------*/
5584 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5585 {
5586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5587 "WDI API call before module is initialized - Fail request");
5588
5589 return WDI_STATUS_E_NOT_ALLOWED;
5590 }
5591
5592 /*------------------------------------------------------------------------
5593 Fill in Event data and post to the Main FSM
5594 ------------------------------------------------------------------------*/
5595 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5596 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5597 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5598 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5599 wdiEventData.pUserData = pUserData;
5600
5601 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5602
5603}/*WDI_SetTDLSLinkEstablishReq*/
5604#endif
5605
Jeff Johnson295189b2012-06-20 16:38:30 -07005606/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005607 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 UMAC wanted to add STA self while opening any new session
5609 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005611
5612
Jeff Johnsone7245742012-09-05 17:12:55 -07005613 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005615
Jeff Johnson295189b2012-06-20 16:38:30 -07005616 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 callback
5618
5619 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 @return Result of the function call
5621*/
5622WDI_Status
5623WDI_AddSTASelfReq
5624(
5625 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5626 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5627 void* pUserData
5628)
5629{
5630 WDI_EventInfoType wdiEventData;
5631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5632
5633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005634 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005635 ------------------------------------------------------------------------*/
5636 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5637 {
5638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5639 "WDI API call before module is initialized - Fail request");
5640
Jeff Johnsone7245742012-09-05 17:12:55 -07005641 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005642 }
5643
5644 /*------------------------------------------------------------------------
5645 Fill in Event data and post to the Main FSM
5646 ------------------------------------------------------------------------*/
5647 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005648 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5649 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5650 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 wdiEventData.pUserData = pUserData;
5652
5653 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5654
5655}/*WDI_AddSTASelfReq*/
5656
5657
Jeff Johnsone7245742012-09-05 17:12:55 -07005658#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005659/**
5660 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5661 the device of a successful add TSpec negotiation. HW
5662 needs to receive the TSpec Info from the UMAC in order
5663 to configure properly the QoS data traffic. Upon the
5664 call of this API the WLAN DAL will pack and send a HAL
5665 Add TS request message to the lower RIVA sub-system if
5666 DAL is in state STARTED.
5667
5668 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005669 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005670
5671 WDI_PostAssocReq must have been called.
5672
5673 @param wdiAddTsReqParams: the add TS parameters as specified by
5674 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005675
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiAddTsRspCb: callback for passing back the response of
5677 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005678
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 callback
5681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 @see WDI_PostAssocReq
5683 @return Result of the function call
5684*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005685WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005686WDI_AggrAddTSReq
5687(
5688 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5689 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5690 void* pUserData
5691)
5692{
5693 WDI_EventInfoType wdiEventData;
5694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5695
5696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 ------------------------------------------------------------------------*/
5699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5700 {
5701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5702 "WDI API call before module is initialized - Fail request");
5703
Jeff Johnsone7245742012-09-05 17:12:55 -07005704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 }
5706
5707 /*------------------------------------------------------------------------
5708 Fill in Event data and post to the Main FSM
5709 ------------------------------------------------------------------------*/
5710 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5712 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5713 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 wdiEventData.pUserData = pUserData;
5715
5716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5717
5718}/*WDI_AggrAddTSReq*/
5719
5720#endif /* WLAN_FEATURE_VOWIFI_11R */
5721
Jeff Johnson295189b2012-06-20 16:38:30 -07005722/**
5723 @brief WDI_FTMCommandReq
5724 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005725
5726 @param ftmCommandReq: FTM Command Body
5727 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005729
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 @see
5731 @return Result of the function call
5732*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005734WDI_FTMCommandReq
5735(
5736 WDI_FTMCommandReqType *ftmCommandReq,
5737 WDI_FTMCommandRspCb ftmCommandRspCb,
5738 void *pUserData
5739)
5740{
5741 WDI_EventInfoType wdiEventData;
5742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5743
5744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005746 ------------------------------------------------------------------------*/
5747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5748 {
5749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5750 "WDI API call before module is initialized - Fail request");
5751
Jeff Johnsone7245742012-09-05 17:12:55 -07005752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005753 }
5754
5755 /*------------------------------------------------------------------------
5756 Fill in Event data and post to the Main FSM
5757 ------------------------------------------------------------------------*/
5758 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5759 wdiEventData.pEventData = (void *)ftmCommandReq;
5760 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5761 wdiEventData.pCBfnc = ftmCommandRspCb;
5762 wdiEventData.pUserData = pUserData;
5763
5764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5765}
Jeff Johnson295189b2012-06-20 16:38:30 -07005766/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005768
5769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005771
5772
5773 @param pwdiResumeReqParams: as specified by
5774 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005775
Jeff Johnson295189b2012-06-20 16:38:30 -07005776 wdiResumeReqRspCb: callback for passing back the response of
5777 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005780 callback
5781
5782 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005783 @return Result of the function call
5784*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005785WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005786WDI_HostResumeReq
5787(
5788 WDI_ResumeParamsType* pwdiResumeReqParams,
5789 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5790 void* pUserData
5791)
5792{
5793 WDI_EventInfoType wdiEventData;
5794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5795
5796 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 ------------------------------------------------------------------------*/
5799 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5800 {
5801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5802 "WDI API call before module is initialized - Fail request");
5803
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 }
5806
5807 /*------------------------------------------------------------------------
5808 Fill in Event data and post to the Main FSM
5809 ------------------------------------------------------------------------*/
5810 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 wdiEventData.pEventData = pwdiResumeReqParams;
5812 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5813 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005814 wdiEventData.pUserData = pUserData;
5815
5816 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5817
5818}/*WDI_HostResumeReq*/
5819
5820/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005822
5823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005825
5826
5827 @param pwdiDelStaSelfReqParams: as specified by
5828 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005829
Jeff Johnson295189b2012-06-20 16:38:30 -07005830 wdiDelStaSelfRspCb: callback for passing back the response of
5831 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005832
Jeff Johnson295189b2012-06-20 16:38:30 -07005833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005834 callback
5835
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 @see WDI_PostAssocReq
5837 @return Result of the function call
5838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005840WDI_DelSTASelfReq
5841(
5842 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5843 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5844 void* pUserData
5845)
5846{
5847 WDI_EventInfoType wdiEventData;
5848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5849
5850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005852 ------------------------------------------------------------------------*/
5853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5854 {
5855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5856 "WDI API call before module is initialized - Fail request");
5857
Jeff Johnsone7245742012-09-05 17:12:55 -07005858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 }
5860
5861 /*------------------------------------------------------------------------
5862 Fill in Event data and post to the Main FSM
5863 ------------------------------------------------------------------------*/
5864 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005865 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5866 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5867 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 wdiEventData.pUserData = pUserData;
5869
5870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5871
5872}/*WDI_AggrAddTSReq*/
5873
5874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5876 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 Upon the call of this API the WLAN DAL will pack
5878 and send a HAL Set Tx Per Tracking request message to the
5879 lower RIVA sub-system if DAL is in state STARTED.
5880
5881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005883
Jeff Johnsone7245742012-09-05 17:12:55 -07005884 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005886
Jeff Johnson295189b2012-06-20 16:38:30 -07005887 pwdiSetTxPerTrackingRspCb: callback for passing back the
5888 response of the set Tx PER Tracking configurations operation received
5889 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005890
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005892 callback
5893
Jeff Johnson295189b2012-06-20 16:38:30 -07005894 @return Result of the function call
5895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005897WDI_SetTxPerTrackingReq
5898(
5899 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5900 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5901 void* pUserData
5902)
5903{
5904 WDI_EventInfoType wdiEventData;
5905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5906
5907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 ------------------------------------------------------------------------*/
5910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5911 {
5912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5913 "WDI API call before module is initialized - Fail request");
5914
Jeff Johnsone7245742012-09-05 17:12:55 -07005915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005916 }
5917
5918 /*------------------------------------------------------------------------
5919 Fill in Event data and post to the Main FSM
5920 ------------------------------------------------------------------------*/
5921 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005922 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005923 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005924 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005925 wdiEventData.pUserData = pUserData;
5926
5927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5928
5929}/*WDI_SetTxPerTrackingReq*/
5930
5931/**
5932 @brief WDI_SetTmLevelReq
5933 If HW Thermal condition changed, driver should react based on new
5934 HW thermal condition.
5935
5936 @param pwdiSetTmLevelReq: New thermal condition information
5937
5938 pwdiSetTmLevelRspCb: callback
5939
5940 usrData: user data will be passed back with the
5941 callback
5942
5943 @return Result of the function call
5944*/
5945WDI_Status
5946WDI_SetTmLevelReq
5947(
5948 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5949 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5950 void *usrData
5951)
5952{
5953 WDI_EventInfoType wdiEventData;
5954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5955
5956 /*------------------------------------------------------------------------
5957 Sanity Check
5958 ------------------------------------------------------------------------*/
5959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5960 {
5961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5962 "WDI API call before module is initialized - Fail request");
5963
5964 return WDI_STATUS_E_NOT_ALLOWED;
5965 }
5966
5967 /*------------------------------------------------------------------------
5968 Fill in Event data and post to the Main FSM
5969 ------------------------------------------------------------------------*/
5970 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5971 wdiEventData.pEventData = pwdiSetTmLevelReq;
5972 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5973 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5974 wdiEventData.pUserData = usrData;
5975
5976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5977}
5978
5979/**
5980 @brief WDI_HostSuspendInd
5981
5982 Suspend Indication from the upper layer will be sent
5983 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005984
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005986
5987 @see
5988
Jeff Johnson295189b2012-06-20 16:38:30 -07005989 @return Status of the request
5990*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005991WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005992WDI_HostSuspendInd
5993(
5994 WDI_SuspendParamsType* pwdiSuspendIndParams
5995)
5996{
5997
5998 WDI_EventInfoType wdiEventData;
5999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6000
6001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 ------------------------------------------------------------------------*/
6004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6005 {
6006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6007 "WDI API call before module is initialized - Fail request");
6008
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 }
6011
6012 /*------------------------------------------------------------------------
6013 Fill in Event data and post to the Main FSM
6014 ------------------------------------------------------------------------*/
6015 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006016 wdiEventData.pEventData = pwdiSuspendIndParams;
6017 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6018 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 wdiEventData.pUserData = NULL;
6020
6021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6022
6023}/*WDI_HostSuspendInd*/
6024
6025/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006026 @brief WDI_TrafficStatsInd
6027 Traffic Stats from the upper layer will be sent
6028 down to HAL
6029
6030 @param WDI_TrafficStatsIndType
6031
6032 @see
6033
6034 @return Status of the request
6035*/
6036WDI_Status
6037WDI_TrafficStatsInd
6038(
6039 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6040)
6041{
6042
6043 WDI_EventInfoType wdiEventData;
6044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6045
6046 /*------------------------------------------------------------------------
6047 Sanity Check
6048 ------------------------------------------------------------------------*/
6049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6050 {
6051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6052 "WDI API call before module is initialized - Fail request");
6053
6054 return WDI_STATUS_E_NOT_ALLOWED;
6055 }
6056
6057 /*------------------------------------------------------------------------
6058 Fill in Event data and post to the Main FSM
6059 ------------------------------------------------------------------------*/
6060 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6061 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6062 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6063 wdiEventData.pCBfnc = NULL;
6064 wdiEventData.pUserData = NULL;
6065
6066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6067
6068}/*WDI_TrafficStatsInd*/
6069
Chet Lanctota96bb432013-03-18 10:26:30 -07006070#ifdef WLAN_FEATURE_11W
6071/**
6072 @brief WDI_ExcludeUnencryptedInd
6073 Register with HAL to receive/drop unencrypted frames
6074
6075 @param WDI_ExcludeUnencryptIndType
6076
6077 @see
6078
6079 @return Status of the request
6080*/
6081WDI_Status
6082WDI_ExcludeUnencryptedInd
6083(
6084 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6085)
6086{
6087
6088 WDI_EventInfoType wdiEventData;
6089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6090
6091 /*------------------------------------------------------------------------
6092 Sanity Check
6093 ------------------------------------------------------------------------*/
6094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6095 {
6096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6097 "WDI API call before module is initialized - Fail request");
6098
6099 return WDI_STATUS_E_NOT_ALLOWED;
6100 }
6101
6102 /*------------------------------------------------------------------------
6103 Fill in Event data and post to the Main FSM
6104 ------------------------------------------------------------------------*/
6105 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6106 wdiEventData.pEventData = pWdiExcUnencParams;
6107 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6108 wdiEventData.pCBfnc = NULL;
6109 wdiEventData.pUserData = NULL;
6110
6111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6112
6113}/*WDI_TrafficStatsInd*/
6114#endif
6115
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006116/**
Yue Ma365933a2013-08-14 15:59:08 -07006117 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6118
6119 @param addPeriodicTxPtrnParams: Add Pattern parameters
6120
6121 @see
6122
6123 @return Status of the request
6124*/
6125WDI_Status
6126WDI_AddPeriodicTxPtrnInd
6127(
6128 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6129)
6130{
6131 WDI_EventInfoType wdiEventData;
6132
6133 /*-------------------------------------------------------------------------
6134 Sanity Check
6135 ------------------------------------------------------------------------*/
6136 if (eWLAN_PAL_FALSE == gWDIInitialized)
6137 {
6138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6139 "WDI API call before module is initialized - Fail request!");
6140
6141 return WDI_STATUS_E_NOT_ALLOWED;
6142 }
6143
6144 /*-------------------------------------------------------------------------
6145 Fill in Event data and post to the Main FSM
6146 ------------------------------------------------------------------------*/
6147 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6148 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6149 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6150 wdiEventData.pCBfnc = NULL;
6151 wdiEventData.pUserData = NULL;
6152
6153 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6154}
6155
6156/**
6157 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6158
6159 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6160
6161 @see
6162
6163 @return Status of the request
6164*/
6165WDI_Status
6166WDI_DelPeriodicTxPtrnInd
6167(
6168 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6169)
6170{
6171 WDI_EventInfoType wdiEventData;
6172
6173 /*-------------------------------------------------------------------------
6174 Sanity Check
6175 ------------------------------------------------------------------------*/
6176 if (eWLAN_PAL_FALSE == gWDIInitialized)
6177 {
6178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6179 "WDI API call before module is initialized - Fail request!");
6180
6181 return WDI_STATUS_E_NOT_ALLOWED;
6182 }
6183
6184 /*-------------------------------------------------------------------------
6185 Fill in Event data and post to the Main FSM
6186 ------------------------------------------------------------------------*/
6187 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6188 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6189 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6190 wdiEventData.pCBfnc = NULL;
6191 wdiEventData.pUserData = NULL;
6192
6193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6194}
6195
6196/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 @brief WDI_HALDumpCmdReq
6198 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006199
6200 @param halDumpCmdReqParams: Hal Dump Command Body
6201 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006203
Jeff Johnson295189b2012-06-20 16:38:30 -07006204 @see
6205 @return Result of the function call
6206*/
6207WDI_Status WDI_HALDumpCmdReq
6208(
6209 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6210 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6211 void *pUserData
6212)
6213{
6214 WDI_EventInfoType wdiEventData;
6215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6216
6217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006218 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006219 ------------------------------------------------------------------------*/
6220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6221 {
6222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6223 "WDI API call before module is initialized - Fail request");
6224
Jeff Johnsone7245742012-09-05 17:12:55 -07006225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006226 }
6227
6228 /*------------------------------------------------------------------------
6229 Fill in Event data and post to the Main FSM
6230 ------------------------------------------------------------------------*/
6231 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6232 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6233 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6234 wdiEventData.pCBfnc = halDumpCmdRspCb;
6235 wdiEventData.pUserData = pUserData;
6236
6237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6238}
6239
Jeff Johnsone7245742012-09-05 17:12:55 -07006240/*============================================================================
6241
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006243
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 ============================================================================*/
6245
6246/**
6247 @brief Main FSM Start function for all states except BUSY
6248
Jeff Johnsone7245742012-09-05 17:12:55 -07006249
6250 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 wdiEV: event posted to the main DAL FSM
6252 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006253 structure
6254
Jeff Johnson295189b2012-06-20 16:38:30 -07006255 @see
6256 @return Result of the function call
6257*/
6258WDI_Status
6259WDI_PostMainEvent
6260(
Jeff Johnsone7245742012-09-05 17:12:55 -07006261 WDI_ControlBlockType* pWDICtx,
6262 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006264
Jeff Johnson295189b2012-06-20 16:38:30 -07006265)
6266{
Jeff Johnsone7245742012-09-05 17:12:55 -07006267 WDI_Status wdiStatus;
6268 WDI_MainFuncType pfnWDIMainEvHdlr;
6269 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6271
6272 /*-------------------------------------------------------------------------
6273 Sanity check
6274 -------------------------------------------------------------------------*/
6275 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6276 ( wdiEV >= WDI_MAX_EVENT ))
6277 {
6278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6279 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6280 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 }
6283
6284 /*Access to the global state must be locked */
6285 wpalMutexAcquire(&pWDICtx->wptMutex);
6286
6287 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006288 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006289
6290 wdiOldState = pWDICtx->uGlobalState;
6291
6292 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6294 response comes from CCPU for the request sent by host:
6295 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 -07006296 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 -07006297 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006298 CCPU:
6299 don't change the state */
6300 if ( WDI_RESPONSE_EVENT != wdiEV)
6301 {
6302 /*Transition to BUSY State - the request is now being processed by the FSM,
6303 if the request fails we shall transition back to the old state, if not
6304 the request will manage its own state transition*/
6305 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6306 }
6307 /* If the state function associated with the EV is NULL it means that this
6308 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 {
6311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006314 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006315 }
6316 else
6317 {
6318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006319 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006320 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 }
6323
6324 /* If a request handles itself well it will end up in a success or in a
6325 pending
6326 Success - means that the request was processed and the proper state
6327 transition already occurred or will occur when the resp is received
6328 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006329
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 Pending - means the request could not be processed at this moment in time
6331 because the FSM was already busy so no state transition or dequeueing
6332 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006333
Jeff Johnson295189b2012-06-20 16:38:30 -07006334 Success for synchronous case means that the transition may occur and
6335 processing of pending requests may continue - so it should go through
6336 and restores the state and continue processing queued requests*/
6337 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6338 ( WDI_STATUS_PENDING != wdiStatus ))
6339 {
6340 if ( WDI_RESPONSE_EVENT != wdiEV)
6341 {
6342 /*The request has failed or could not be processed - transition back to
6343 the old state - check to see if anything was queued and try to execute
6344 The dequeue logic should post a message to a thread and return - no
6345 actual processing can occur */
6346 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6347 }
6348 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 }
6351
6352 /* we have completed processing the event */
6353 wpalMutexRelease(&pWDICtx->wptMutex);
6354
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006356
6357}/*WDI_PostMainEvent*/
6358
6359
6360/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006362--------------------------------------------------------------------------*/
6363/**
6364 @brief Main FSM Start function for all states except BUSY
6365
Jeff Johnsone7245742012-09-05 17:12:55 -07006366
6367 @param pWDICtx: pointer to the WLAN DAL context
6368 pEventData: pointer to the event information structure
6369
Jeff Johnson295189b2012-06-20 16:38:30 -07006370 @see
6371 @return Result of the function call
6372*/
6373WDI_Status
6374WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006375(
Jeff Johnson295189b2012-06-20 16:38:30 -07006376 WDI_ControlBlockType* pWDICtx,
6377 WDI_EventInfoType* pEventData
6378)
6379{
6380
6381 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006383 ----------------------------------------------------------------------*/
6384 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6385 {
6386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006387 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 pWDICtx, pEventData);
6389 return WDI_STATUS_E_FAILURE;
6390 }
6391
6392 wpalMutexAcquire(&pWDICtx->wptMutex);
6393
6394 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006396 ----------------------------------------------------------------------*/
6397 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6398 {
6399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6400 "Control Transport not yet Open - queueing the request");
6401
6402 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006404
6405 wpalMutexRelease(&pWDICtx->wptMutex);
6406 return WDI_STATUS_PENDING;
6407 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006408
Jeff Johnson295189b2012-06-20 16:38:30 -07006409 wpalMutexRelease(&pWDICtx->wptMutex);
6410
6411 /*Return Success*/
6412 return WDI_ProcessRequest( pWDICtx, pEventData );
6413
6414}/*WDI_MainStart*/
6415
6416/**
6417 @brief Main FSM Response function for state INIT
6418
Jeff Johnsone7245742012-09-05 17:12:55 -07006419
6420 @param pWDICtx: pointer to the WLAN DAL context
6421 pEventData: pointer to the event information structure
6422
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 @see
6424 @return Result of the function call
6425*/
6426WDI_Status
6427WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006428(
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 WDI_ControlBlockType* pWDICtx,
6430 WDI_EventInfoType* pEventData
6431)
6432{
6433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006434 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006436 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006437
6438 /*Return Success*/
6439 return WDI_STATUS_E_NOT_ALLOWED;
6440}/* WDI_MainRspInit */
6441
6442/**
6443 @brief Main FSM Close function for all states except BUSY
6444
Jeff Johnsone7245742012-09-05 17:12:55 -07006445
6446 @param pWDICtx: pointer to the WLAN DAL context
6447 pEventData: pointer to the event information structure
6448
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 @see
6450 @return Result of the function call
6451*/
6452WDI_Status
6453WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006454(
Jeff Johnson295189b2012-06-20 16:38:30 -07006455 WDI_ControlBlockType* pWDICtx,
6456 WDI_EventInfoType* pEventData
6457)
6458{
6459
6460 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006461 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006462 ----------------------------------------------------------------------*/
6463 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6464 {
6465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006466 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006467 pWDICtx, pEventData);
6468 return WDI_STATUS_E_FAILURE;
6469 }
6470
6471 /*Return Success*/
6472 return WDI_ProcessRequest( pWDICtx, pEventData );
6473
6474}/*WDI_MainClose*/
6475/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006476 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006477--------------------------------------------------------------------------*/
6478/**
6479 @brief Main FSM Start function for state STARTED
6480
Jeff Johnsone7245742012-09-05 17:12:55 -07006481
6482 @param pWDICtx: pointer to the WLAN DAL context
6483 pEventData: pointer to the event information structure
6484
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 @see
6486 @return Result of the function call
6487*/
6488WDI_Status
6489WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006490(
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 WDI_ControlBlockType* pWDICtx,
6492 WDI_EventInfoType* pEventData
6493)
6494{
6495 WDI_StartRspCb wdiStartRspCb = NULL;
6496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6497
6498 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 ----------------------------------------------------------------------*/
6501 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6502 {
6503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006504 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 pWDICtx, pEventData);
6506 return WDI_STATUS_E_FAILURE;
6507 }
6508
6509 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006511 ----------------------------------------------------------------------*/
6512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006513 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006514
6515 wpalMutexAcquire(&pWDICtx->wptMutex);
6516
6517 /*Transition back to started because the post function transitioned us to
6518 busy*/
6519 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6520
6521 /*Check to see if any request is pending*/
6522 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006523
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 wpalMutexRelease(&pWDICtx->wptMutex);
6525
6526 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6528
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 /*Notify UMAC*/
6530 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6531
6532 /*Return Success*/
6533 return WDI_STATUS_SUCCESS;
6534
6535}/*WDI_MainStartStarted*/
6536
6537/**
6538 @brief Main FSM Stop function for state STARTED
6539
Jeff Johnsone7245742012-09-05 17:12:55 -07006540
6541 @param pWDICtx: pointer to the WLAN DAL context
6542 pEventData: pointer to the event information structure
6543
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 @see
6545 @return Result of the function call
6546*/
6547WDI_Status
6548WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006549(
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 WDI_ControlBlockType* pWDICtx,
6551 WDI_EventInfoType* pEventData
6552)
6553{
6554 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 ----------------------------------------------------------------------*/
6557 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6558 {
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006560 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 pWDICtx, pEventData);
6562 return WDI_STATUS_E_FAILURE;
6563 }
6564
6565 /*State at this point is BUSY - because we enter this state before posting
6566 an event to the FSM in order to prevent potential race conditions*/
6567
6568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6569 "Processing stop request in FSM");
6570
6571 /*Return Success*/
6572 return WDI_ProcessRequest( pWDICtx, pEventData );
6573
6574}/*WDI_MainStopStarted*/
6575/**
6576 @brief Main FSM Request function for state started
6577
Jeff Johnsone7245742012-09-05 17:12:55 -07006578
6579 @param pWDICtx: pointer to the WLAN DAL context
6580 pEventData: pointer to the event information structure
6581
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 @see
6583 @return Result of the function call
6584*/
6585WDI_Status
6586WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006587(
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 WDI_ControlBlockType* pWDICtx,
6589 WDI_EventInfoType* pEventData
6590)
6591{
6592
6593 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006594 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 ----------------------------------------------------------------------*/
6596 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6597 {
6598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006599 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006600 pWDICtx, pEventData);
6601 return WDI_STATUS_E_FAILURE;
6602 }
6603
6604 /*State at this point is BUSY - because we enter this state before posting
6605 an event to the FSM in order to prevent potential race conditions*/
6606
6607 /*Return Success*/
6608 return WDI_ProcessRequest( pWDICtx, pEventData );
6609
6610}/*WDI_MainReqStarted*/
6611
6612/**
6613 @brief Main FSM Response function for all states except INIT
6614
Jeff Johnsone7245742012-09-05 17:12:55 -07006615
6616 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006618
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 @see
6620 @return Result of the function call
6621*/
6622WDI_Status
6623WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006624(
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 WDI_ControlBlockType* pWDICtx,
6626 WDI_EventInfoType* pEventData
6627)
6628{
Jeff Johnsone7245742012-09-05 17:12:55 -07006629 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 wpt_boolean expectedResponse;
6631
6632 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006634 ----------------------------------------------------------------------*/
6635 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6636 {
6637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006638 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 pWDICtx, pEventData);
6640 return WDI_STATUS_E_FAILURE;
6641 }
6642
6643 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6644 {
6645 /* we received an expected response */
6646 expectedResponse = eWLAN_PAL_TRUE;
6647
6648 /*We expect that we will transition to started after this processing*/
6649 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6650
6651 /* we are no longer expecting a response */
6652 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6653 }
6654 else
6655 {
6656 /* we received an indication or unexpected response */
6657 expectedResponse = eWLAN_PAL_FALSE;
6658 /* for indications no need to update state from what it is right
6659 now, unless it explicitly does it in the indication handler (say
6660 for device failure ind) */
6661 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6662 }
6663
6664 /*Process the response and indication */
6665 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6666
6667 /*Lock the CB as we are about to do a state transition*/
6668 wpalMutexAcquire(&pWDICtx->wptMutex);
6669
6670 /*Transition to the expected state after the response processing
6671 - this should always be started state with the following exceptions:
6672 1. processing of a failed start response
6673 2. device failure detected while processing response
6674 3. stop response received*/
6675 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006676
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 /*Dequeue request that may have been queued while we were waiting for the
6678 response */
6679 if ( expectedResponse )
6680 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006681 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 }
6683
6684 wpalMutexRelease(&pWDICtx->wptMutex);
6685
6686 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006687 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006688
6689}/*WDI_MainRsp*/
6690
6691/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006693--------------------------------------------------------------------------*/
6694/**
6695 @brief Main FSM Stop function for state STOPPED
6696
Jeff Johnsone7245742012-09-05 17:12:55 -07006697
6698 @param pWDICtx: pointer to the WLAN DAL context
6699 pEventData: pointer to the event information structure
6700
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 @see
6702 @return Result of the function call
6703*/
6704WDI_Status
6705WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006706(
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 WDI_ControlBlockType* pWDICtx,
6708 WDI_EventInfoType* pEventData
6709)
6710{
6711 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006712 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006713 ----------------------------------------------------------------------*/
6714 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6715 {
6716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006717 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 pWDICtx, pEventData);
6719 return WDI_STATUS_E_FAILURE;
6720 }
6721
6722 /*We should normally not get a STOP request if we are already stopped
6723 since we should normally be stopped by the UMAC. However in some
6724 error situations we put ourselves in the stopped state without the
6725 UMAC knowing, so when we get a STOP request in this state we still
6726 process it since we need to clean up the underlying state */
6727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6728 "Processing stop request while stopped in FSM");
6729
6730 /*Return Success*/
6731 return WDI_ProcessRequest( pWDICtx, pEventData );
6732
6733}/*WDI_MainStopStopped*/
6734
6735/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006736 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006737--------------------------------------------------------------------------*/
6738/**
6739 @brief Main FSM Start function for state BUSY
6740
Jeff Johnsone7245742012-09-05 17:12:55 -07006741
6742 @param pWDICtx: pointer to the WLAN DAL context
6743 pEventData: pointer to the event information structure
6744
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 @see
6746 @return Result of the function call
6747*/
6748WDI_Status
6749WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006750(
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 WDI_ControlBlockType* pWDICtx,
6752 WDI_EventInfoType* pEventData
6753)
6754{
6755 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 ----------------------------------------------------------------------*/
6758 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6759 {
6760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006761 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 pWDICtx, pEventData);
6763 return WDI_STATUS_E_FAILURE;
6764 }
6765
6766 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 ----------------------------------------------------------------------*/
6769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6770 "WDI Busy state - queue start request");
6771
6772 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006774
6775 /*Return Success*/
6776 return WDI_STATUS_PENDING;
6777}/*WDI_MainStartBusy*/
6778
6779/**
6780 @brief Main FSM Stop function for state BUSY
6781
Jeff Johnsone7245742012-09-05 17:12:55 -07006782
6783 @param pWDICtx: pointer to the WLAN DAL context
6784 pEventData: pointer to the event information structure
6785
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 @see
6787 @return Result of the function call
6788*/
6789WDI_Status
6790WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006791(
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 WDI_ControlBlockType* pWDICtx,
6793 WDI_EventInfoType* pEventData
6794)
6795{
6796 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006797 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006798 ----------------------------------------------------------------------*/
6799 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6800 {
6801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006802 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 pWDICtx, pEventData);
6804 return WDI_STATUS_E_FAILURE;
6805 }
6806
6807 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 ----------------------------------------------------------------------*/
6810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6811 "WDI Busy state - queue stop request");
6812
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006815
Jeff Johnson295189b2012-06-20 16:38:30 -07006816}/*WDI_MainStopBusy*/
6817
6818/**
6819 @brief Main FSM Request function for state BUSY
6820
Jeff Johnsone7245742012-09-05 17:12:55 -07006821
6822 @param pWDICtx: pointer to the WLAN DAL context
6823 pEventData: pointer to the event information structure
6824
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 @see
6826 @return Result of the function call
6827*/
6828WDI_Status
6829WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006830(
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 WDI_ControlBlockType* pWDICtx,
6832 WDI_EventInfoType* pEventData
6833)
6834{
6835 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006836 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006837 ----------------------------------------------------------------------*/
6838 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6839 {
6840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006841 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 pWDICtx, pEventData);
6843 return WDI_STATUS_E_FAILURE;
6844 }
6845
6846 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 ----------------------------------------------------------------------*/
6849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6850 "WDI Busy state - queue request %d because waiting for response %d",
6851 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6852
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006855
Jeff Johnson295189b2012-06-20 16:38:30 -07006856}/*WDI_MainReqBusy*/
6857/**
6858 @brief Main FSM Close function for state BUSY
6859
Jeff Johnsone7245742012-09-05 17:12:55 -07006860
6861 @param pWDICtx: pointer to the WLAN DAL context
6862 pEventData: pointer to the event information structure
6863
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 @see
6865 @return Result of the function call
6866*/
6867WDI_Status
6868WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006869(
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 WDI_ControlBlockType* pWDICtx,
6871 WDI_EventInfoType* pEventData
6872)
6873{
6874 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006875 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006876 ----------------------------------------------------------------------*/
6877 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6878 {
6879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006880 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 pWDICtx, pEventData);
6882 return WDI_STATUS_E_FAILURE;
6883 }
6884
6885 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 ----------------------------------------------------------------------*/
6888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6889 "WDI Busy state - queue close request");
6890
Jeff Johnsone7245742012-09-05 17:12:55 -07006891 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006892 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006893
Jeff Johnson295189b2012-06-20 16:38:30 -07006894}/*WDI_MainCloseBusy*/
6895
6896/**
6897 @brief Main FSM Shutdown function for INIT & STARTED states
6898
6899
6900 @param pWDICtx: pointer to the WLAN DAL context
6901 pEventData: pointer to the event information structure
6902
6903 @see
6904 @return Result of the function call
6905*/
6906WDI_Status
6907WDI_MainShutdown
6908(
6909 WDI_ControlBlockType* pWDICtx,
6910 WDI_EventInfoType* pEventData
6911)
6912{
6913 /*--------------------------------------------------------------------
6914 Sanity Check
6915 ----------------------------------------------------------------------*/
6916 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6917 {
6918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006919 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006920 pWDICtx, pEventData);
6921 return WDI_STATUS_E_FAILURE;
6922 }
6923
6924 /*State at this point is BUSY - because we enter this state before posting
6925 an event to the FSM in order to prevent potential race conditions*/
6926
6927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6928 "Processing shutdown request in FSM");
6929
6930 /*Return Success*/
6931 return WDI_ProcessRequest( pWDICtx, pEventData );
6932
6933}/*WDI_MainShutdown*/
6934
6935/**
6936 @brief Main FSM Shutdown function for BUSY state
6937
6938
6939 @param pWDICtx: pointer to the WLAN DAL context
6940 pEventData: pointer to the event information structure
6941
6942 @see
6943 @return Result of the function call
6944*/
6945WDI_Status
6946WDI_MainShutdownBusy
6947(
6948 WDI_ControlBlockType* pWDICtx,
6949 WDI_EventInfoType* pEventData
6950)
6951{
6952 /*--------------------------------------------------------------------
6953 Sanity Check
6954 ----------------------------------------------------------------------*/
6955 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6956 {
6957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006958 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 pWDICtx, pEventData);
6960 return WDI_STATUS_E_FAILURE;
6961 }
6962
6963 /* If you are waiting for a HAL response at this stage, you are not
6964 * going to get it. Riva is already shutdown/crashed.
6965 */
6966 wpalTimerStop(&gWDICb.wptResponseTimer);
6967
6968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6969 "Processing shutdown request in FSM: Busy state ");
6970
6971 return WDI_ProcessRequest( pWDICtx, pEventData );
6972
6973}/*WDI_MainShutdownBusy*/
6974
6975
Jeff Johnsone7245742012-09-05 17:12:55 -07006976/*=======================================================================
6977
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006979
Jeff Johnson295189b2012-06-20 16:38:30 -07006980*=======================================================================*/
6981
6982/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006984========================================================================*/
6985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006986 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006987 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006988
6989 @param pWDICtx: pointer to the WLAN DAL context
6990 pEventData: pointer to the event information structure
6991
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 @see
6993 @return Result of the function call
6994*/
6995WDI_Status
6996WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006997(
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 WDI_ControlBlockType* pWDICtx,
6999 WDI_EventInfoType* pEventData
7000)
7001{
7002 WDI_StartReqParamsType* pwdiStartParams = NULL;
7003 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 wpt_uint16 usDataOffset = 0;
7006 wpt_uint16 usSendSize = 0;
7007
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 tHalMacStartReqMsg halStartReq;
7009 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7011
7012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 -------------------------------------------------------------------------*/
7015 if (( NULL == pEventData ) ||
7016 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7017 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7018 {
7019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 }
7024
7025 /*-----------------------------------------------------------------------
7026 Get message buffer
7027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007028 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 pwdiStartParams->usConfigBufferLen;
7030
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 usLen,
7033 &pSendBuffer, &usDataOffset, &usSendSize))||
7034 ( usSendSize < (usDataOffset + usLen )))
7035 {
7036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007037 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 pEventData, pwdiStartParams, wdiStartRspCb);
7039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007041 }
7042
7043 /*-----------------------------------------------------------------------
7044 Fill in the message
7045 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 halStartReq.startReqParams.driverType =
7047 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007048
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 halStartReq.startReqParams.uConfigBufferLen =
7050 pwdiStartParams->usConfigBufferLen;
7051 wpalMemoryCopy( pSendBuffer+usDataOffset,
7052 &halStartReq.startReqParams,
7053 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007054
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 usDataOffset += sizeof(halStartReq.startReqParams);
7056 wpalMemoryCopy( pSendBuffer+usDataOffset,
7057 pwdiStartParams->pConfigBuffer,
7058 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007059
7060 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062
7063 /*Save Low Level Ind CB and associated user data - it will be used further
7064 on when an indication is coming from the lower MAC*/
7065 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007066 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007067
Jeff Johnsone7245742012-09-05 17:12:55 -07007068 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7074
Jeff Johnsone7245742012-09-05 17:12:55 -07007075
Jeff Johnson295189b2012-06-20 16:38:30 -07007076}/*WDI_ProcessStartReq*/
7077
7078/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007081
7082 @param pWDICtx: pointer to the WLAN DAL context
7083 pEventData: pointer to the event information structure
7084
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 @see
7086 @return Result of the function call
7087*/
7088WDI_Status
7089WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007090(
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 WDI_ControlBlockType* pWDICtx,
7092 WDI_EventInfoType* pEventData
7093)
7094{
7095 WDI_StopReqParamsType* pwdiStopParams = NULL;
7096 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 wpt_uint16 usDataOffset = 0;
7099 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007100 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007101 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7103
7104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 -------------------------------------------------------------------------*/
7107 if (( NULL == pEventData ) ||
7108 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7109 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7110 {
7111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007113 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007114 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 }
7116
7117 /*-----------------------------------------------------------------------
7118 Get message buffer
7119 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 sizeof(halStopReq.stopReqParams),
7122 &pSendBuffer, &usDataOffset, &usSendSize))||
7123 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7124 {
7125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007126 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007127 pEventData, pwdiStopParams, wdiStopRspCb);
7128 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007129 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 }
7131
7132 /*-----------------------------------------------------------------------
7133 Fill in the message
7134 -----------------------------------------------------------------------*/
7135 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7136 pwdiStopParams->wdiStopReason);
7137
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 wpalMemoryCopy( pSendBuffer+usDataOffset,
7139 &halStopReq.stopReqParams,
7140 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007141
7142 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
7145 /*! TO DO: stop the data services */
7146 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7147 {
7148 /*Stop the STA Table !UT- check this logic again
7149 It is safer to do it here than on the response - because a stop is imminent*/
7150 WDI_STATableStop(pWDICtx);
7151
7152 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007153 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7154 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007155 {
7156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7157 "WDI Init failed to reset power state event");
7158
Jeff Johnsone7245742012-09-05 17:12:55 -07007159 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007160 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 }
7162 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007163 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7164 if( eWLAN_PAL_STATUS_SUCCESS != status )
7165 {
7166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007167 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007168 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007169 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007170 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007174 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7175 WDI_SET_POWER_STATE_TIMEOUT);
7176 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 {
7178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7179 "WDI Init failed to wait on an event");
7180
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007182 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 }
7184 }
7185
7186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007190 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7191
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007192fail:
7193 // Release the message buffer so we don't leak
7194 wpalMemoryFree(pSendBuffer);
7195
7196failRequest:
7197 //WDA should have failure check to avoid the memory leak
7198 return WDI_STATUS_E_FAILURE;
7199
Jeff Johnson295189b2012-06-20 16:38:30 -07007200}/*WDI_ProcessStopReq*/
7201
7202/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007205
7206 @param pWDICtx: pointer to the WLAN DAL context
7207 pEventData: pointer to the event information structure
7208
Jeff Johnson295189b2012-06-20 16:38:30 -07007209 @see
7210 @return Result of the function call
7211*/
7212WDI_Status
7213WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007214(
Jeff Johnson295189b2012-06-20 16:38:30 -07007215 WDI_ControlBlockType* pWDICtx,
7216 WDI_EventInfoType* pEventData
7217)
7218{
Jeff Johnsone7245742012-09-05 17:12:55 -07007219 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7221
7222 /*Lock control block for cleanup*/
7223 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007224
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 /*Clear all pending request*/
7226 WDI_ClearPendingRequests(pWDICtx);
7227
7228 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007229 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007230
7231 /* Close Data transport*/
7232 /* FTM mode does not open Data Path */
7233 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7234 {
7235 WDTS_Close(pWDICtx);
7236 }
7237
7238 /*Close the STA Table !UT- check this logic again*/
7239 WDI_STATableClose(pWDICtx);
7240
7241 /*close the PAL */
7242 wptStatus = wpalClose(pWDICtx->pPALContext);
7243 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7244 {
7245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7246 "Failed to wpal Close %d", wptStatus);
7247 WDI_ASSERT(0);
7248 }
7249
7250 /*Transition back to init state*/
7251 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7252
7253 wpalMutexRelease(&pWDICtx->wptMutex);
7254
7255 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007256 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007257
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007259}/*WDI_ProcessCloseReq*/
7260
7261
7262/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007264===========================================================================*/
7265
7266/**
7267 @brief Process Init Scan Request function (called when Main FSM
7268 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007269
7270 @param pWDICtx: pointer to the WLAN DAL context
7271 pEventData: pointer to the event information structure
7272
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 @see
7274 @return Result of the function call
7275*/
7276WDI_Status
7277WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007278(
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 WDI_ControlBlockType* pWDICtx,
7280 WDI_EventInfoType* pEventData
7281)
7282{
7283 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7284 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 wpt_uint16 usDataOffset = 0;
7287 wpt_uint16 usSendSize = 0;
7288 wpt_uint8 i = 0;
7289
7290 tHalInitScanReqMsg halInitScanReqMsg;
7291
Jeff Johnsone7245742012-09-05 17:12:55 -07007292 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007293 * It shold be removed once host and riva changes are in sync*/
7294 tHalInitScanConReqMsg halInitScanConReqMsg;
7295
7296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7297
7298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 -------------------------------------------------------------------------*/
7301 if (( NULL == pEventData ) ||
7302 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7303 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7304 {
7305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 }
7310
7311#if 0
7312 wpalMutexAcquire(&pWDICtx->wptMutex);
7313 /*-----------------------------------------------------------------------
7314 Check to see if SCAN is already in progress - if so reject the req
7315 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 -----------------------------------------------------------------------*/
7318 if ( pWDICtx->bScanInProgress )
7319 {
7320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7321 "Scan is already in progress - subsequent scan is not allowed"
7322 " until the first scan completes");
7323
7324 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 }
7327
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7329 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007330
7331 wpalMutexRelease(&pWDICtx->wptMutex);
7332#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007333 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007335 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 * It shold be removed once host and riva changes are in sync*/
7337 /*-----------------------------------------------------------------------
7338 Get message buffer
7339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 sizeof(halInitScanConReqMsg.initScanParams),
7342 &pSendBuffer, &usDataOffset, &usSendSize))||
7343 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7344 {
7345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007346 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 }
7351
7352
7353 /*-----------------------------------------------------------------------
7354 Fill in the message
7355 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7358
7359 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7360 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7361
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007365 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7368
7369 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7370 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7371
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7373 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007374
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7377
7378 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7379 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007380 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7382 }
7383
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 wpalMemoryCopy( pSendBuffer+usDataOffset,
7385 &halInitScanConReqMsg.initScanParams,
7386 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 }
7388 else
7389 {
7390 /*-----------------------------------------------------------------------
7391 Get message buffer
7392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 sizeof(halInitScanReqMsg.initScanParams),
7395 &pSendBuffer, &usDataOffset, &usSendSize))||
7396 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7397 {
7398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007399 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007400 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 }
7404
7405
7406 /*-----------------------------------------------------------------------
7407 Fill in the message
7408 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7411
7412 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7413 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7414
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7421
7422 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7423 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7424
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7427
7428 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7429 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7432 }
7433
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 wpalMemoryCopy( pSendBuffer+usDataOffset,
7435 &halInitScanReqMsg.initScanParams,
7436 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 }
7438
7439 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007441
7442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007445 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7447
7448}/*WDI_ProcessInitScanReq*/
7449
7450/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007453
7454 @param pWDICtx: pointer to the WLAN DAL context
7455 pEventData: pointer to the event information structure
7456
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 @see
7458 @return Result of the function call
7459*/
7460WDI_Status
7461WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007462(
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 WDI_ControlBlockType* pWDICtx,
7464 WDI_EventInfoType* pEventData
7465)
7466{
7467 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7468 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 wpt_uint16 usDataOffset = 0;
7471 wpt_uint16 usSendSize = 0;
7472
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7475
7476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 -------------------------------------------------------------------------*/
7479 if (( NULL == pEventData ) ||
7480 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7481 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7482 {
7483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 }
7488
7489#if 0
7490 wpalMutexAcquire(&pWDICtx->wptMutex);
7491 /*-----------------------------------------------------------------------
7492 Check to see if SCAN is already in progress - start scan is only
7493 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7498 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7499 {
7500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7501 "Scan start not allowed in this state %d %d",
7502 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007503
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 }
7507
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007509
7510 wpalMutexRelease(&pWDICtx->wptMutex);
7511#endif
7512
7513 /*-----------------------------------------------------------------------
7514 Get message buffer
7515 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 sizeof(halStartScanReqMsg.startScanParams),
7518 &pSendBuffer, &usDataOffset, &usSendSize))||
7519 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7520 {
7521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007522 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 }
7527
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 wpalMemoryCopy( pSendBuffer+usDataOffset,
7531 &halStartScanReqMsg.startScanParams,
7532 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007533
7534 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007536
7537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7542}/*WDI_ProcessStartScanReq*/
7543
7544
7545/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007548
7549 @param pWDICtx: pointer to the WLAN DAL context
7550 pEventData: pointer to the event information structure
7551
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 @see
7553 @return Result of the function call
7554*/
7555WDI_Status
7556WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007557(
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 WDI_ControlBlockType* pWDICtx,
7559 WDI_EventInfoType* pEventData
7560)
7561{
7562 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7563 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 wpt_uint16 usDataOffset = 0;
7566 wpt_uint16 usSendSize = 0;
7567
Jeff Johnsone7245742012-09-05 17:12:55 -07007568 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7570
7571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 -------------------------------------------------------------------------*/
7574 if (( NULL == pEventData ) ||
7575 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7576 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7577 {
7578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007582 }
7583
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7585 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 * forwarded to HAL and result in hang*/
7587#if 0
7588 wpalMutexAcquire(&pWDICtx->wptMutex);
7589 /*-----------------------------------------------------------------------
7590 Check to see if SCAN is already in progress - end scan is only
7591 allowed when a scan is ongoing and the state of the scan procedure
7592 is started
7593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7596 {
7597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7598 "End start not allowed in this state %d %d",
7599 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007600
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 }
7604
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007606
7607 wpalMutexRelease(&pWDICtx->wptMutex);
7608#endif
7609
7610 /*-----------------------------------------------------------------------
7611 Get message buffer
7612 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 sizeof(halEndScanReqMsg.endScanParams),
7615 &pSendBuffer, &usDataOffset, &usSendSize))||
7616 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7617 {
7618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007619 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 }
7624
7625 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7626
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 wpalMemoryCopy( pSendBuffer+usDataOffset,
7628 &halEndScanReqMsg.endScanParams,
7629 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007630
7631 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007632 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007633
7634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7639}/*WDI_ProcessEndScanReq*/
7640
7641
7642/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007645
7646 @param pWDICtx: pointer to the WLAN DAL context
7647 pEventData: pointer to the event information structure
7648
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 @see
7650 @return Result of the function call
7651*/
7652WDI_Status
7653WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007654(
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 WDI_ControlBlockType* pWDICtx,
7656 WDI_EventInfoType* pEventData
7657)
7658{
7659 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7660 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 wpt_uint16 usDataOffset = 0;
7663 wpt_uint16 usSendSize = 0;
7664 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007665 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7668
7669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 -------------------------------------------------------------------------*/
7672 if (( NULL == pEventData ) ||
7673 ( NULL == pEventData->pEventData) ||
7674 ( NULL == pEventData->pCBfnc))
7675 {
7676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 }
7681
7682 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7683 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7685 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 * forwarded to HAL and result in hang*/
7687#if 0
7688 wpalMutexAcquire(&pWDICtx->wptMutex);
7689 /*-----------------------------------------------------------------------
7690 Check to see if SCAN is already in progress
7691 Finish scan gets invoked any scan states. ie. abort scan
7692 It should be allowed in any states.
7693 -----------------------------------------------------------------------*/
7694 if ( !pWDICtx->bScanInProgress )
7695 {
7696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7697 "Finish start not allowed in this state %d",
7698 pWDICtx->bScanInProgress );
7699
7700 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 }
7703
7704 /*-----------------------------------------------------------------------
7705 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7709 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007710 wpalMutexRelease(&pWDICtx->wptMutex);
7711#endif
7712
7713 if ( pWDICtx->bInBmps )
7714 {
7715 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007716 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7717 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7718 {
7719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -08007720 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007721 WDI_ASSERT(0);
7722 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 }
7724
7725 /*-----------------------------------------------------------------------
7726 Get message buffer
7727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 sizeof(halFinishScanReqMsg.finishScanParams),
7730 &pSendBuffer, &usDataOffset, &usSendSize))||
7731 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7732 {
7733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007734 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 }
7739
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7742
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7745
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7748
7749 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7750 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7758
Jeff Johnsone7245742012-09-05 17:12:55 -07007759 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7761
7762 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7763 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7766 }
7767
7768 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7769 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7770
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 wpalMemoryCopy( pSendBuffer+usDataOffset,
7772 &halFinishScanReqMsg.finishScanParams,
7773 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007774
7775 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007777
7778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7783}/*WDI_ProcessFinishScanReq*/
7784
7785
7786/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007788==========================================================================*/
7789/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007790 @brief Process BSS Join for a given Session
7791
7792 @param pWDICtx: pointer to the WLAN DAL context
7793 pEventData: pointer to the event information structure
7794
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 @see
7796 @return Result of the function call
7797*/
7798WDI_Status
7799WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007800(
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 WDI_ControlBlockType* pWDICtx,
7802 WDI_JoinReqParamsType* pwdiJoinParams,
7803 WDI_JoinRspCb wdiJoinRspCb,
7804 void* pUserData
7805)
7806{
7807 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007808 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 wpt_uint16 usDataOffset = 0;
7810 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007812
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7815
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007816 wpalMutexAcquire(&pWDICtx->wptMutex);
7817
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 /*------------------------------------------------------------------------
7819 Check to see if we have any session with this BSSID already stored, we
7820 should not
7821 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7823 pwdiJoinParams->wdiReqInfo.macBSSID,
7824 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007825
7826 if ( NULL != pBSSSes )
7827 {
7828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007829 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7830 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007831
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007832 /*reset the bAssociationInProgress otherwise the next
7833 *join request will be queued*/
7834 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7835 wpalMutexRelease(&pWDICtx->wptMutex);
7836 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 }
7838
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 if ( NULL == pBSSSes )
7844 {
7845
7846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7847 "DAL has no free sessions - cannot run another join");
7848
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007849 /*reset the bAssociationInProgress otherwise the next
7850 *join request will be queued*/
7851 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 }
7855
7856 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7858 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 WDI_MAC_ADDR_LEN);
7860
7861 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007864
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 wpalMutexRelease(&pWDICtx->wptMutex);
7866
7867 /*-----------------------------------------------------------------------
7868 Get message buffer
7869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 sizeof(halJoinReqMsg.joinReqParams),
7872 &pSendBuffer, &usDataOffset, &usSendSize))||
7873 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7874 {
7875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007876 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 pUserData, pwdiJoinParams, wdiJoinRspCb);
7878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 }
7881
7882 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007884
7885 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 pwdiJoinParams->wdiReqInfo.macSTASelf,
7887 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007888
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7891
7892 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7893
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007894#ifdef WLAN_FEATURE_VOWIFI
7895 halJoinReqMsg.joinReqParams.maxTxPower =
7896 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7897#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7900#endif
7901
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7904 wdiSecondaryChannelOffset);
7905
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 wpalMemoryCopy( pSendBuffer+usDataOffset,
7907 &halJoinReqMsg.joinReqParams,
7908 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007909
7910 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007912
7913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7917 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007918
7919}/*WDI_ProcessBSSSessionJoinReq*/
7920
7921/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007924
7925 @param pWDICtx: pointer to the WLAN DAL context
7926 pEventData: pointer to the event information structure
7927
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 @see
7929 @return Result of the function call
7930*/
7931WDI_Status
7932WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007933(
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 WDI_ControlBlockType* pWDICtx,
7935 WDI_EventInfoType* pEventData
7936)
7937{
7938 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7939 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7940 WDI_JoinRspCb wdiJoinRspCb = NULL;
7941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7942
7943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 -------------------------------------------------------------------------*/
7946 if (( NULL == pEventData ) ||
7947 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7948 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7949 {
7950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007955
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 /*-------------------------------------------------------------------------
7957 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 -------------------------------------------------------------------------*/
7960 wpalMutexAcquire(&pWDICtx->wptMutex);
7961
7962 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7963 {
7964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7965 "Association is currently in progress, queueing new join req");
7966
7967 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007968 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007969 pwdiJoinParams->wdiReqInfo.macBSSID);
7970
7971 wpalMutexRelease(&pWDICtx->wptMutex);
7972
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 }
7975
7976 /*Starting a new association */
7977 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7978 wpalMutexRelease(&pWDICtx->wptMutex);
7979
7980 /*Process the Join Request*/
7981 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7982 wdiJoinRspCb,pEventData->pUserData);
7983
7984}/*WDI_ProcessJoinReq*/
7985
7986
7987/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007990
7991 @param pWDICtx: pointer to the WLAN DAL context
7992 pEventData: pointer to the event information structure
7993
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 @see
7995 @return Result of the function call
7996*/
7997WDI_Status
7998WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007999(
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 WDI_ControlBlockType* pWDICtx,
8001 WDI_EventInfoType* pEventData
8002)
8003{
8004 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8005 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 wpt_uint16 uMsgSize = 0;
8009 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 wpt_uint16 usDataOffset = 0;
8011 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008013
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8016
8017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 -------------------------------------------------------------------------*/
8020 if (( NULL == pEventData ) ||
8021 ( NULL == pEventData->pEventData ) ||
8022 ( NULL == pEventData->pCBfnc ))
8023 {
8024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 }
8029
8030 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8031 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8032 /*-------------------------------------------------------------------------
8033 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 -------------------------------------------------------------------------*/
8036 wpalMutexAcquire(&pWDICtx->wptMutex);
8037
8038 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8042 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8043 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008044
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 {
8047#ifdef WLAN_FEATURE_VOWIFI_11R
8048 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 if ( NULL == pBSSSes )
8053 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008054
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8056 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008057
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008061
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8064 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008066
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8070#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 * Request in case of IBSS*/
8073 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8074 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8075 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8076 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8077 {
8078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 if ( NULL == pBSSSes )
8083 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008084
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8086 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008087
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008089 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008091
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8094 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008096
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8100 }
8101 else
8102 {
8103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8105 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8106 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8107
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 /* for IBSS testing */
8109 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 }
8112#endif
8113 }
8114
8115 /*------------------------------------------------------------------------
8116 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 ------------------------------------------------------------------------*/
8119 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8120 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8122 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8123 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8124 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008125
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008127
8128 wpalMutexRelease(&pWDICtx->wptMutex);
8129
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 }
8132
8133 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8135 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 sizeof(pWDICtx->wdiCachedConfigBssReq));
8137
8138 wpalMutexRelease(&pWDICtx->wptMutex);
8139
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8141#ifdef WLAN_FEATURE_11AC
8142 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008143 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 else
8145#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008146 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008147
8148 /*-----------------------------------------------------------------------
8149 Get message buffer
8150 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8153 ( usSendSize < (usDataOffset + uMsgSize )))
8154 {
8155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008156 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 }
8161
8162 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008163#ifdef WLAN_FEATURE_11AC
8164 if (WDI_getFwWlanFeatCaps(DOT11AC))
8165 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8166 &pwdiConfigBSSParams->wdiReqInfo);
8167 else
8168#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 &pwdiConfigBSSParams->wdiReqInfo);
8171
8172 /* Need to fill in the STA Index to invalid, since at this point we have not
8173 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008175
8176 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8178
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008179#ifdef WLAN_FEATURE_11AC
8180 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8181 wpalMemoryCopy( pSendBuffer+usDataOffset,
8182 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8183 uMsgSize);
8184 }else
8185#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008186 {
8187 if ( uMsgSize <= sizeof(tConfigBssParams) )
8188 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008189 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008190 &halConfigBssReqMsg.uBssParams.configBssParams,
8191 uMsgSize);
8192 }
8193 else
8194 {
8195 return WDI_STATUS_E_FAILURE;
8196 }
8197 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008198
8199 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008201
8202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8206 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 WDI_CONFIG_BSS_RESP);
8208
8209}/*WDI_ProcessConfigBSSReq*/
8210
8211
8212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008215
8216 @param pWDICtx: pointer to the WLAN DAL context
8217 pEventData: pointer to the event information structure
8218
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 @see
8220 @return Result of the function call
8221*/
8222WDI_Status
8223WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008224(
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 WDI_ControlBlockType* pWDICtx,
8226 WDI_EventInfoType* pEventData
8227)
8228{
8229 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8230 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 wpt_uint16 usDataOffset = 0;
8235 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008237
Jeff Johnsone7245742012-09-05 17:12:55 -07008238 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8240
8241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 -------------------------------------------------------------------------*/
8244 if (( NULL == pEventData ) ||
8245 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8246 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8247 {
8248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 }
8253
8254 /*-------------------------------------------------------------------------
8255 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 -------------------------------------------------------------------------*/
8258 wpalMutexAcquire(&pWDICtx->wptMutex);
8259
8260 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8264 pwdiDelBSSParams->ucBssIdx,
8265 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008266
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 {
8269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 "%s: BSS does not yet exist. ucBssIdx %d",
8271 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008272
8273 wpalMutexRelease(&pWDICtx->wptMutex);
8274
8275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008277
8278 /*------------------------------------------------------------------------
8279 Check if this BSS is being currently processed or queued,
8280 if queued - queue the new request as well
8281 ------------------------------------------------------------------------*/
8282 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8285 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8286 __func__, pwdiDelBSSParams->ucBssIdx);
8287
8288 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8289
8290 wpalMutexRelease(&pWDICtx->wptMutex);
8291
8292 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008294
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 /*-----------------------------------------------------------------------
8296 If we receive a Del BSS request for an association that is already in
8297 progress, it indicates that the assoc has failed => we no longer have
8298 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 -----------------------------------------------------------------------*/
8301 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8302 {
8303 /*We can switch to false here because even if a subsequent Join comes in
8304 it will only be processed when DAL transitions out of BUSY state which
8305 happens when the Del BSS request comes */
8306 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8307
8308 /*Former association is complete - prepare next pending assoc for
8309 processing */
8310 WDI_DequeueAssocRequest(pWDICtx);
8311 }
8312
8313 wpalMutexRelease(&pWDICtx->wptMutex);
8314 /*-----------------------------------------------------------------------
8315 Get message buffer
8316 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 sizeof(halBssReqMsg.deleteBssParams),
8319 &pSendBuffer, &usDataOffset, &usSendSize))||
8320 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8321 {
8322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008323 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 }
8328
8329 /*Fill in the message request structure*/
8330
8331 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008332 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008333
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 wpalMemoryCopy( pSendBuffer+usDataOffset,
8335 &halBssReqMsg.deleteBssParams,
8336 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
8338 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008340
Jeff Johnsone7245742012-09-05 17:12:55 -07008341
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8347
Jeff Johnsone7245742012-09-05 17:12:55 -07008348
Jeff Johnson295189b2012-06-20 16:38:30 -07008349}/*WDI_ProcessDelBSSReq*/
8350
8351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008354
8355 @param pWDICtx: pointer to the WLAN DAL context
8356 pEventData: pointer to the event information structure
8357
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 @see
8359 @return Result of the function call
8360*/
8361WDI_Status
8362WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008363(
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 WDI_ControlBlockType* pWDICtx,
8365 WDI_EventInfoType* pEventData
8366)
8367{
8368 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8369 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 wpt_uint16 usDataOffset = 0;
8374 wpt_uint16 usSendSize = 0;
8375 wpt_uint16 uMsgSize = 0;
8376 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008377 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008378
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8381
8382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 -------------------------------------------------------------------------*/
8385 if (( NULL == pEventData ) ||
8386 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8387 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8388 {
8389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 }
8394
8395 /*-------------------------------------------------------------------------
8396 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 -------------------------------------------------------------------------*/
8399 wpalMutexAcquire(&pWDICtx->wptMutex);
8400
8401 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008403 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8405 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8406 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008407
8408 if ( NULL == pBSSSes )
8409 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8411 "%s: Association sequence for this BSS does not yet exist - "
8412 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8413 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008414
8415 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 }
8418
8419 /*------------------------------------------------------------------------
8420 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 ------------------------------------------------------------------------*/
8423 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8424 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8426 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8427 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008428
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008430
8431 wpalMutexRelease(&pWDICtx->wptMutex);
8432
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 }
8435
8436 /*-----------------------------------------------------------------------
8437 If Post Assoc was not yet received - the current association must
8438 be in progress
8439 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8442 {
8443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8444 "Association sequence for this BSS association no longer in "
8445 "progress - not allowed");
8446
8447 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 }
8450
8451 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 -----------------------------------------------------------------------*/
8454 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8455 {
8456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8457 "Post Assoc not allowed before JOIN - failing request");
8458
8459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 }
8462
8463 wpalMutexRelease(&pWDICtx->wptMutex);
8464
8465 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8466 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8467 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8472 ( usSendSize < (usDataOffset + uMsgSize )))
8473 {
8474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008475 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 }
8480
8481 /*Copy the STA parameters */
8482 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8483 &pwdiPostAssocParams->wdiSTAParams );
8484
8485 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 WDI_STATableFindStaidByAddr(pWDICtx,
8488 pwdiPostAssocParams->wdiSTAParams.macSTA,
8489 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8490 {
8491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008492 MAC_ADDRESS_STR
8493 ": This station does not exist in the WDI Station Table",
8494 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008496 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 }
8499
8500 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 pBSSSes->ucBSSIdx;
8503
8504 /*Copy the BSS parameters */
8505 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8506 &pwdiPostAssocParams->wdiBSSParams);
8507
8508 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 WDI_STATableFindStaidByAddr(pWDICtx,
8511 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 {
8514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008515 MAC_ADDRESS_STR
8516 ": This station does not exist in the WDI Station Table",
8517 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008519 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 }
8522
8523 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 pBSSSes->ucBSSIdx;
8526
Jeff Johnsone7245742012-09-05 17:12:55 -07008527
8528 wpalMemoryCopy( pSendBuffer+usDataOffset,
8529 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8530 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008531
8532 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8533
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8535 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8536 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008537
Jeff Johnsone7245742012-09-05 17:12:55 -07008538
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008541
Jeff Johnsone7245742012-09-05 17:12:55 -07008542
8543 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008546
8547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8552
Jeff Johnsone7245742012-09-05 17:12:55 -07008553
Jeff Johnson295189b2012-06-20 16:38:30 -07008554}/*WDI_ProcessPostAssocReq*/
8555
8556/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008559
8560 @param pWDICtx: pointer to the WLAN DAL context
8561 pEventData: pointer to the event information structure
8562
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 @see
8564 @return Result of the function call
8565*/
8566WDI_Status
8567WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008568(
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 WDI_ControlBlockType* pWDICtx,
8570 WDI_EventInfoType* pEventData
8571)
8572{
8573 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8574 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008575 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 wpt_uint16 usDataOffset = 0;
8579 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8582
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8585
8586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 -------------------------------------------------------------------------*/
8589 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8590 ( NULL == pEventData->pCBfnc ))
8591 {
8592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 }
8597
8598 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8599 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8600 /*-------------------------------------------------------------------------
8601 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 -------------------------------------------------------------------------*/
8604 wpalMutexAcquire(&pWDICtx->wptMutex);
8605
8606 /*------------------------------------------------------------------------
8607 Find the BSS for which the request is made and identify WDI session
8608 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8610 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 &macBSSID))
8612 {
8613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008614 "This station does not exist in the WDI Station Table %d",
8615 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008618 }
8619
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8621 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8624 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008626
8627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 }
8630
8631 /*------------------------------------------------------------------------
8632 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 ------------------------------------------------------------------------*/
8635 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8636 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8638 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8639 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008640
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 }
8645
8646 wpalMutexRelease(&pWDICtx->wptMutex);
8647 /*-----------------------------------------------------------------------
8648 Get message buffer
8649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 sizeof(halDelStaReqMsg.delStaParams),
8652 &pSendBuffer, &usDataOffset, &usSendSize))||
8653 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8654 {
8655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008656 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 }
8661
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8663 wpalMemoryCopy( pSendBuffer+usDataOffset,
8664 &halDelStaReqMsg.delStaParams,
8665 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008666
8667 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669
8670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8675
8676}/*WDI_ProcessDelSTAReq*/
8677
8678
8679/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008681==========================================================================*/
8682/**
8683 @brief Process Set BSS Key Request function (called when Main FSM
8684 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008685
8686 @param pWDICtx: pointer to the WLAN DAL context
8687 pEventData: pointer to the event information structure
8688
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 @see
8690 @return Result of the function call
8691*/
8692WDI_Status
8693WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008694(
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 WDI_ControlBlockType* pWDICtx,
8696 WDI_EventInfoType* pEventData
8697)
8698{
8699 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8700 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 wpt_uint16 usDataOffset = 0;
8705 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8708 wpt_uint8 keyIndex = 0;
8709
8710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8711
8712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 -------------------------------------------------------------------------*/
8715 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8716 ( NULL == pEventData->pCBfnc ))
8717 {
8718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 }
8723
8724 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8725 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8726 /*-------------------------------------------------------------------------
8727 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 -------------------------------------------------------------------------*/
8730 wpalMutexAcquire(&pWDICtx->wptMutex);
8731
8732 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8736 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8737 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008738
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 {
8741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8743 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008744
8745 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 }
8748
8749 /*------------------------------------------------------------------------
8750 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 ------------------------------------------------------------------------*/
8753 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8756 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8757 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008758
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 }
8763
8764
8765 wpalMutexRelease(&pWDICtx->wptMutex);
8766 /*-----------------------------------------------------------------------
8767 Get message buffer
8768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8771 &pSendBuffer, &usDataOffset, &usSendSize))||
8772 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8773 {
8774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008775 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 }
8780
8781 /*-----------------------------------------------------------------------
8782 Copy the Key parameters into the HAL message
8783 -----------------------------------------------------------------------*/
8784
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8789
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8792
8793 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8794 keyIndex++)
8795 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8798 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8799 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8800 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8801 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8802 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8809 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008811 WDI_MAX_KEY_LENGTH);
8812 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008813
8814 wpalMemoryCopy( pSendBuffer+usDataOffset,
8815 &halSetBssKeyReqMsg.setBssKeyParams,
8816 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008817
8818 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008820
8821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8825 wdiSetBSSKeyRspCb, pEventData->pUserData,
8826 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008827
8828}/*WDI_ProcessSetBssKeyReq*/
8829
8830/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008833
8834 @param pWDICtx: pointer to the WLAN DAL context
8835 pEventData: pointer to the event information structure
8836
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 @see
8838 @return Result of the function call
8839*/
8840WDI_Status
8841WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008842(
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 WDI_ControlBlockType* pWDICtx,
8844 WDI_EventInfoType* pEventData
8845)
8846{
8847 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8848 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 wpt_uint16 usDataOffset = 0;
8853 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8857
8858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 -------------------------------------------------------------------------*/
8861 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8862 ( NULL == pEventData->pCBfnc ))
8863 {
8864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 }
8869
8870 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8871 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8872 /*-------------------------------------------------------------------------
8873 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 -------------------------------------------------------------------------*/
8876 wpalMutexAcquire(&pWDICtx->wptMutex);
8877
8878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8882 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8883 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008884
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 {
8887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8889 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008890
8891 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 }
8894
8895 /*------------------------------------------------------------------------
8896 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 ------------------------------------------------------------------------*/
8899 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8900 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8902 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8903 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008904
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 }
8909
8910
8911 wpalMutexRelease(&pWDICtx->wptMutex);
8912
8913 /*-----------------------------------------------------------------------
8914 Get message buffer
8915 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8918 &pSendBuffer, &usDataOffset, &usSendSize))||
8919 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8920 {
8921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008922 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 }
8927 /*-----------------------------------------------------------------------
8928 Copy the Key parameters into the HAL message
8929 -----------------------------------------------------------------------*/
8930 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8931
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8934
8935 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8936
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8939
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 wpalMemoryCopy( pSendBuffer+usDataOffset,
8941 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8942 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008943
8944 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008946
8947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008953}/*WDI_ProcessRemoveBssKeyReq*/
8954
8955/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008958
8959 @param pWDICtx: pointer to the WLAN DAL context
8960 pEventData: pointer to the event information structure
8961
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 @see
8963 @return Result of the function call
8964*/
8965WDI_Status
8966WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008967(
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 WDI_ControlBlockType* pWDICtx,
8969 WDI_EventInfoType* pEventData
8970)
8971{
8972 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8973 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8974 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 wpt_uint16 usDataOffset = 0;
8977 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8982 wpt_uint8 keyIndex = 0;
8983
8984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8985
8986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 -------------------------------------------------------------------------*/
8989 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8990 ( NULL == pEventData->pCBfnc ))
8991 {
8992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 }
8997
8998 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8999 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9000 /*-------------------------------------------------------------------------
9001 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 -------------------------------------------------------------------------*/
9004 wpalMutexAcquire(&pWDICtx->wptMutex);
9005
9006 /*------------------------------------------------------------------------
9007 Find the BSS for which the request is made and identify WDI session
9008 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9010 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 &macBSSID))
9012 {
9013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009014 "This station does not exist in the WDI Station Table %d",
9015 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 }
9019
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9021 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9024 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9025 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009026
9027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009030
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 /*------------------------------------------------------------------------
9032 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 ------------------------------------------------------------------------*/
9035 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9036 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9038 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9039 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009040
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 }
9045
9046
9047 wpalMutexRelease(&pWDICtx->wptMutex);
9048 /*-----------------------------------------------------------------------
9049 Get message buffer
9050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9053 &pSendBuffer, &usDataOffset, &usSendSize))||
9054 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9055 {
9056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009057 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 }
9062 /*-----------------------------------------------------------------------
9063 Copy the STA Key parameters into the HAL message
9064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9067
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9070
9071 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9072
9073 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9074
9075 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9076
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9078 keyIndex++)
9079 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9082 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9083 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9084 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9085 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9086 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9093 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009095 WDI_MAX_KEY_LENGTH);
9096 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009097
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 wpalMemoryCopy( pSendBuffer+usDataOffset,
9099 &halSetStaKeyReqMsg.setStaKeyParams,
9100 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009101
9102 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009104
9105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9109 wdiSetSTAKeyRspCb, pEventData->pUserData,
9110 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009111
9112}/*WDI_ProcessSetSTAKeyReq*/
9113
9114/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009117
9118 @param pWDICtx: pointer to the WLAN DAL context
9119 pEventData: pointer to the event information structure
9120
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 @see
9122 @return Result of the function call
9123*/
9124WDI_Status
9125WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009126(
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 WDI_ControlBlockType* pWDICtx,
9128 WDI_EventInfoType* pEventData
9129)
9130{
9131 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9132 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9133 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 wpt_uint16 usDataOffset = 0;
9136 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 wpt_macAddr macBSSID;
9139 wpt_uint8 ucCurrentBSSSesIdx;
9140 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9142
9143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 -------------------------------------------------------------------------*/
9146 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9147 ( NULL == pEventData->pCBfnc ))
9148 {
9149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 }
9154
9155 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9156 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9157 /*-------------------------------------------------------------------------
9158 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 -------------------------------------------------------------------------*/
9161 wpalMutexAcquire(&pWDICtx->wptMutex);
9162
9163 /*------------------------------------------------------------------------
9164 Find the BSS for which the request is made and identify WDI session
9165 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9167 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 &macBSSID))
9169 {
9170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009171 "This station does not exist in the WDI Station Table %d",
9172 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 }
9176
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9178 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9181 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9182 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009183
9184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009187
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 /*------------------------------------------------------------------------
9189 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 ------------------------------------------------------------------------*/
9192 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9193 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9195 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9196 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009197
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 }
9202
9203
9204
9205 wpalMutexRelease(&pWDICtx->wptMutex);
9206 /*-----------------------------------------------------------------------
9207 Get message buffer
9208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9211 &pSendBuffer, &usDataOffset, &usSendSize))||
9212 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9213 {
9214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009215 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9217 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 /*-----------------------------------------------------------------------
9222 Copy the Key parameters into the HAL message
9223 -----------------------------------------------------------------------*/
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9227
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9230
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9233
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9236
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 wpalMemoryCopy( pSendBuffer+usDataOffset,
9238 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9239 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009240
9241 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009243
9244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009250
9251}/*WDI_ProcessRemoveSTAKeyReq*/
9252
9253/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009256
9257 @param pWDICtx: pointer to the WLAN DAL context
9258 pEventData: pointer to the event information structure
9259
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 @see
9261 @return Result of the function call
9262*/
9263WDI_Status
9264WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009265(
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 WDI_ControlBlockType* pWDICtx,
9267 WDI_EventInfoType* pEventData
9268)
9269{
9270 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9271 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9272 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 wpt_uint16 usDataOffset = 0;
9275 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9280 wpt_uint8 keyIndex = 0;
9281
9282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9283
9284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 -------------------------------------------------------------------------*/
9287 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9288 ( NULL == pEventData->pCBfnc ))
9289 {
9290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 }
9295
9296 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9297 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9298 /*-------------------------------------------------------------------------
9299 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 -------------------------------------------------------------------------*/
9302 wpalMutexAcquire(&pWDICtx->wptMutex);
9303
9304 /*------------------------------------------------------------------------
9305 Find the BSS for which the request is made and identify WDI session
9306 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9308 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 &macBSSID))
9310 {
9311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009312 "This station does not exist in the WDI Station Table %d",
9313 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 }
9317
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9319 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 {
9321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009322 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009324
9325 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009328
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 /*------------------------------------------------------------------------
9330 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 ------------------------------------------------------------------------*/
9333 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9334 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9336 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9337 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009338
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009341 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009342 }
9343
9344
9345 wpalMutexRelease(&pWDICtx->wptMutex);
9346 /*-----------------------------------------------------------------------
9347 Get message buffer
9348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9351 &pSendBuffer, &usDataOffset, &usSendSize))||
9352 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9353 {
9354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009355 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 }
9360 /*-----------------------------------------------------------------------
9361 Copy the STA Key parameters into the HAL message
9362 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9365
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009367 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9368
9369 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9370
9371 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9372
9373 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9374
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9376 keyIndex++)
9377 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9380 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9381 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9382 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9383 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9384 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009385 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009386 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9391 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 WDI_MAX_KEY_LENGTH);
9394 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009395
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 wpalMemoryCopy( pSendBuffer+usDataOffset,
9397 &halSetStaKeyReqMsg.setStaKeyParams,
9398 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009399
9400 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009402
9403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9407 wdiSetSTAKeyRspCb, pEventData->pUserData,
9408 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009409
9410}/*WDI_ProcessSetSTABcastKeyReq*/
9411
9412/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009415
9416 @param pWDICtx: pointer to the WLAN DAL context
9417 pEventData: pointer to the event information structure
9418
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 @see
9420 @return Result of the function call
9421*/
9422WDI_Status
9423WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009424(
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 WDI_ControlBlockType* pWDICtx,
9426 WDI_EventInfoType* pEventData
9427)
9428{
9429 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9430 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9431 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 wpt_uint16 usDataOffset = 0;
9434 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 wpt_macAddr macBSSID;
9437 wpt_uint8 ucCurrentBSSSesIdx;
9438 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9440
9441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 -------------------------------------------------------------------------*/
9444 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9445 ( NULL == pEventData->pCBfnc ))
9446 {
9447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 }
9452
9453 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9454 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9455 /*-------------------------------------------------------------------------
9456 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 -------------------------------------------------------------------------*/
9459 wpalMutexAcquire(&pWDICtx->wptMutex);
9460
9461 /*------------------------------------------------------------------------
9462 Find the BSS for which the request is made and identify WDI session
9463 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9465 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 &macBSSID))
9467 {
9468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009469 "This station does not exist in the WDI Station Table %d",
9470 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 }
9474
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9476 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9479 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9480 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009481
9482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009485
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 /*------------------------------------------------------------------------
9487 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 ------------------------------------------------------------------------*/
9490 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9491 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9493 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9494 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009495
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 }
9500
9501
9502
9503 wpalMutexRelease(&pWDICtx->wptMutex);
9504 /*-----------------------------------------------------------------------
9505 Get message buffer
9506 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9509 &pSendBuffer, &usDataOffset, &usSendSize))||
9510 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9511 {
9512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009513 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9515 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 /*-----------------------------------------------------------------------
9520 Copy the Key parameters into the HAL message
9521 -----------------------------------------------------------------------*/
9522
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9525
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9528
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9531
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9534
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 wpalMemoryCopy( pSendBuffer+usDataOffset,
9536 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9537 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009538
9539 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541
9542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009548
9549}/*WDI_ProcessRemoveSTABcastKeyReq*/
9550
9551/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009553==========================================================================*/
9554/**
9555 @brief Process Add TSpec Request function (called when Main FSM
9556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009557
9558 @param pWDICtx: pointer to the WLAN DAL context
9559 pEventData: pointer to the event information structure
9560
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 @see
9562 @return Result of the function call
9563*/
9564WDI_Status
9565WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009566(
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 WDI_ControlBlockType* pWDICtx,
9568 WDI_EventInfoType* pEventData
9569)
9570{
9571 WDI_AddTSReqParamsType* pwdiAddTSParams;
9572 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 wpt_uint16 usDataOffset = 0;
9577 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 wpt_macAddr macBSSID;
9580 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009581
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9583
9584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 -------------------------------------------------------------------------*/
9587 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9588 ( NULL == pEventData->pCBfnc ))
9589 {
9590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 }
9595
9596 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9597 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9598 /*-------------------------------------------------------------------------
9599 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 -------------------------------------------------------------------------*/
9602 wpalMutexAcquire(&pWDICtx->wptMutex);
9603
9604 /*------------------------------------------------------------------------
9605 Find the BSS for which the request is made and identify WDI session
9606 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9608 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 &macBSSID))
9610 {
9611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009612 "This station does not exist in the WDI Station Table %d",
9613 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 }
9617
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9619 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9622 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9623 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009624
9625 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009628
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 /*------------------------------------------------------------------------
9630 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 ------------------------------------------------------------------------*/
9633 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9634 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9636 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9637 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009638
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 }
9643
9644 wpalMutexRelease(&pWDICtx->wptMutex);
9645 /*-----------------------------------------------------------------------
9646 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9650 sizeof(halAddTsParams),
9651 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 &usSendSize))||
9653 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9654 {
9655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009656 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 }
9661
9662 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9663 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9664
9665 //TSPEC IE
9666 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9667 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9698
9699 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9714
9715 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 wpalMemoryCopy( pSendBuffer+usDataOffset,
9722 &halAddTsParams,
9723 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009724
9725 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009727
9728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009734}/*WDI_ProcessAddTSpecReq*/
9735
9736
9737/**
9738 @brief Process Del TSpec Request function (called when Main FSM
9739 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009740
9741 @param pWDICtx: pointer to the WLAN DAL context
9742 pEventData: pointer to the event information structure
9743
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 @see
9745 @return Result of the function call
9746*/
9747WDI_Status
9748WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009749(
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 WDI_ControlBlockType* pWDICtx,
9751 WDI_EventInfoType* pEventData
9752)
9753{
9754 WDI_DelTSReqParamsType* pwdiDelTSParams;
9755 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009758 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 wpt_uint16 usDataOffset = 0;
9760 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9763
9764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 -------------------------------------------------------------------------*/
9767 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9768 ( NULL == pEventData->pCBfnc ))
9769 {
9770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 }
9775
9776 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9777 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9778
9779 /*-------------------------------------------------------------------------
9780 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 -------------------------------------------------------------------------*/
9783 wpalMutexAcquire(&pWDICtx->wptMutex);
9784
9785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9789 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9790 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9795 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9796 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9797
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 }
9801
9802 /*------------------------------------------------------------------------
9803 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 ------------------------------------------------------------------------*/
9806 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9807 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9809 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9810 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009811
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 }
9816
9817
9818 wpalMutexRelease(&pWDICtx->wptMutex);
9819 /*-----------------------------------------------------------------------
9820 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9825 &pSendBuffer, &usDataOffset, &usSendSize))||
9826 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9827 {
9828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009829 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 wpalMemoryCopy( pSendBuffer+usDataOffset,
9836 &pwdiDelTSParams->wdiDelTSInfo,
9837 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009838
9839 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009841
9842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009843 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9846 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009847}/*WDI_ProcessDelTSpecReq*/
9848
9849/**
9850 @brief Process Update EDCA Params Request function (called when
9851 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009852
9853 @param pWDICtx: pointer to the WLAN DAL context
9854 pEventData: pointer to the event information structure
9855
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 @see
9857 @return Result of the function call
9858*/
9859WDI_Status
9860WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009861(
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 WDI_ControlBlockType* pWDICtx,
9863 WDI_EventInfoType* pEventData
9864)
9865{
9866 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9867 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 wpt_uint16 usDataOffset = 0;
9872 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9875
9876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 -------------------------------------------------------------------------*/
9879 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9880 ( NULL == pEventData->pCBfnc ))
9881 {
9882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 }
9887
9888 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9889 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9890 /*-------------------------------------------------------------------------
9891 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 -------------------------------------------------------------------------*/
9894 wpalMutexAcquire(&pWDICtx->wptMutex);
9895
9896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9900 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9901 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009902
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 {
9905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9907 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009908
9909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 }
9912
9913 /*------------------------------------------------------------------------
9914 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 ------------------------------------------------------------------------*/
9917 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9918 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9920 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9921 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009922
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 }
9927
9928
9929 wpalMutexRelease(&pWDICtx->wptMutex);
9930 /*-----------------------------------------------------------------------
9931 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9936 &pSendBuffer, &usDataOffset, &usSendSize))||
9937 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9938 {
9939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009940 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 }
9945
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 wpalMemoryCopy( pSendBuffer+usDataOffset,
9947 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9948 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009949
9950 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009952
9953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9957 wdiUpdateEDCARspCb, pEventData->pUserData,
9958 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009959}/*WDI_ProcessUpdateEDCAParamsReq*/
9960
9961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009964
9965 @param pWDICtx: pointer to the WLAN DAL context
9966 pEventData: pointer to the event information structure
9967
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 @see
9969 @return Result of the function call
9970*/
9971WDI_Status
9972WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009973(
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 WDI_ControlBlockType* pWDICtx,
9975 WDI_EventInfoType* pEventData
9976)
9977{
9978 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9979 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 wpt_uint16 usDataOffset = 0;
9984 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 wpt_macAddr macBSSID;
9987
9988 tAddBASessionReqMsg halAddBASessionReq;
9989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9990
9991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 -------------------------------------------------------------------------*/
9994 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9995 ( NULL == pEventData->pCBfnc ))
9996 {
9997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 }
10002
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10007 /*-------------------------------------------------------------------------
10008 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 -------------------------------------------------------------------------*/
10011 wpalMutexAcquire(&pWDICtx->wptMutex);
10012
10013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10017 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 &macBSSID))
10019 {
10020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010021 "This station does not exist in the WDI Station Table %d",
10022 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 }
10026
10027
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10033 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10034 __func__, MAC_ADDR_ARRAY(macBSSID));
10035
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 }
10039
10040 /*------------------------------------------------------------------------
10041 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 ------------------------------------------------------------------------*/
10044 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10045 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10047 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10048 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010049
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 }
10054
10055
10056 wpalMutexRelease(&pWDICtx->wptMutex);
10057 /*-----------------------------------------------------------------------
10058 Get message buffer
10059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10061 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 sizeof(halAddBASessionReq.addBASessionParams),
10063 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10066 {
10067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010068 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 }
10073
10074 halAddBASessionReq.addBASessionParams.staIdx =
10075 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10076 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10077 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10078 WDI_MAC_ADDR_LEN);
10079 halAddBASessionReq.addBASessionParams.baTID =
10080 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10081 halAddBASessionReq.addBASessionParams.baPolicy =
10082 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10083 halAddBASessionReq.addBASessionParams.baBufferSize =
10084 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10085 halAddBASessionReq.addBASessionParams.baTimeout =
10086 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10087 halAddBASessionReq.addBASessionParams.baSSN =
10088 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10089 halAddBASessionReq.addBASessionParams.baDirection =
10090 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10091
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 wpalMemoryCopy( pSendBuffer+usDataOffset,
10093 &halAddBASessionReq.addBASessionParams,
10094 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010095
10096 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010098
10099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10103 wdiAddBASessionRspCb, pEventData->pUserData,
10104 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010105}/*WDI_ProcessAddBASessionReq*/
10106
10107/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010110
10111 @param pWDICtx: pointer to the WLAN DAL context
10112 pEventData: pointer to the event information structure
10113
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 @see
10115 @return Result of the function call
10116*/
10117WDI_Status
10118WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010119(
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 WDI_ControlBlockType* pWDICtx,
10121 WDI_EventInfoType* pEventData
10122)
10123{
10124 WDI_DelBAReqParamsType* pwdiDelBAParams;
10125 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 wpt_uint16 usDataOffset = 0;
10130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 wpt_macAddr macBSSID;
10133 tDelBAParams halDelBAparam;
10134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10135
10136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 -------------------------------------------------------------------------*/
10139 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10140 ( NULL == pEventData->pCBfnc ))
10141 {
10142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 }
10147
10148 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10149 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10150 /*-------------------------------------------------------------------------
10151 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 -------------------------------------------------------------------------*/
10154 wpalMutexAcquire(&pWDICtx->wptMutex);
10155
10156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10160 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 &macBSSID))
10162 {
10163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010164 "This station does not exist in the WDI Station Table %d",
10165 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 }
10169
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010171
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10175 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10176 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010177
10178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 }
10181
10182 /*------------------------------------------------------------------------
10183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 ------------------------------------------------------------------------*/
10186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10187 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10189 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10190 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010191
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 }
10196
10197 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 sizeof(halDelBAparam),
10200 &pSendBuffer, &usDataOffset, &usSendSize))||
10201 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10202 {
10203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010204 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 }
10209
10210 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10211 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10212 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10213
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 wpalMemoryCopy( pSendBuffer+usDataOffset,
10215 &halDelBAparam,
10216 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010217
10218 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010220
10221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10225 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010226}/*WDI_ProcessDelBAReq*/
10227
10228#ifdef FEATURE_WLAN_CCX
10229
10230WDI_Status
10231WDI_ProcessTSMStatsReq
10232(
10233 WDI_ControlBlockType* pWDICtx,
10234 WDI_EventInfoType* pEventData
10235)
10236{
10237 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10238 WDI_TsmRspCb wdiTSMRspCb;
10239 wpt_uint8 ucCurrentBSSSesIdx = 0;
10240 WDI_BSSSessionType* pBSSSes = NULL;
10241 wpt_uint8* pSendBuffer = NULL;
10242 wpt_uint16 usDataOffset = 0;
10243 wpt_uint16 usSendSize = 0;
10244 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10245 tTsmStatsParams halTsmStatsReqParams = {0};
10246
10247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10248
10249 /*-------------------------------------------------------------------------
10250 Sanity check
10251 -------------------------------------------------------------------------*/
10252 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10253 ( NULL == pEventData->pCBfnc ))
10254 {
10255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 WDI_ASSERT(0);
10258 return WDI_STATUS_E_FAILURE;
10259 }
10260
10261 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10262 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10263 /*-------------------------------------------------------------------------
10264 Check to see if we are in the middle of an association, if so queue, if
10265 not it means it is free to process request
10266 -------------------------------------------------------------------------*/
10267 wpalMutexAcquire(&pWDICtx->wptMutex);
10268
10269 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10270 if ( NULL == pBSSSes )
10271 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10273 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10274 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010275
10276 wpalMutexRelease(&pWDICtx->wptMutex);
10277 return WDI_STATUS_E_NOT_ALLOWED;
10278 }
10279
10280 /*------------------------------------------------------------------------
10281 Check if this BSS is being currently processed or queued,
10282 if queued - queue the new request as well
10283 ------------------------------------------------------------------------*/
10284 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10285 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10287 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10288 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010289
10290 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10291 wpalMutexRelease(&pWDICtx->wptMutex);
10292 return wdiStatus;
10293 }
10294
10295 wpalMutexRelease(&pWDICtx->wptMutex);
10296 /*-----------------------------------------------------------------------
10297 Get message buffer
10298 ! TO DO : proper conversion into the HAL Message Request Format
10299 -----------------------------------------------------------------------*/
10300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10301 sizeof(halTsmStatsReqParams),
10302 &pSendBuffer, &usDataOffset, &usSendSize))||
10303 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10304 {
10305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010306 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 pEventData, pwdiTSMParams, wdiTSMRspCb);
10308 WDI_ASSERT(0);
10309 return WDI_STATUS_E_FAILURE;
10310 }
10311
10312 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10313 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10314 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10315 WDI_MAC_ADDR_LEN);
10316 wpalMemoryCopy( pSendBuffer+usDataOffset,
10317 &halTsmStatsReqParams,
10318 sizeof(halTsmStatsReqParams));
10319
10320 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10321 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10322
10323 /*-------------------------------------------------------------------------
10324 Send TSM Stats Request to HAL
10325 -------------------------------------------------------------------------*/
10326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10327 wdiTSMRspCb, pEventData->pUserData,
10328 WDI_TSM_STATS_RESP);
10329}/*WDI_ProcessTSMStatsReq*/
10330
10331#endif
10332
10333
10334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010337
10338 @param pWDICtx: pointer to the WLAN DAL context
10339 pEventData: pointer to the event information structure
10340
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 @see
10342 @return Result of the function call
10343*/
10344WDI_Status
10345WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010346(
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 WDI_ControlBlockType* pWDICtx,
10348 WDI_EventInfoType* pEventData
10349)
10350{
10351 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10352 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 wpt_uint16 usDataOffset = 0;
10355 wpt_uint16 usSendSize = 0;
10356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10357
10358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 -------------------------------------------------------------------------*/
10361 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10362 ( NULL == pEventData->pCBfnc ))
10363 {
10364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 }
10369
10370 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10371 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10372 /*-----------------------------------------------------------------------
10373 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10378 &pSendBuffer, &usDataOffset, &usSendSize))||
10379 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10380 {
10381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010382 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 }
10387
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 wpalMemoryCopy( pSendBuffer+usDataOffset,
10389 &pwdiFlushAcParams->wdiFlushAcInfo,
10390 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010391
10392 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010394
10395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10399 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010400}/*WDI_ProcessFlushAcReq*/
10401
10402/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010405
10406 @param pWDICtx: pointer to the WLAN DAL context
10407 pEventData: pointer to the event information structure
10408
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 @see
10410 @return Result of the function call
10411*/
10412WDI_Status
10413WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010414(
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 WDI_ControlBlockType* pWDICtx,
10416 WDI_EventInfoType* pEventData
10417)
10418{
10419 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10420 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 wpt_uint16 usDataOffset = 0;
10423 wpt_uint16 usSendSize = 0;
10424
10425 tBtAmpEventMsg haltBtAmpEventMsg;
10426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10427
10428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 -------------------------------------------------------------------------*/
10431 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10432 ( NULL == pEventData->pCBfnc ))
10433 {
10434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 }
10439
10440 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10441 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10442 /*-----------------------------------------------------------------------
10443 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10448 &pSendBuffer, &usDataOffset, &usSendSize))||
10449 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10450 {
10451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010452 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 }
10457
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 wpalMemoryCopy( pSendBuffer+usDataOffset,
10461 &haltBtAmpEventMsg.btAmpEventParams,
10462 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010463
10464 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010466
10467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10471 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010472}/*WDI_ProcessBtAmpEventReq*/
10473
10474/**
10475 @brief Process Add STA self Request function (called when Main FSM
10476 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010477
10478 @param pWDICtx: pointer to the WLAN DAL context
10479 pEventData: pointer to the event information structure
10480
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 @see
10482 @return Result of the function call
10483*/
10484WDI_Status
10485WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010486(
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 WDI_ControlBlockType* pWDICtx,
10488 WDI_EventInfoType* pEventData
10489)
10490{
10491 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10492 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010493 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 wpt_uint16 usDataOffset = 0;
10495 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010496 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10498
10499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 -------------------------------------------------------------------------*/
10502 if (( NULL == pEventData ) ||
10503 ( NULL == pEventData->pEventData) ||
10504 ( NULL == pEventData->pCBfnc))
10505 {
10506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 }
10511
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10516 /*-----------------------------------------------------------------------
10517 Get message buffer
10518 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10520 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010521 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010522 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010523 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 {
10525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010526 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 }
10531
10532 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10535
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010537 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10538 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10539 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10540 {
10541 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10542 }
10543 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10544 VOS_P2P_CLIENT_MODE) ||
10545 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10546 VOS_P2P_DEVICE))
10547 {
10548 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10549 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010551 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010552
10553 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010555
10556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010557 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10560 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10561 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010562}/*WDI_ProcessAddSTASelfReq*/
10563
10564
10565
10566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010569
10570 @param pWDICtx: pointer to the WLAN DAL context
10571 pEventData: pointer to the event information structure
10572
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 @see
10574 @return Result of the function call
10575*/
10576WDI_Status
10577WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010578(
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 WDI_ControlBlockType* pWDICtx,
10580 WDI_EventInfoType* pEventData
10581)
10582{
10583 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10584 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 wpt_uint16 usDataOffset = 0;
10587 wpt_uint16 usSendSize = 0;
10588 tDelStaSelfParams halSetDelSelfSTAParams;
10589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10590
10591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 -------------------------------------------------------------------------*/
10594 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10595 ( NULL == pEventData->pCBfnc ))
10596 {
10597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 }
10602
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10605 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10606
10607 /*-----------------------------------------------------------------------
10608 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10613 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10616 {
10617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010618 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 }
10623
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10626
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10628 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010629
10630 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010631 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010632
10633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10637 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 WDI_DEL_STA_SELF_RESP);
10639
10640}
10641
Jeff Johnsone7245742012-09-05 17:12:55 -070010642#ifdef FEATURE_OEM_DATA_SUPPORT
10643/**
10644 @brief Process Start Oem Data Request function (called when Main
10645 FSM allows it)
10646
10647 @param pWDICtx: pointer to the WLAN DAL context
10648 pEventData: pointer to the event information structure
10649
10650 @see
10651 @return Result of the function call
10652*/
10653WDI_Status
10654WDI_ProcessStartOemDataReq
10655(
10656 WDI_ControlBlockType* pWDICtx,
10657 WDI_EventInfoType* pEventData
10658)
10659{
10660 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10661 WDI_oemDataRspCb wdiOemDataRspCb;
10662 wpt_uint8* pSendBuffer = NULL;
10663 wpt_uint16 usDataOffset = 0;
10664 wpt_uint16 usSendSize = 0;
10665 wpt_uint16 reqLen;
10666 tStartOemDataReqParams* halStartOemDataReqParams;
10667
10668 /*-------------------------------------------------------------------------
10669 Sanity check
10670 -------------------------------------------------------------------------*/
10671 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10672 ( NULL == pEventData->pCBfnc ))
10673 {
10674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010675 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 WDI_ASSERT(0);
10677 return WDI_STATUS_E_FAILURE;
10678 }
10679
10680 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10681 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10682
10683 /*-----------------------------------------------------------------------
10684 Get message buffer
10685 -----------------------------------------------------------------------*/
10686
10687 reqLen = sizeof(tStartOemDataReqParams);
10688
10689 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10690 WDI_START_OEM_DATA_REQ, reqLen,
10691 &pSendBuffer, &usDataOffset, &usSendSize))||
10692 (usSendSize < (usDataOffset + reqLen)))
10693 {
10694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010695 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10697 WDI_ASSERT(0);
10698 return WDI_STATUS_E_FAILURE;
10699 }
10700
10701 //copying WDI OEM DATA REQ PARAMS to shared memory
10702 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10703
10704 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10705 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10706
10707 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10708 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10709
10710 /*-------------------------------------------------------------------------
10711 Send Start Request to HAL
10712 -------------------------------------------------------------------------*/
10713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10714 wdiOemDataRspCb, pEventData->pUserData,
10715 WDI_START_OEM_DATA_RESP);
10716}/*WDI_ProcessStartOemDataReq*/
10717#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010718
10719/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010722
10723 @param pWDICtx: pointer to the WLAN DAL context
10724 pEventData: pointer to the event information structure
10725
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 @see
10727 @return Result of the function call
10728*/
10729WDI_Status
10730WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010731(
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 WDI_ControlBlockType* pWDICtx,
10733 WDI_EventInfoType* pEventData
10734)
10735{
10736 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10737 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 wpt_uint16 usDataOffset = 0;
10740 wpt_uint16 usSendSize = 0;
10741 tHalWlanHostResumeReqParam halResumeReqParams;
10742
10743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10744
10745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 -------------------------------------------------------------------------*/
10748 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10749 ( NULL == pEventData->pCBfnc ))
10750 {
10751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010752 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 }
10756
10757 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10758 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10759
10760 /*-----------------------------------------------------------------------
10761 Get message buffer
10762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10765 &pSendBuffer, &usDataOffset, &usSendSize))||
10766 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10767 {
10768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010769 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 }
10774
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010777
10778 wpalMemoryCopy( pSendBuffer+usDataOffset,
10779 &halResumeReqParams,
10780 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010781
10782 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010784
10785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10789 wdiHostResumeRspCb, pEventData->pUserData,
10790 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010791}/*WDI_ProcessHostResumeReq*/
10792
10793/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010796
10797 @param pWDICtx: pointer to the WLAN DAL context
10798 pEventData: pointer to the event information structure
10799
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 @see
10801 @return Result of the function call
10802*/
10803WDI_Status
10804WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010805(
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 WDI_ControlBlockType* pWDICtx,
10807 WDI_EventInfoType* pEventData
10808)
10809{
10810 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10811 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 wpt_uint16 usDataOffset = 0;
10814 wpt_uint16 usSendSize = 0;
10815 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10817
10818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 -------------------------------------------------------------------------*/
10821 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10822 ( NULL == pEventData->pCBfnc ))
10823 {
10824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010825 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 }
10829
10830 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10831 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010832
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 /*-----------------------------------------------------------------------
10834 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 sizeof(halTxPerTrackingReqParam),
10839 &pSendBuffer, &usDataOffset, &usSendSize))||
10840 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10841 {
10842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010843 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010844 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010848
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10850 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10851 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10852 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853
10854 wpalMemoryCopy( pSendBuffer+usDataOffset,
10855 &halTxPerTrackingReqParam,
10856 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010857
10858 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010860
10861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10865 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010866}/*WDI_ProcessSetTxPerTrackingReq*/
10867
10868/*=========================================================================
10869 Indications
10870=========================================================================*/
10871
10872/**
10873 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010874
10875 @param pWDICtx: pointer to the WLAN DAL context
10876 pEventData: pointer to the event information structure
10877
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 @see
10879 @return Result of the function call
10880*/
10881WDI_Status
10882WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010883(
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 WDI_ControlBlockType* pWDICtx,
10885 WDI_EventInfoType* pEventData
10886)
10887{
10888 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 wpt_uint16 usDataOffset = 0;
10891 wpt_uint16 usSendSize = 0;
10892 WDI_Status wdiStatus;
10893 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10895
10896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 -------------------------------------------------------------------------*/
10899 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10900 {
10901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010902 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 }
10906
10907 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10908
10909 /*-----------------------------------------------------------------------
10910 Get message buffer
10911 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10913 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 sizeof(halWlanSuspendIndparams),
10915 &pSendBuffer, &usDataOffset, &usSendSize))||
10916 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10917 {
10918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10919 "Unable to get send buffer in Suspend Ind ");
10920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 }
10923
10924 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10925 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10926
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010928 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010929
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10931 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
10933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 -------------------------------------------------------------------------*/
10936 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010938
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10941}/*WDI_ProcessHostSuspendInd*/
10942
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010943
10944
10945/**
10946 @brief Process Traffic Stats Indications function (called 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_ProcessTrafficStatsInd
10956(
10957 WDI_ControlBlockType* pWDICtx,
10958 WDI_EventInfoType* pEventData
10959)
10960{
10961 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10962 wpt_uint8* pSendBuffer = NULL;
10963 wpt_uint16 usDataOffset = 0;
10964 wpt_uint16 usSendSize = 0;
10965 WDI_Status wdiStatus;
10966 tStatsClassBIndParams* pStatsClassBIndParams;
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 Traffic Stats ind",__func__);
10976 WDI_ASSERT(0);
10977 return WDI_STATUS_E_FAILURE;
10978 }
10979
10980 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10981
10982 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10983 {
10984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10985 "%s: Invalid parameters in Traffic Stats ind",__func__);
10986 WDI_ASSERT(0);
10987 return WDI_STATUS_E_FAILURE;
10988 }
10989
10990 /*-----------------------------------------------------------------------
10991 Get message buffer
10992 -----------------------------------------------------------------------*/
10993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10994 WDI_TRAFFIC_STATS_IND,
10995 sizeof(tStatsClassBIndParams),
10996 &pSendBuffer, &usDataOffset, &usSendSize))||
10997 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10998 {
10999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11000 "Unable to get send buffer in Traffic Stats Ind ");
11001 WDI_ASSERT(0);
11002 return WDI_STATUS_E_FAILURE;
11003 }
11004
11005 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11006
11007 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11008
11009 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11010 pTrafficStatsIndParams->pTrafficStats,
11011 pTrafficStatsIndParams->length);
11012
11013 /*-------------------------------------------------------------------------
11014 Send Suspend Request to HAL
11015 -------------------------------------------------------------------------*/
11016 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11017 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11018
11019 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11020 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11021}/*WDI_ProcessTrafficStatsInd*/
11022
Chet Lanctota96bb432013-03-18 10:26:30 -070011023#ifdef WLAN_FEATURE_11W
11024/**
11025 @brief Process Exclude Unencrypted Indications function (called
11026 when Main FSM allows it)
11027
11028 @param pWDICtx: pointer to the WLAN DAL context
11029 pEventData: pointer to the event information structure
11030
11031 @see
11032 @return Result of the function call
11033*/
11034WDI_Status
11035WDI_ProcessExcludeUnencryptInd
11036(
11037 WDI_ControlBlockType* pWDICtx,
11038 WDI_EventInfoType* pEventData
11039)
11040{
11041 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11042 wpt_uint8* pSendBuffer = NULL;
11043 wpt_uint16 usDataOffset = 0;
11044 wpt_uint16 usSendSize = 0;
11045 WDI_Status wdiStatus;
11046 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11048
11049 /*-------------------------------------------------------------------------
11050 Sanity check
11051 -------------------------------------------------------------------------*/
11052 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11053 {
11054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11055 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11056 WDI_ASSERT(0);
11057 return WDI_STATUS_E_FAILURE;
11058 }
11059
11060 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11061
11062 /*-----------------------------------------------------------------------
11063 Get message buffer
11064 -----------------------------------------------------------------------*/
11065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11066 WDI_EXCLUDE_UNENCRYPTED_IND,
11067 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11068 &pSendBuffer, &usDataOffset, &usSendSize))||
11069 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11070 {
11071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11072 "Unable to get send buffer in Exclude Unencrypted Ind ");
11073 WDI_ASSERT(0);
11074 return WDI_STATUS_E_FAILURE;
11075 }
11076
11077 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11078
11079 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11080
11081 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11082 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11083
11084 /*-------------------------------------------------------------------------
11085 Send Suspend Request to HAL
11086 -------------------------------------------------------------------------*/
11087 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11088 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11089
11090 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11091 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11092}/*WDI_ProcessExcludeUnencryptInd*/
11093#endif
11094
Yue Ma365933a2013-08-14 15:59:08 -070011095/**
11096 @brief Process Add Periodic Tx Pattern Indication function (called when
11097 Main FSM allows it)
11098
11099 @param pWDICtx: pointer to the WLAN DAL context
11100 pEventData: pointer to the event information structure
11101
11102 @see
11103 @return Result of the function call
11104*/
11105WDI_Status
11106WDI_ProcessAddPeriodicTxPtrnInd
11107(
11108 WDI_ControlBlockType* pWDICtx,
11109 WDI_EventInfoType* pEventData
11110)
11111{
11112 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11113 wpt_uint8* pSendBuffer = NULL;
11114 wpt_uint16 usDataOffset = 0;
11115 wpt_uint16 usSendSize = 0;
11116 WDI_Status wdiStatus;
11117 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11118 wpt_uint8 selfStaIdx = 0;
11119
11120 /*-------------------------------------------------------------------------
11121 Sanity check
11122 -------------------------------------------------------------------------*/
11123 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11124 {
11125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11126 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11127 WDI_ASSERT(0);
11128 return WDI_STATUS_E_FAILURE;
11129 }
11130
11131 pAddPeriodicTxPtrnParams =
11132 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11133
11134 /*------------------------------------------------------------------------
11135 Get message buffer
11136 ------------------------------------------------------------------------*/
11137 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11138 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11139 &pSendBuffer, &usDataOffset, &usSendSize))||
11140 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11141 {
11142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11143 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11144 __func__);
11145 WDI_ASSERT(0);
11146 return WDI_STATUS_E_FAILURE;
11147 }
11148
11149 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11150
11151 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11152 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11153 &selfStaIdx))
11154 {
11155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11156 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011157 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011158
11159 return WDI_STATUS_E_FAILURE;
11160 }
11161
11162 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11163 halAddPeriodicTxPtrn->ucPtrnId =
11164 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11165 halAddPeriodicTxPtrn->usPtrnSize =
11166 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11167 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11168 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11169
11170 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11171 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11172 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11173
11174 /*-------------------------------------------------------------------------
11175 Send Indication to HAL
11176 -------------------------------------------------------------------------*/
11177 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11178 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11179
11180 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11181
11182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11183 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11184
11185 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11186} /* WDI_ProcessAddPeriodicTxPtrnInd */
11187
11188/**
11189 @brief Process Delete Periodic Tx Pattern Indication function (called when
11190 Main FSM allows it)
11191
11192 @param pWDICtx: pointer to the WLAN DAL context
11193 pEventData: pointer to the event information structure
11194
11195 @see
11196 @return Result of the function call
11197*/
11198WDI_Status
11199WDI_ProcessDelPeriodicTxPtrnInd
11200(
11201 WDI_ControlBlockType* pWDICtx,
11202 WDI_EventInfoType* pEventData
11203)
11204{
11205 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11206 wpt_uint8* pSendBuffer = NULL;
11207 wpt_uint16 usDataOffset = 0;
11208 wpt_uint16 usSendSize = 0;
11209 WDI_Status wdiStatus;
11210 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11211 wpt_uint8 selfStaIdx = 0;
11212
11213 /*-------------------------------------------------------------------------
11214 Sanity check
11215 -------------------------------------------------------------------------*/
11216 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11217 {
11218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11219 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11220 WDI_ASSERT(0);
11221 return WDI_STATUS_E_FAILURE;
11222 }
11223
11224 pDelPeriodicTxPtrnParams =
11225 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11226
11227 /*------------------------------------------------------------------------
11228 Get message buffer
11229 ------------------------------------------------------------------------*/
11230 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11231 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11232 &pSendBuffer, &usDataOffset, &usSendSize))||
11233 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11234 {
11235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11236 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11237 __func__);
11238 WDI_ASSERT(0);
11239 return WDI_STATUS_E_FAILURE;
11240 }
11241
11242 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11243
11244 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11245 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11246 &selfStaIdx))
11247 {
11248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11249 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011250 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011251
11252 return WDI_STATUS_E_FAILURE;
11253 }
11254
11255 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11256 halDelPeriodicTxPtrn->uPatternIdBitmap =
11257 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11258
11259 /*-------------------------------------------------------------------------
11260 Send Indication to HAL
11261 -------------------------------------------------------------------------*/
11262 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11263 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11264
11265 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11266
11267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11268 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11269
11270 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11271} /* WDI_ProcessDelPeriodicTxPtrnInd */
11272
Jeff Johnson295189b2012-06-20 16:38:30 -070011273/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011275==========================================================================*/
11276/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011279
11280 @param pWDICtx: pointer to the WLAN DAL context
11281 pEventData: pointer to the event information structure
11282
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 @see
11284 @return Result of the function call
11285*/
11286WDI_Status
11287WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011288(
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 WDI_ControlBlockType* pWDICtx,
11290 WDI_EventInfoType* pEventData
11291)
11292{
11293 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11294 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011295 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 wpt_uint16 usDataOffset = 0;
11297 wpt_uint16 usSendSize = 0;
11298 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11300
11301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 -------------------------------------------------------------------------*/
11304 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11305 ( NULL == pEventData->pCBfnc ))
11306 {
11307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 }
11312
11313 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11314 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11315 /*-----------------------------------------------------------------------
11316 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 sizeof(halSwitchChannelReq.switchChannelParams),
11321 &pSendBuffer, &usDataOffset, &usSendSize))||
11322 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11323 {
11324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011325 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 }
11330
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011333#ifndef WLAN_FEATURE_VOWIFI
11334 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11336#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11339
11340#ifdef WLAN_FEATURE_VOWIFI
11341 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11344 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11345 WDI_MAC_ADDR_LEN);
11346 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11347 pwdiSwitchChParams->wdiChInfo.macBSSId,
11348 WDI_MAC_ADDR_LEN);
11349#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 wpalMemoryCopy( pSendBuffer+usDataOffset,
11351 &halSwitchChannelReq.switchChannelParams,
11352 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011353
11354 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011356
11357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11361 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011362}/*WDI_ProcessChannelSwitchReq*/
11363
11364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011367
11368 @param pWDICtx: pointer to the WLAN DAL context
11369 pEventData: pointer to the event information structure
11370
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 @see
11372 @return Result of the function call
11373*/
11374WDI_Status
11375WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011376(
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 WDI_ControlBlockType* pWDICtx,
11378 WDI_EventInfoType* pEventData
11379)
11380{
11381 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11382 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011383 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 wpt_uint16 usDataOffset = 0;
11387 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 tConfigStaReqMsg halConfigStaReqMsg;
11391 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11393
11394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 -------------------------------------------------------------------------*/
11397 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11398 ( NULL == pEventData->pCBfnc ))
11399 {
11400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 }
11405
11406 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11407 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11408 /*-------------------------------------------------------------------------
11409 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 -------------------------------------------------------------------------*/
11412 wpalMutexAcquire(&pWDICtx->wptMutex);
11413
11414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011417 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11418 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11419 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011420
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11424 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11425 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011426
11427 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 }
11430
11431 /*------------------------------------------------------------------------
11432 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 ------------------------------------------------------------------------*/
11435 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11436 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11438 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11439 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011440
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 }
11445
11446 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011447
11448 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11449#ifdef WLAN_FEATURE_11AC
11450 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011451 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 else
11453#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011454 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011455
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 /*-----------------------------------------------------------------------
11457 Get message buffer
11458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11460 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 {
11464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011465 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 }
11470
11471 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 &pwdiConfigSTAParams->wdiReqInfo);
11474
11475 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11476 {
11477 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 WDI_STATableFindStaidByAddr(pWDICtx,
11480 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 {
11483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011484 MAC_ADDRESS_STR
11485 ": This station does not exist in the WDI Station Table",
11486 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011487 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011488 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 }
11491 }
11492 else
11493 {
11494 /* Need to fill in the STA Index to invalid, since at this point we have not
11495 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011496 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 }
11498
11499 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011501
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 wpalMemoryCopy( pSendBuffer+usDataOffset,
11503 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011504 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011505
11506 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011508
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11510 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 sizeof(pWDICtx->wdiCachedConfigStaReq));
11512
11513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11517 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011518}/*WDI_ProcessConfigStaReq*/
11519
11520
11521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011524
11525 @param pWDICtx: pointer to the WLAN DAL context
11526 pEventData: pointer to the event information structure
11527
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 @see
11529 @return Result of the function call
11530*/
11531WDI_Status
11532WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011533(
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 WDI_ControlBlockType* pWDICtx,
11535 WDI_EventInfoType* pEventData
11536)
11537{
11538 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11539 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 wpt_uint16 usDataOffset = 0;
11544 wpt_uint16 usSendSize = 0;
11545 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11548
11549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011551 -------------------------------------------------------------------------*/
11552 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11553 ( NULL == pEventData->pCBfnc ))
11554 {
11555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 }
11560
11561 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11562 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11563 /*-------------------------------------------------------------------------
11564 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 -------------------------------------------------------------------------*/
11567 wpalMutexAcquire(&pWDICtx->wptMutex);
11568
11569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11573 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11574 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011575
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11580 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 }
11582 else
11583 {
11584 /*------------------------------------------------------------------------
11585 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 ------------------------------------------------------------------------*/
11588 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11589 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11591 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11592 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11593
11594 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 }
11598 }
11599 /* If the link is set to enter IDLE - the Session allocated for this BSS
11600 will be deleted on the Set Link State response coming from HAL
11601 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11604
11605 wpalMutexRelease(&pWDICtx->wptMutex);
11606 /*-----------------------------------------------------------------------
11607 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011610
11611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 sizeof(halLinkStateReqMsg),
11613 &pSendBuffer, &usDataOffset, &usSendSize))||
11614 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11615 {
11616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011617 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011621 }
11622
11623 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11624 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11625
11626 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11627 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11628
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11631
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 wpalMemoryCopy( pSendBuffer+usDataOffset,
11633 &halLinkStateReqMsg,
11634 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011635
11636 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011638
11639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11643 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011644}/*WDI_ProcessSetLinkStateReq*/
11645
11646
11647/**
11648 @brief Process Get Stats Request function (called when Main FSM
11649 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011650
11651 @param pWDICtx: pointer to the WLAN DAL context
11652 pEventData: pointer to the event information structure
11653
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 @see
11655 @return Result of the function call
11656*/
11657WDI_Status
11658WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011659(
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 WDI_ControlBlockType* pWDICtx,
11661 WDI_EventInfoType* pEventData
11662)
11663{
11664 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11665 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 wpt_uint16 usDataOffset = 0;
11668 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 WDI_BSSSessionType* pBSSSes = NULL;
11671 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 tHalStatsReqMsg halStatsReqMsg;
11674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11675
11676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 -------------------------------------------------------------------------*/
11679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11680 ( NULL == pEventData->pCBfnc ) )
11681 {
11682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011686 }
11687
11688 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11689 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11690
11691 /*-------------------------------------------------------------------------
11692 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011693 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 -------------------------------------------------------------------------*/
11695 wpalMutexAcquire(&pWDICtx->wptMutex);
11696
11697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11701 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 &macBSSID))
11703 {
11704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011705 "This station does not exist in the WDI Station Table %d",
11706 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011709 }
11710
Jeff Johnsone7245742012-09-05 17:12:55 -070011711 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11712 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11715 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11716 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011717
11718 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 }
11721
11722 /*------------------------------------------------------------------------
11723 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011724 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011725 ------------------------------------------------------------------------*/
11726 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11727 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11729 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11730 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011731
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 }
11736
11737
11738 wpalMutexRelease(&pWDICtx->wptMutex);
11739
11740 /*-----------------------------------------------------------------------
11741 Get message buffer
11742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 sizeof(halStatsReqMsg.statsReqParams),
11745 &pSendBuffer, &usDataOffset, &usSendSize))||
11746 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11747 {
11748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011749 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011750 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011753 }
11754
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011757 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 wpalMemoryCopy( pSendBuffer+usDataOffset,
11760 &halStatsReqMsg.statsReqParams,
11761 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011762
11763 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011765
11766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011767 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11770 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011771}/*WDI_ProcessGetStatsReq*/
11772
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011773#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11774/**
11775 @brief Process Get Roam Rssi Request function (called when Main FSM
11776 allows it)
11777
11778 @param pWDICtx: pointer to the WLAN DAL context
11779 pEventData: pointer to the event information structure
11780
11781 @see
11782 @return Result of the function call
11783*/
11784WDI_Status
11785WDI_ProcessGetRoamRssiReq
11786(
11787 WDI_ControlBlockType* pWDICtx,
11788 WDI_EventInfoType* pEventData
11789)
11790{
11791 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11792 WDI_GetStatsRspCb wdiGetStatsRspCb;
11793 wpt_uint8* pSendBuffer = NULL;
11794 wpt_uint16 usDataOffset = 0;
11795 wpt_uint16 usSendSize = 0;
11796 wpt_uint8 ucCurrentBSSSesIdx = 0;
11797 WDI_BSSSessionType* pBSSSes = NULL;
11798 wpt_macAddr macBSSID;
11799 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11800 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11802 /*-------------------------------------------------------------------------
11803 Sanity check
11804 -------------------------------------------------------------------------*/
11805 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11806 ( NULL == pEventData->pCBfnc ) )
11807 {
11808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11809 "%s: Invalid parameters", __func__);
11810 WDI_ASSERT(0);
11811 return WDI_STATUS_E_FAILURE;
11812 }
11813
11814 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11815 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11816
11817 /*-------------------------------------------------------------------------
11818 Check to see if we are in the middle of an association, if so queue, if
11819 not it means it is free to process request
11820 -------------------------------------------------------------------------*/
11821 wpalMutexAcquire(&pWDICtx->wptMutex);
11822
11823 /*------------------------------------------------------------------------
11824 Find the BSS for which the request is made
11825 ------------------------------------------------------------------------*/
11826 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11827 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11828 &macBSSID))
11829 {
11830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011831 "This station does not exist in the WDI Station Table %d",
11832 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011833 wpalMutexRelease(&pWDICtx->wptMutex);
11834 return WDI_STATUS_E_FAILURE;
11835 }
11836
11837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11838 if ( NULL == pBSSSes )
11839 {
11840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11841 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11842 __func__, MAC_ADDR_ARRAY(macBSSID));
11843
11844 wpalMutexRelease(&pWDICtx->wptMutex);
11845 return WDI_STATUS_E_NOT_ALLOWED;
11846 }
11847
11848 /*------------------------------------------------------------------------
11849 Check if this BSS is being currently processed or queued,
11850 if queued - queue the new request as well
11851 ------------------------------------------------------------------------*/
11852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11853 {
11854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11855 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11856 __func__, MAC_ADDR_ARRAY(macBSSID));
11857
11858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11859 wpalMutexRelease(&pWDICtx->wptMutex);
11860 return wdiStatus;
11861 }
11862
11863 wpalMutexRelease(&pWDICtx->wptMutex);
11864
11865 /*-----------------------------------------------------------------------
11866 Get message buffer
11867 -----------------------------------------------------------------------*/
11868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11869 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11870 &pSendBuffer, &usDataOffset, &usSendSize))||
11871 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11872 {
11873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011874 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011875 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11876 WDI_ASSERT(0);
11877 return WDI_STATUS_E_FAILURE;
11878 }
11879
11880 halRssiRoamReqMsg.roamRssiReqParams.staId =
11881 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11882 wpalMemoryCopy( pSendBuffer+usDataOffset,
11883 &halRssiRoamReqMsg.roamRssiReqParams,
11884 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11885
11886 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11887 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11888
11889 /*-------------------------------------------------------------------------
11890 Send Get STA Request to HAL
11891 -------------------------------------------------------------------------*/
11892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11893 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11894}/*WDI_ProcessGetRoamRssiReq*/
11895#endif
11896
Jeff Johnson295189b2012-06-20 16:38:30 -070011897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011899 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011900
11901 @param pWDICtx: pointer to the WLAN DAL context
11902 pEventData: pointer to the event information structure
11903
Jeff Johnson295189b2012-06-20 16:38:30 -070011904 @see
11905 @return Result of the function call
11906*/
11907WDI_Status
11908WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011909(
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 WDI_ControlBlockType* pWDICtx,
11911 WDI_EventInfoType* pEventData
11912)
11913{
11914 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11915 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11916
Jeff Johnsone7245742012-09-05 17:12:55 -070011917 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011918 wpt_uint16 usDataOffset = 0;
11919 wpt_uint16 usSendSize = 0;
11920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11921
11922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 -------------------------------------------------------------------------*/
11925 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11926 ( NULL == pEventData->pCBfnc))
11927 {
11928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 }
11933
11934 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11935 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11936
11937 /*-----------------------------------------------------------------------
11938 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 -----------------------------------------------------------------------*/
11941
Jeff Johnsone7245742012-09-05 17:12:55 -070011942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11944 &pSendBuffer, &usDataOffset, &usSendSize))||
11945 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11946 {
11947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011948 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 }
11953
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 wpalMemoryCopy( pSendBuffer+usDataOffset,
11955 &pwdiUpdateCfgParams->uConfigBufferLen,
11956 sizeof(wpt_uint32));
11957 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11958 pwdiUpdateCfgParams->pConfigBuffer,
11959 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011960
11961 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011963
11964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 -------------------------------------------------------------------------*/
11967
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11969 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011970
11971}/*WDI_ProcessUpdateCfgReq*/
11972
11973
11974/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011977
11978 @param pWDICtx: pointer to the WLAN DAL context
11979 pEventData: pointer to the event information structure
11980
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 @see
11982 @return Result of the function call
11983*/
11984WDI_Status
11985WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011986(
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 WDI_ControlBlockType* pWDICtx,
11988 WDI_EventInfoType* pEventData
11989)
11990{
11991 WDI_AddBAReqParamsType* pwdiAddBAParams;
11992 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 wpt_uint16 usDataOffset = 0;
11997 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 wpt_macAddr macBSSID;
12000
12001 tAddBAReqMsg halAddBAReq;
12002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12003
12004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012006 -------------------------------------------------------------------------*/
12007 if (( NULL == pEventData ) ||
12008 ( NULL == pEventData->pEventData) ||
12009 ( NULL == pEventData->pCBfnc ))
12010 {
12011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 }
12016
12017 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12018 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12019
12020 /*-------------------------------------------------------------------------
12021 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 -------------------------------------------------------------------------*/
12024 wpalMutexAcquire(&pWDICtx->wptMutex);
12025
12026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12030 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 &macBSSID))
12032 {
12033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012034 "This station does not exist in the WDI Station Table %d",
12035 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 }
12039
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12041 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12044 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12045 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012046
12047 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 }
12050
12051 /*------------------------------------------------------------------------
12052 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 ------------------------------------------------------------------------*/
12055 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12056 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12058 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12059 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012060
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 }
12065
12066
12067 wpalMutexRelease(&pWDICtx->wptMutex);
12068 /*-----------------------------------------------------------------------
12069 Get message buffer
12070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 sizeof(halAddBAReq.addBAParams),
12073 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012075 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12076 {
12077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012078 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 }
12083
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12086 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12087#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012088 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012089 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12090#endif
12091
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 wpalMemoryCopy( pSendBuffer+usDataOffset,
12093 &halAddBAReq.addBAParams,
12094 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012095
12096 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012097 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012098
12099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12103 wdiAddBARspCb, pEventData->pUserData,
12104 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012105}/*WDI_ProcessAddBAReq*/
12106
12107
12108
12109/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012112
12113 @param pWDICtx: pointer to the WLAN DAL context
12114 pEventData: pointer to the event information structure
12115
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 @see
12117 @return Result of the function call
12118*/
12119WDI_Status
12120WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012121(
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 WDI_ControlBlockType* pWDICtx,
12123 WDI_EventInfoType* pEventData
12124)
12125{
12126 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12127 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 wpt_uint16 usDataOffset = 0;
12132 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 wpt_uint16 index;
12135 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012136
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 tTriggerBAReqMsg halTriggerBAReq;
12138 tTriggerBaReqCandidate* halTriggerBACandidate;
12139 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12141
12142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 -------------------------------------------------------------------------*/
12145 if (( NULL == pEventData ) ||
12146 ( NULL == pEventData->pEventData ) ||
12147 ( NULL == pEventData->pCBfnc ))
12148 {
12149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012153 }
12154
12155 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12156 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12157 /*-------------------------------------------------------------------------
12158 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 -------------------------------------------------------------------------*/
12161 wpalMutexAcquire(&pWDICtx->wptMutex);
12162
12163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012164 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012165 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12167 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 &macBSSID))
12169 {
12170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012171 "This station does not exist in the WDI Station Table %d",
12172 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 }
12176
Jeff Johnsone7245742012-09-05 17:12:55 -070012177 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12178 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12181 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12182 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012183
12184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 }
12187
12188 /*------------------------------------------------------------------------
12189 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 ------------------------------------------------------------------------*/
12192 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12193 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12195 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12196 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012197
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 }
12202
12203
12204 wpalMutexRelease(&pWDICtx->wptMutex);
12205 /*-----------------------------------------------------------------------
12206 Get message buffer
12207 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12209 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012211 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012212 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12213 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012217 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12218 {
12219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012220 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 }
12225
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12230
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 wpalMemoryCopy( pSendBuffer+usDataOffset,
12232 &halTriggerBAReq.triggerBAParams,
12233 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012234
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012236 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12237 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12238 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012239
12240 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241 index++)
12242 {
12243 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12244 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12245 halTriggerBACandidate++;
12246 wdiTriggerBACandidate++;
12247 }
12248
12249 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012250 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012251
12252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12256 wdiTriggerBARspCb, pEventData->pUserData,
12257 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012258}/*WDI_ProcessTriggerBAReq*/
12259
12260
12261
12262/**
12263 @brief Process Update Beacon Params Request function (called when Main FSM
12264 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012265
12266 @param pWDICtx: pointer to the WLAN DAL context
12267 pEventData: pointer to the event information structure
12268
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 @see
12270 @return Result of the function call
12271*/
12272WDI_Status
12273WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012274(
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 WDI_ControlBlockType* pWDICtx,
12276 WDI_EventInfoType* pEventData
12277)
12278{
12279 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12280 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 wpt_uint16 usDataOffset = 0;
12283 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12286
12287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 -------------------------------------------------------------------------*/
12290 if (( NULL == pEventData ) ||
12291 ( NULL == pEventData->pEventData) ||
12292 ( NULL == pEventData->pCBfnc))
12293 {
12294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 }
12299
12300 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12301 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12302 /*-----------------------------------------------------------------------
12303 Get message buffer
12304 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 sizeof(halUpdateBeaconParams),
12307 &pSendBuffer, &usDataOffset, &usSendSize))||
12308 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12309 {
12310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012311 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 }
12316
12317 /*BSS Index of the BSS*/
12318 halUpdateBeaconParams.bssIdx =
12319 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12320 /*shortPreamble mode. HAL should update all the STA rates when it
12321 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12324 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12327 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12330
12331 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12344 halUpdateBeaconParams.fRIFSMode =
12345 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12348
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12350 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012351
12352 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012354
12355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12359 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012360}/*WDI_ProcessUpdateBeaconParamsReq*/
12361
12362
12363
12364/**
12365 @brief Process Send Beacon template Request function (called when Main FSM
12366 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012367
12368 @param pWDICtx: pointer to the WLAN DAL context
12369 pEventData: pointer to the event information structure
12370
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 @see
12372 @return Result of the function call
12373*/
12374WDI_Status
12375WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012376(
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 WDI_ControlBlockType* pWDICtx,
12378 WDI_EventInfoType* pEventData
12379)
12380{
12381 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12382 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 wpt_uint16 usDataOffset = 0;
12385 wpt_uint16 usSendSize = 0;
12386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12387
12388 tSendBeaconReqMsg halSendBeaconReq;
12389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 -------------------------------------------------------------------------*/
12392 if (( NULL == pEventData ) ||
12393 ( NULL == pEventData->pEventData ) ||
12394 ( NULL == pEventData->pCBfnc ))
12395 {
12396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 }
12401
12402 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12403 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12404 /*-----------------------------------------------------------------------
12405 Get message buffer
12406 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 sizeof(halSendBeaconReq.sendBeaconParam),
12409 &pSendBuffer, &usDataOffset, &usSendSize))||
12410 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12411 {
12412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012413 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 }
12418
12419 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12420 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12421 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12424 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12425 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12426 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012429 /* usP2PIeOffset should be atleast greater than timIeOffset */
12430 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12431 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12432 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12433 {
12434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12435 "Invalid usP2PIeOffset %hu",
12436 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12437 WDI_ASSERT(0);
12438 return WDI_STATUS_E_FAILURE;
12439 }
12440
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012443
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 wpalMemoryCopy( pSendBuffer+usDataOffset,
12445 &halSendBeaconReq.sendBeaconParam,
12446 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012447
12448 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012450
12451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12455 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012456}/*WDI_ProcessSendBeaconParamsReq*/
12457
12458/**
12459 @brief Process Update Beacon Params Request function (called when Main FSM
12460 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012461
12462 @param pWDICtx: pointer to the WLAN DAL context
12463 pEventData: pointer to the event information structure
12464
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 @see
12466 @return Result of the function call
12467*/
12468WDI_Status
12469WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012470(
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 WDI_ControlBlockType* pWDICtx,
12472 WDI_EventInfoType* pEventData
12473)
12474{
12475 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12476 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 wpt_uint16 usDataOffset = 0;
12479 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12482
12483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 -------------------------------------------------------------------------*/
12486 if (( NULL == pEventData ) ||
12487 ( NULL == pEventData->pEventData) ||
12488 ( NULL == 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
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12500 /*-----------------------------------------------------------------------
12501 Get message buffer
12502 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 sizeof(halUpdateProbeRspTmplParams),
12505 &pSendBuffer, &usDataOffset, &usSendSize))||
12506 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12507 {
12508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012509 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 }
12514
12515 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 WDI_MAC_ADDR_LEN);
12518
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12521
12522 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12523 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012525
12526
12527 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12528 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12529 WDI_PROBE_REQ_BITMAP_IE_LEN);
12530
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 wpalMemoryCopy( pSendBuffer+usDataOffset,
12532 &halUpdateProbeRspTmplParams,
12533 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012534
12535 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012537
12538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12542 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12543 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012544}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12545
12546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012549
12550 @param pWDICtx: pointer to the WLAN DAL context
12551 pEventData: pointer to the event information structure
12552
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 @see
12554 @return Result of the function call
12555*/
12556WDI_Status
12557WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012558(
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 WDI_ControlBlockType* pWDICtx,
12560 WDI_EventInfoType* pEventData
12561)
12562{
12563
12564 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12565 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12566
12567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 -------------------------------------------------------------------------*/
12570 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12575 {
12576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 }
12581
12582 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12585
12586 /*cache the wdi nv request message here if the the first fragment
12587 * To issue the request to HAL for the next fragment */
12588 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12589 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12591 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12593
12594 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12595 pWDICtx->pRspCBUserData = pEventData->pUserData;
12596 }
12597
12598 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12599}
12600
12601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012604
12605 @param pWDICtx: pointer to the WLAN DAL context
12606 pEventData: pointer to the event information structure
12607
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 @see
12609 @return Result of the function call
12610*/
12611WDI_Status WDI_ProcessSetMaxTxPowerReq
12612(
12613 WDI_ControlBlockType* pWDICtx,
12614 WDI_EventInfoType* pEventData
12615)
12616{
12617 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12618 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 wpt_uint16 usDataOffset = 0;
12621 wpt_uint16 usSendSize = 0;
12622 tSetMaxTxPwrReq halSetMaxTxPower;
12623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12624
12625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 -------------------------------------------------------------------------*/
12628 if (( NULL == pEventData ) ||
12629 ( NULL == pEventData->pEventData ) ||
12630 ( NULL == pEventData->pCBfnc ))
12631 {
12632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12641
12642 /*-----------------------------------------------------------------------
12643 Get message buffer
12644 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012645if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12647 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012649)))
12650 {
12651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012652 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012653 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 }
12657
12658 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12659 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12660 WDI_MAC_ADDR_LEN);
12661
12662 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12663 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12664 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012667
12668 wpalMemoryCopy( pSendBuffer+usDataOffset,
12669 &halSetMaxTxPower.setMaxTxPwrParams,
12670 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012671
12672 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012674
12675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12679 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12680 WDI_SET_MAX_TX_POWER_RESP);
12681
Jeff Johnson295189b2012-06-20 16:38:30 -070012682}
12683
Arif Hussainfc753992013-08-09 15:09:58 -070012684/*
12685 @brief Process Set Max Tx Power Per Band Request function (called when Main
12686 FSM allows it)
12687
12688 @param pWDICtx: pointer to the WLAN DAL context
12689 pEventData: pointer to the event information structure
12690
12691 @see
12692 @return Result of the function call
12693*/
12694WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12695(
12696 WDI_ControlBlockType* pWDICtx,
12697 WDI_EventInfoType* pEventData
12698)
12699{
12700 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12701 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12702 wpt_uint8* pSendBuffer = NULL;
12703 wpt_uint16 usDataOffset = 0;
12704 wpt_uint16 usSendSize = 0;
12705 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12706 WDI_Status rValue = WDI_STATUS_SUCCESS;
12707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12708
12709 /*-------------------------------------------------------------------------
12710 Sanity check
12711 -------------------------------------------------------------------------*/
12712 if (( NULL == pEventData ) ||
12713 ( NULL == pEventData->pEventData ) ||
12714 ( NULL == pEventData->pCBfnc ))
12715 {
12716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12717 "%s: Invalid parameters", __func__);
12718 WDI_ASSERT(0);
12719 return WDI_STATUS_E_FAILURE;
12720 }
12721 pwdiSetMaxTxPowerPerBandParams = \
12722 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12723
12724 wdiSetMaxTxPowerPerBandRspCb = \
12725 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12726
12727 /*-----------------------------------------------------------------------
12728 Get message buffer
12729 -----------------------------------------------------------------------*/
12730
12731 rValue = WDI_GetMessageBuffer(pWDICtx,
12732 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12733 sizeof(tSetMaxTxPwrPerBandParams),
12734 &pSendBuffer, &usDataOffset, &usSendSize);
12735
12736 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12737 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12738 {
12739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12740 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12741 pEventData, pwdiSetMaxTxPowerPerBandParams,
12742 wdiSetMaxTxPowerPerBandRspCb);
12743 WDI_ASSERT(0);
12744 return WDI_STATUS_E_FAILURE;
12745 }
12746
12747
12748 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12749 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12750 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12751
12752 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12753 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12754
12755 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12756 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12757
12758 /*-------------------------------------------------------------------------
12759 Send Set Max Tx Power Per Band Request to HAL
12760 -------------------------------------------------------------------------*/
12761 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12762 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12763 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12764}
12765
schangd82195a2013-03-13 18:41:24 -070012766/**
12767 @brief Process Set Tx Power Request function (called when Main
12768 FSM allows it)
12769
12770 @param pWDICtx: pointer to the WLAN DAL context
12771 pEventData: pointer to the event information structure
12772
12773 @see
12774 @return Result of the function call
12775*/
12776WDI_Status WDI_ProcessSetTxPowerReq
12777(
12778 WDI_ControlBlockType* pWDICtx,
12779 WDI_EventInfoType* pEventData
12780)
12781{
12782 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12783 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12784 wpt_uint8* pSendBuffer = NULL;
12785 wpt_uint16 usDataOffset = 0;
12786 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012787 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12789
12790 /*-------------------------------------------------------------------------
12791 Sanity check
12792 -------------------------------------------------------------------------*/
12793 if (( NULL == pEventData ) ||
12794 ( NULL == pEventData->pEventData ) ||
12795 ( NULL == pEventData->pCBfnc ))
12796 {
12797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12798 "%s: Invalid parameters", __func__);
12799 WDI_ASSERT(0);
12800 return WDI_STATUS_E_FAILURE;
12801 }
12802
12803 pwdiSetTxPowerParams =
12804 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12805 wdiSetTxPowerRspCb =
12806 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12807
12808 /*-----------------------------------------------------------------------
12809 Get message buffer
12810 -----------------------------------------------------------------------*/
12811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12812 sizeof(tSetTxPwrReqParams),
12813 &pSendBuffer, &usDataOffset, &usSendSize))||
12814 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12815 )))
12816 {
12817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012818 "Unable to get Set Max Tx Power req %p %p %p",
schangd82195a2013-03-13 18:41:24 -070012819 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12820 WDI_ASSERT(0);
12821 return WDI_STATUS_E_FAILURE;
12822 }
12823
Leo Changa37e2a92013-03-25 17:39:58 -070012824 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12825 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12826 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012827
12828 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12829 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12830
12831 /*-------------------------------------------------------------------------
12832 Send Set Tx Power Request to HAL
12833 -------------------------------------------------------------------------*/
12834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12835 wdiSetTxPowerRspCb, pEventData->pUserData,
12836 WDI_SET_TX_POWER_RESP);
12837}
Jeff Johnson295189b2012-06-20 16:38:30 -070012838
12839/**
12840 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012842
12843 @param pWDICtx: pointer to the WLAN DAL context
12844 pEventData: pointer to the event information structure
12845
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 @see
12847 @return Result of the function call
12848*/
12849WDI_Status
12850WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012851(
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 WDI_ControlBlockType* pWDICtx,
12853 WDI_EventInfoType* pEventData
12854)
12855{
12856 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12857 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpt_uint16 usDataOffset = 0;
12860 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12863
12864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 -------------------------------------------------------------------------*/
12867 if (( NULL == pEventData ) ||
12868 ( NULL == pEventData->pEventData) ||
12869 ( NULL == pEventData->pCBfnc))
12870 {
12871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 }
12876
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12881 /*-----------------------------------------------------------------------
12882 Get message buffer
12883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12885 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 sizeof(halSetP2PGONOAParams),
12887 &pSendBuffer, &usDataOffset, &usSendSize))||
12888 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12889 {
12890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012891 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 }
12896
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12901 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12910
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 wpalMemoryCopy( pSendBuffer+usDataOffset,
12912 &halSetP2PGONOAParams,
12913 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012914
12915 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012917
12918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12922 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12923 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012924}/*WDI_ProcessP2PGONOAReq*/
12925
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012926#ifdef FEATURE_WLAN_TDLS
12927
12928/**
12929 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12930 allows it)
12931
12932 @param pWDICtx: pointer to the WLAN DAL context
12933 pEventData: pointer to the event information structure
12934
12935 @see
12936 @return Result of the function call
12937*/
12938WDI_Status
12939WDI_ProcessTdlsLinkEstablishReq
12940(
12941 WDI_ControlBlockType* pWDICtx,
12942 WDI_EventInfoType* pEventData
12943)
12944{
12945 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12946 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12947 wpt_uint8* pSendBuffer = NULL;
12948 wpt_uint16 usDataOffset = 0;
12949 wpt_uint16 usSendSize = 0;
12950
12951 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12953
12954 /*-------------------------------------------------------------------------
12955 Sanity check
12956 -------------------------------------------------------------------------*/
12957 if (( NULL == pEventData ) ||
12958 ( NULL == pEventData->pEventData) ||
12959 ( NULL == pEventData->pCBfnc))
12960 {
12961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12962 "%s: Invalid parameters", __func__);
12963 WDI_ASSERT(0);
12964 return WDI_STATUS_E_FAILURE;
12965 }
12966 pwdiTDLSLinkEstablishReqParams =
12967 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12968 wdiTDLSLinkEstablishReqRspCb =
12969 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12970
12971
12972 /*-----------------------------------------------------------------------
12973 Get message buffer
12974 -----------------------------------------------------------------------*/
12975 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12976 WDI_TDLS_LINK_ESTABLISH_REQ,
12977 sizeof(halSetTDLSLinkEstablishParams),
12978 &pSendBuffer, &usDataOffset, &usSendSize))||
12979 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12980 {
12981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012982 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012983 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12984 WDI_ASSERT(0);
12985 return WDI_STATUS_E_FAILURE;
12986 }
12987
12988 halSetTDLSLinkEstablishParams.staIdx =
12989 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12990 halSetTDLSLinkEstablishParams.bIsResponder =
12991 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12992 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12993 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12994 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12995 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12996 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12997 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12998 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12999 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13000 halSetTDLSLinkEstablishParams.aAck = 0;
13001 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13002 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13003 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
13004
13005 wpalMemoryCopy( pSendBuffer+usDataOffset,
13006 &halSetTDLSLinkEstablishParams,
13007 sizeof(halSetTDLSLinkEstablishParams));
13008
13009 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13010 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13011
13012 /*-------------------------------------------------------------------------
13013 Send Update Probe Resp Template Request to HAL
13014 -------------------------------------------------------------------------*/
13015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13016 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13017 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13018 return 0;
13019}/*WDI_ProcessTdlsLinkEstablishReq*/
13020
13021
13022#endif
13023
Jeff Johnson295189b2012-06-20 16:38:30 -070013024
13025
13026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 @param None
13030
13031 @see
13032 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013033*/
13034void
13035WDI_SetPowerStateCb
13036(
13037 wpt_status status,
13038 unsigned int dxePhyAddr,
13039 void *pContext
13040)
13041{
13042 wpt_status wptStatus;
13043 WDI_ControlBlockType *pCB = NULL;
13044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13045 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13046 {
13047 //it shouldn't happen, put an error msg
13048 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 /*
13050 * Trigger the event to bring the Enter BMPS req function to come
13051 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013052*/
13053 if( NULL != pContext )
13054 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 }
13057 else
13058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 pCB = &gWDICb;
13061 }
13062 pCB->dxePhyAddr = dxePhyAddr;
13063 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13064 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13065 {
13066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13067 "Failed to set an event");
13068
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 }
13071 return;
13072}
13073
13074
13075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013078
13079 @param pWDICtx: pointer to the WLAN DAL context
13080 pEventData: pointer to the event information structure
13081
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 @see
13083 @return Result of the function call
13084*/
13085WDI_Status
13086WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013087(
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 WDI_ControlBlockType* pWDICtx,
13089 WDI_EventInfoType* pEventData
13090)
13091{
Jeff Johnson43971f52012-07-17 12:26:56 -070013092 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 wpt_uint16 usDataOffset = 0;
13096 wpt_uint16 usSendSize = 0;
13097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13098
13099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 -------------------------------------------------------------------------*/
13102 if (( NULL == pEventData ) ||
13103 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13104 {
13105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013108 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 }
13110
13111 /*-----------------------------------------------------------------------
13112 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013113 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013114 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 0,
13117 &pSendBuffer, &usDataOffset, &usSendSize))||
13118 ( usSendSize < (usDataOffset )))
13119 {
13120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013121 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 pEventData, wdiEnterImpsRspCb);
13123 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013124 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 }
13126
13127 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013128 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13129 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 {
13131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13132 "WDI Init failed to reset an event");
13133
Jeff Johnsone7245742012-09-05 17:12:55 -070013134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013135 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 }
13137
13138 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013139 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13140 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013142 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013143 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013144 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013145 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013146
13147 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013150 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13151 WDI_SET_POWER_STATE_TIMEOUT);
13152 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 {
13154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13155 "WDI Init failed to wait on an event");
13156
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013158 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 }
13160
13161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13165 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013166
13167fail:
13168 // Release the message buffer so we don't leak
13169 wpalMemoryFree(pSendBuffer);
13170
13171failRequest:
13172 //WDA should have failure check to avoid the memory leak
13173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013174}/*WDI_ProcessEnterImpsReq*/
13175
13176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013179
13180 @param pWDICtx: pointer to the WLAN DAL context
13181 pEventData: pointer to the event information structure
13182
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 @see
13184 @return Result of the function call
13185*/
13186WDI_Status
13187WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013188(
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 WDI_ControlBlockType* pWDICtx,
13190 WDI_EventInfoType* pEventData
13191)
13192{
13193 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 wpt_uint16 usDataOffset = 0;
13196 wpt_uint16 usSendSize = 0;
13197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13198
13199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 -------------------------------------------------------------------------*/
13202 if (( NULL == pEventData ) ||
13203 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13204 {
13205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 }
13210
13211 /*-----------------------------------------------------------------------
13212 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013213 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 0,
13217 &pSendBuffer, &usDataOffset, &usSendSize))||
13218 ( usSendSize < (usDataOffset )))
13219 {
13220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013221 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 pEventData, wdiExitImpsRspCb);
13223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 }
13226
13227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13231 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013232}/*WDI_ProcessExitImpsReq*/
13233
13234/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013237
13238 @param pWDICtx: pointer to the WLAN DAL context
13239 pEventData: pointer to the event information structure
13240
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 @see
13242 @return Result of the function call
13243*/
13244WDI_Status
13245WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013246(
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 WDI_ControlBlockType* pWDICtx,
13248 WDI_EventInfoType* pEventData
13249)
13250{
13251 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13252 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 wpt_uint16 usDataOffset = 0;
13255 wpt_uint16 usSendSize = 0;
13256 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013257 wpt_status wptStatus;
13258
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13260
13261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 -------------------------------------------------------------------------*/
13264 if (( NULL == pEventData ) ||
13265 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13266 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13267 {
13268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013271 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 }
13273
13274 /*-----------------------------------------------------------------------
13275 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 sizeof(enterBmpsReq),
13280 &pSendBuffer, &usDataOffset, &usSendSize))||
13281 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13282 {
13283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013284 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13286 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013287 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 }
13289
13290 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013291 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13292 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 {
13294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13295 "WDI Init failed to reset an event");
13296
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013298 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 }
13300
13301 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013302 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13303 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13304 {
13305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080013306 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013307 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013308 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013309 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013310
13311/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013314 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13315 WDI_SET_POWER_STATE_TIMEOUT);
13316 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 {
13318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13319 "WDI Init failed to wait on an event");
13320
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013322 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 }
13324
13325 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13326
13327 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13328 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13329 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13330 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13331
13332 // For CCX and 11R Roaming
13333 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13334 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13335 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13336
13337 wpalMemoryCopy( pSendBuffer+usDataOffset,
13338 &enterBmpsReq,
13339 sizeof(enterBmpsReq));
13340
13341 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013343
13344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13348 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013349
13350fail:
13351 // Release the message buffer so we don't leak
13352 wpalMemoryFree(pSendBuffer);
13353
13354failRequest:
13355 //WDA should have failure check to avoid the memory leak
13356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013357}/*WDI_ProcessEnterBmpsReq*/
13358
13359/**
13360 @brief Process Exit BMPS Request function (called when Main FSM
13361 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013362
13363 @param pWDICtx: pointer to the WLAN DAL context
13364 pEventData: pointer to the event information structure
13365
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 @see
13367 @return Result of the function call
13368*/
13369WDI_Status
13370WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013371(
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 WDI_ControlBlockType* pWDICtx,
13373 WDI_EventInfoType* pEventData
13374)
13375{
13376 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13377 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 wpt_uint16 usDataOffset = 0;
13380 wpt_uint16 usSendSize = 0;
13381 tHalExitBmpsReqParams exitBmpsReq;
13382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13383
13384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 -------------------------------------------------------------------------*/
13387 if (( NULL == pEventData ) ||
13388 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13389 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13390 {
13391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 }
13396
13397 /*-----------------------------------------------------------------------
13398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 sizeof(exitBmpsReq),
13403 &pSendBuffer, &usDataOffset, &usSendSize))||
13404 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13405 {
13406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013407 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 }
13412 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13413
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13415
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 wpalMemoryCopy( pSendBuffer+usDataOffset,
13417 &exitBmpsReq,
13418 sizeof(exitBmpsReq));
13419
13420 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013422
13423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13427 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013428}/*WDI_ProcessExitBmpsReq*/
13429
13430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013433
13434 @param pWDICtx: pointer to the WLAN DAL context
13435 pEventData: pointer to the event information structure
13436
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 @see
13438 @return Result of the function call
13439*/
13440WDI_Status
13441WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013442(
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 WDI_ControlBlockType* pWDICtx,
13444 WDI_EventInfoType* pEventData
13445)
13446{
13447 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13448 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013449 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 wpt_uint16 usDataOffset = 0;
13451 wpt_uint16 usSendSize = 0;
13452 tUapsdReqParams enterUapsdReq;
13453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13454
13455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 -------------------------------------------------------------------------*/
13458 if (( NULL == pEventData ) ||
13459 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13460 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13461 {
13462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 }
13467
13468 /*-----------------------------------------------------------------------
13469 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 sizeof(enterUapsdReq),
13474 &pSendBuffer, &usDataOffset, &usSendSize))||
13475 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13476 {
13477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013478 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 }
13483
13484 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13485 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13486 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13487 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13488 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13489 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13490 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13491 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013493
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 wpalMemoryCopy( pSendBuffer+usDataOffset,
13495 &enterUapsdReq,
13496 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013500
13501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13505 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013506}/*WDI_ProcessEnterUapsdReq*/
13507
13508/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013511
13512 @param pWDICtx: pointer to the WLAN DAL context
13513 pEventData: pointer to the event information structure
13514
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 @see
13516 @return Result of the function call
13517*/
13518WDI_Status
13519WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013520(
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 WDI_ControlBlockType* pWDICtx,
13522 WDI_EventInfoType* pEventData
13523)
13524{
13525 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 wpt_uint16 usDataOffset = 0;
13528 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013529 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13530 wpt_uint8 bssIdx = 0;
13531
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13533
13534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 -------------------------------------------------------------------------*/
13537 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013538 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13540 {
13541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 }
13546
13547 /*-----------------------------------------------------------------------
13548 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013552 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013554 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013555 {
13556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013557 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 pEventData, wdiExitUapsdRspCb);
13559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 }
13562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013563 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13564
13565 wpalMemoryCopy( pSendBuffer+usDataOffset,
13566 &bssIdx,
13567 sizeof(wpt_uint8));
13568
13569 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13570 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13571
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13576 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013577}/*WDI_ProcessExitUapsdReq*/
13578
13579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013582
13583 @param pWDICtx: pointer to the WLAN DAL context
13584 pEventData: pointer to the event information structure
13585
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 @see
13587 @return Result of the function call
13588*/
13589WDI_Status
13590WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013591(
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 WDI_ControlBlockType* pWDICtx,
13593 WDI_EventInfoType* pEventData
13594)
13595{
13596 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13597 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 wpt_uint16 usDataOffset = 0;
13600 wpt_uint16 usSendSize = 0;
13601 tUapsdInfo uapsdAcParamsReq;
13602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13603
13604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 -------------------------------------------------------------------------*/
13607 if (( NULL == pEventData ) ||
13608 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13609 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13610 {
13611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 }
13616
13617 /*-----------------------------------------------------------------------
13618 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 sizeof(uapsdAcParamsReq),
13623 &pSendBuffer, &usDataOffset, &usSendSize))||
13624 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13625 {
13626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013627 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 }
13632
13633 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13634 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13635 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13636 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13637 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13638 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13639
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 wpalMemoryCopy( pSendBuffer+usDataOffset,
13641 &uapsdAcParamsReq,
13642 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013643
13644 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013646
13647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13651 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013652}/*WDI_ProcessSetUapsdAcParamsReq*/
13653
13654/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013657
13658 @param pWDICtx: pointer to the WLAN DAL context
13659 pEventData: pointer to the event information structure
13660
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 @see
13662 @return Result of the function call
13663*/
13664WDI_Status
13665WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013666(
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 WDI_ControlBlockType* pWDICtx,
13668 WDI_EventInfoType* pEventData
13669)
13670{
13671 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13672 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 wpt_uint16 usDataOffset = 0;
13675 wpt_uint16 usSendSize = 0;
13676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13677
13678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 -------------------------------------------------------------------------*/
13681 if (( NULL == pEventData ) ||
13682 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13683 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13684 {
13685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013689 }
13690
13691 /*-----------------------------------------------------------------------
13692 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13697 &pSendBuffer, &usDataOffset, &usSendSize))||
13698 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13699 {
13700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013701 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 }
13706
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 wpalMemoryCopy( pSendBuffer+usDataOffset,
13708 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13709 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013710
13711 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013713
13714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13718 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013719}/*WDI_ProcessUpdateUapsdParamsReq*/
13720
13721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013724
13725 @param pWDICtx: pointer to the WLAN DAL context
13726 pEventData: pointer to the event information structure
13727
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 @see
13729 @return Result of the function call
13730*/
13731WDI_Status
13732WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013733(
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 WDI_ControlBlockType* pWDICtx,
13735 WDI_EventInfoType* pEventData
13736)
13737{
13738 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13739 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 wpt_uint16 usDataOffset = 0;
13742 wpt_uint16 usSendSize = 0;
13743 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13744
13745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13746
13747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 -------------------------------------------------------------------------*/
13750 if (( NULL == pEventData ) ||
13751 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13752 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13753 {
13754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 }
13759
13760 /*-----------------------------------------------------------------------
13761 Get message buffer
13762 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 sizeof(halRxpFilterParams),
13765 &pSendBuffer, &usDataOffset, &usSendSize))||
13766 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13767 {
13768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013769 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 }
13774
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013778 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13779
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 wpalMemoryCopy( pSendBuffer+usDataOffset,
13781 &halRxpFilterParams,
13782 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013783
13784 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013786
13787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13791 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013792}/*WDI_ProcessConfigureRxpFilterReq*/
13793
13794/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013797
13798 @param pWDICtx: pointer to the WLAN DAL context
13799 pEventData: pointer to the event information structure
13800
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 @see
13802 @return Result of the function call
13803*/
13804WDI_Status
13805WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013806(
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 WDI_ControlBlockType* pWDICtx,
13808 WDI_EventInfoType* pEventData
13809)
13810{
13811 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13812 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 wpt_uint16 usDataOffset = 0;
13815 wpt_uint16 usSendSize = 0;
13816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13817
13818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 -------------------------------------------------------------------------*/
13821 if (( NULL == pEventData ) ||
13822 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13823 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13824 {
13825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 }
13830
13831 /*-----------------------------------------------------------------------
13832 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13837 &pSendBuffer, &usDataOffset, &usSendSize))||
13838 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13839 {
13840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013841 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 }
13846
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 wpalMemoryCopy( pSendBuffer+usDataOffset,
13848 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13849 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13850 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13851 &pwdiBeaconFilterParams->aFilters[0],
13852 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013853
13854 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013856
13857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13861 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013862}/*WDI_ProcessSetBeaconFilterReq*/
13863
13864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 @brief Process remove beacon filter 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_ProcessRemBeaconFilterReq
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_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13882 WDI_RemBeaconFilterCb wdiBeaconFilterCb = 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 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13887
13888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 -------------------------------------------------------------------------*/
13891 if (( NULL == pEventData ) ||
13892 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13893 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13894 {
13895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 }
13900
13901 /*-----------------------------------------------------------------------
13902 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013903 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13907 &pSendBuffer, &usDataOffset, &usSendSize))||
13908 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13909 {
13910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013911 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013915 }
13916
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 wpalMemoryCopy( pSendBuffer+usDataOffset,
13918 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13919 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013920
13921 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013923
13924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013925 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13928 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013929}
13930
13931/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013934
13935 @param pWDICtx: pointer to the WLAN DAL context
13936 pEventData: pointer to the event information structure
13937
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 @see
13939 @return Result of the function call
13940*/
13941WDI_Status
13942WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013943(
Jeff Johnson295189b2012-06-20 16:38:30 -070013944 WDI_ControlBlockType* pWDICtx,
13945 WDI_EventInfoType* pEventData
13946)
13947{
13948 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13949 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 wpt_uint16 usDataOffset = 0;
13952 wpt_uint16 usSendSize = 0;
13953 tHalRSSIThresholds rssiThresholdsReq;
13954 WDI_Status ret_status = 0;
13955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13956
13957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 -------------------------------------------------------------------------*/
13960 if (( NULL == pEventData ) ||
13961 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13962 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13963 {
13964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 }
13969
13970 /*-----------------------------------------------------------------------
13971 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 sizeof(rssiThresholdsReq),
13976 &pSendBuffer, &usDataOffset, &usSendSize))||
13977 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13978 {
13979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013980 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 }
13985
Jeff Johnsone7245742012-09-05 17:12:55 -070013986 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013999 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014000 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014001 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014002 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14006
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 wpalMemoryCopy( pSendBuffer+usDataOffset,
14008 &rssiThresholdsReq,
14009 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014010
14011 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014013
14014 /*-------------------------------------------------------------------------
14015 Send Set threshold req to HAL
14016 -------------------------------------------------------------------------*/
14017 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14018 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14019 {
14020 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14021 // req. Then as a result of processing the threshold cross ind, we trigger
14022 // a Set threshold req, then we need to indicate to WDI that it needs to
14023 // go to busy state as a result of the indication as we sent a req in the
14024 // same WDI context.
14025 // Hence expected state transition is to busy.
14026 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14027 }
14028
14029 return ret_status;
14030}
14031
14032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014035
14036 @param pWDICtx: pointer to the WLAN DAL context
14037 pEventData: pointer to the event information structure
14038
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 @see
14040 @return Result of the function call
14041*/
14042WDI_Status
14043WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014044(
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 WDI_ControlBlockType* pWDICtx,
14046 WDI_EventInfoType* pEventData
14047)
14048{
14049 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14050 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 wpt_uint16 usDataOffset = 0;
14053 wpt_uint16 usSendSize = 0;
14054 tHalHostOffloadReq hostOffloadParams;
14055 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014056 wpt_uint8 ucCurrentBSSSesIdx = 0;
14057 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014058
14059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14060
14061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 -------------------------------------------------------------------------*/
14064 if (( NULL == pEventData ) ||
14065 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14066 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14067 {
14068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014071 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072 }
14073
14074 /*-----------------------------------------------------------------------
14075 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14080 &pSendBuffer, &usDataOffset, &usSendSize))||
14081 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14082 {
14083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014084 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14086 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014087 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 }
14089
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014090 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14091 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14092 &pBSSSes);
14093 if ( NULL == pBSSSes )
14094 {
14095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053014096 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14097 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014098 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014099 }
14100
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14102 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14105 {
14106 // ARP Offload
14107 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14108 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14109 4);
14110 }
14111 else
14112 {
14113 // NS Offload
14114 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14115 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14116 16);
14117
14118#ifdef WLAN_NS_OFFLOAD
14119 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14120 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14121 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14122 16);
14123 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14124 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14125 16);
14126 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14127 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14128 16);
14129 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14130 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14131 16);
14132 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14133 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14134 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053014135 nsOffloadParams.srcIPv6AddrValid =
14136 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14137
14138 nsOffloadParams.targetIPv6Addr1Valid =
14139 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14140
14141 nsOffloadParams.targetIPv6Addr2Valid =
14142 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14143
14144 nsOffloadParams.slotIndex =
14145 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014146
Jeff Johnson295189b2012-06-20 16:38:30 -070014147#endif // WLAN_NS_OFFLOAD
14148 }
14149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014150 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14151
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 // copy hostOffloadParams into pSendBuffer
14153 wpalMemoryCopy( pSendBuffer+usDataOffset,
14154 &hostOffloadParams,
14155 sizeof(hostOffloadParams));
14156
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014157 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014159 // copy nsOffloadParams into pSendBuffer
14160 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014161 &nsOffloadParams,
14162 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014163 }
14164 else
14165 {
14166#ifdef WLAN_NS_OFFLOAD
14167 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14168 {
14169 // copy nsOffloadParams into pSendBuffer
14170 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14171 &nsOffloadParams,
14172 sizeof(nsOffloadParams));
14173 }
14174#endif
14175 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014176
14177 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014179
14180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014181 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014183 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14184 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014185
14186fail:
14187 // Release the message buffer so we don't leak
14188 wpalMemoryFree(pSendBuffer);
14189
14190failRequest:
14191 //WDA should have failure check to avoid the memory leak
14192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014193}/*WDI_ProcessHostOffloadReq*/
14194
14195/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014196 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014197 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014198
14199 @param pWDICtx: pointer to the WLAN DAL context
14200 pEventData: pointer to the event information structure
14201
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 @see
14203 @return Result of the function call
14204*/
14205WDI_Status
14206WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014207(
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 WDI_ControlBlockType* pWDICtx,
14209 WDI_EventInfoType* pEventData
14210)
14211{
14212 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14213 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 wpt_uint16 usDataOffset = 0;
14216 wpt_uint16 usSendSize = 0;
14217 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014218 wpt_uint8 ucCurrentBSSSesIdx = 0;
14219 WDI_BSSSessionType* pBSSSes = NULL;
14220
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14222
14223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 -------------------------------------------------------------------------*/
14226 if (( NULL == pEventData ) ||
14227 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14228 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14229 {
14230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14231 "Invalid parameters in Keep Alive req");
14232 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014233 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 }
14235
14236 /*-----------------------------------------------------------------------
14237 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 sizeof(keepAliveReq),
14242 &pSendBuffer, &usDataOffset, &usSendSize))||
14243 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14244 {
14245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014246 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14248 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014249 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014250 }
14251
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014252 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14253 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14254 &pBSSSes);
14255 if ( NULL == pBSSSes )
14256 {
14257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014258 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014259 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014260 }
14261
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14263 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14264
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014265 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014266
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14268 {
14269 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14270 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14271 HAL_IPV4_ADDR_LEN);
14272 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14273 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 wpalMemoryCopy(keepAliveReq.destMacAddr,
14276 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14277 HAL_MAC_ADDR_LEN);
14278 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014279
14280 wpalMemoryCopy( pSendBuffer+usDataOffset,
14281 &keepAliveReq,
14282 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014283
14284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014285 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014286
14287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson27c67c82013-11-22 16:44:20 -080014288 "Process keep alive req time period %d",
14289 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014290
14291 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014293
14294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14295 "Sending keep alive req to HAL");
14296
14297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14301 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014302
14303fail:
14304 // Release the message buffer so we don't leak
14305 wpalMemoryFree(pSendBuffer);
14306
14307failRequest:
14308 //WDA should have failure check to avoid the memory leak
14309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014310}/*WDI_ProcessKeepAliveReq*/
14311
14312
14313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014316
14317 @param pWDICtx: pointer to the WLAN DAL context
14318 pEventData: pointer to the event information structure
14319
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 @see
14321 @return Result of the function call
14322*/
14323WDI_Status
14324WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014325(
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 WDI_ControlBlockType* pWDICtx,
14327 WDI_EventInfoType* pEventData
14328)
14329{
14330 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14331 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 wpt_uint16 usDataOffset = 0;
14334 wpt_uint16 usSendSize = 0;
14335 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014336 wpt_uint8 ucCurrentBSSSesIdx = 0;
14337 WDI_BSSSessionType* pBSSSes = NULL;
14338
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14340
14341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 -------------------------------------------------------------------------*/
14344 if (( NULL == pEventData ) ||
14345 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14346 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14347 {
14348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014351 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 }
14353
14354 /*-----------------------------------------------------------------------
14355 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 sizeof(wowlAddBcPtrnReq),
14360 &pSendBuffer, &usDataOffset, &usSendSize))||
14361 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14362 {
14363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014364 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14366 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014367 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014368 }
14369
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014370 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14371 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14372 &pBSSSes);
14373 if ( NULL == pBSSSes )
14374 {
14375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014376 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014377 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014378 }
14379
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14388
14389 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14390 {
14391 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14392 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14393 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14394 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14395 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14396 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14397 }
14398 else
14399 {
14400 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14401 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14402 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14403 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14404 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14405 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14406
14407 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14408 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14409 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14410 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14411 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14412 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14413 }
14414
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014415 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14416
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 wpalMemoryCopy( pSendBuffer+usDataOffset,
14418 &wowlAddBcPtrnReq,
14419 sizeof(wowlAddBcPtrnReq));
14420
14421 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014423
14424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14428 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014429fail:
14430 // Release the message buffer so we don't leak
14431 wpalMemoryFree(pSendBuffer);
14432
14433failRequest:
14434 //WDA should have failure check to avoid the memory leak
14435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014436}/*WDI_ProcessWowlAddBcPtrnReq*/
14437
14438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014441
14442 @param pWDICtx: pointer to the WLAN DAL context
14443 pEventData: pointer to the event information structure
14444
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 @see
14446 @return Result of the function call
14447*/
14448WDI_Status
14449WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014450(
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 WDI_ControlBlockType* pWDICtx,
14452 WDI_EventInfoType* pEventData
14453)
14454{
14455 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14456 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 wpt_uint16 usDataOffset = 0;
14459 wpt_uint16 usSendSize = 0;
14460 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014461 wpt_uint8 ucCurrentBSSSesIdx = 0;
14462 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14464
14465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 -------------------------------------------------------------------------*/
14468 if (( NULL == pEventData ) ||
14469 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14470 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14471 {
14472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014475 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 }
14477
14478 /*-----------------------------------------------------------------------
14479 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 sizeof(wowlDelBcPtrnReq),
14484 &pSendBuffer, &usDataOffset, &usSendSize))||
14485 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14486 {
14487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014488 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14490 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014491 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 }
14493
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014494 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14495 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14496 &pBSSSes);
14497 if ( NULL == pBSSSes )
14498 {
14499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014500 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014501 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014502 }
14503
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014506
14507 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14508
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 wpalMemoryCopy( pSendBuffer+usDataOffset,
14510 &wowlDelBcPtrnReq,
14511 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014512
14513 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014515
14516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14520 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014521
14522fail:
14523 // Release the message buffer so we don't leak
14524 wpalMemoryFree(pSendBuffer);
14525
14526failRequest:
14527 //WDA should have failure check to avoid the memory leak
14528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014529}/*WDI_ProcessWowlDelBcPtrnReq*/
14530
14531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014534
14535 @param pWDICtx: pointer to the WLAN DAL context
14536 pEventData: pointer to the event information structure
14537
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 @see
14539 @return Result of the function call
14540*/
14541WDI_Status
14542WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014543(
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 WDI_ControlBlockType* pWDICtx,
14545 WDI_EventInfoType* pEventData
14546)
14547{
14548 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14549 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 wpt_uint16 usDataOffset = 0;
14552 wpt_uint16 usSendSize = 0;
14553 tHalWowlEnterParams wowlEnterReq;
14554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14555
14556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 -------------------------------------------------------------------------*/
14559 if (( NULL == pEventData ) ||
14560 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14561 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14562 {
14563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 }
14568
14569 /*-----------------------------------------------------------------------
14570 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 sizeof(wowlEnterReq),
14575 &pSendBuffer, &usDataOffset, &usSendSize))||
14576 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14577 {
14578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014579 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 }
14584
Kumar Anand21a26022013-07-22 14:35:34 -070014585 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14586
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014598 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14603
14604#ifdef WLAN_WAKEUP_EVENTS
14605 wowlEnterReq.ucWoWEAPIDRequestEnable =
14606 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14607
14608 wowlEnterReq.ucWoWEAPOL4WayEnable =
14609 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14610
14611 wowlEnterReq.ucWowNetScanOffloadMatch =
14612 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14613
14614 wowlEnterReq.ucWowGTKRekeyError =
14615 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14616
14617 wowlEnterReq.ucWoWBSSConnLoss =
14618 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14619#endif // WLAN_WAKEUP_EVENTS
14620
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014621 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14622
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14624 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14625 sizeof(tSirMacAddr));
14626
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 wpalMemoryCopy( pSendBuffer+usDataOffset,
14628 &wowlEnterReq,
14629 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014630
14631 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014633
14634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14638 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014639}/*WDI_ProcessWowlEnterReq*/
14640
14641/**
14642 @brief Process Wowl exit Request function (called when Main FSM
14643 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014644
14645 @param pWDICtx: pointer to the WLAN DAL context
14646 pEventData: pointer to the event information structure
14647
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 @see
14649 @return Result of the function call
14650*/
14651WDI_Status
14652WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014653(
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 WDI_ControlBlockType* pWDICtx,
14655 WDI_EventInfoType* pEventData
14656)
14657{
14658 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014659 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 wpt_uint16 usDataOffset = 0;
14662 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014663 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14665
14666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 -------------------------------------------------------------------------*/
14669 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014670 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14672 {
14673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 }
14678
14679 /*-----------------------------------------------------------------------
14680 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014684 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014686 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 {
14688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014689 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 pEventData, wdiWowlExitCb);
14691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 }
14694
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014695 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14696
14697 wpalMemoryCopy( pSendBuffer+usDataOffset,
14698 &wowlExitparams,
14699 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14704 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014705}/*WDI_ProcessWowlExitReq*/
14706
14707/**
14708 @brief Process Configure Apps Cpu Wakeup State Request function
14709 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014710
14711 @param pWDICtx: pointer to the WLAN DAL context
14712 pEventData: pointer to the event information structure
14713
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 @see
14715 @return Result of the function call
14716*/
14717WDI_Status
14718WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014719(
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 WDI_ControlBlockType* pWDICtx,
14721 WDI_EventInfoType* pEventData
14722)
14723{
14724 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14725 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 wpt_uint16 usDataOffset = 0;
14728 wpt_uint16 usSendSize = 0;
14729 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14731
14732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 -------------------------------------------------------------------------*/
14735 if (( NULL == pEventData ) ||
14736 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14737 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14738 {
14739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 }
14744
14745 /*-----------------------------------------------------------------------
14746 Get message buffer
14747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 sizeof(halCfgAppsCpuWakeupStateReqParams),
14750 &pSendBuffer, &usDataOffset, &usSendSize))||
14751 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14752 {
14753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014754 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14762
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 wpalMemoryCopy( pSendBuffer+usDataOffset,
14764 &halCfgAppsCpuWakeupStateReqParams,
14765 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769
14770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14774 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14775 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014776}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14777
14778#ifdef WLAN_FEATURE_VOWIFI_11R
14779/**
14780 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14781 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014782
14783 @param pWDICtx: pointer to the WLAN DAL context
14784 pEventData: pointer to the event information structure
14785
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 @see
14787 @return Result of the function call
14788*/
14789WDI_Status
14790WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014791(
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 WDI_ControlBlockType* pWDICtx,
14793 WDI_EventInfoType* pEventData
14794)
14795{
14796 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14797 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 wpt_uint16 usDataOffset = 0;
14802 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014803 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 wpt_macAddr macBSSID;
14805 tAggrAddTsReq halAggrAddTsReq;
14806 int i;
14807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14808
14809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 -------------------------------------------------------------------------*/
14812 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14813 ( NULL == pEventData->pCBfnc ))
14814 {
14815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 }
14820 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14821 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14822 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14823 /*-------------------------------------------------------------------------
14824 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 -------------------------------------------------------------------------*/
14827 wpalMutexAcquire(&pWDICtx->wptMutex);
14828
14829 /*------------------------------------------------------------------------
14830 Find the BSS for which the request is made and identify WDI session
14831 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14833 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 &macBSSID))
14835 {
14836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014837 "This station does not exist in the WDI Station Table %d",
14838 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 }
14842
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14844 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14847 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14848 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014849
14850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014853
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 /*------------------------------------------------------------------------
14855 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 ------------------------------------------------------------------------*/
14858 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14859 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14861 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014863
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 }
14868
14869 wpalMutexRelease(&pWDICtx->wptMutex);
14870 /*-----------------------------------------------------------------------
14871 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 sizeof(tAggrAddTsParams),
14876 &pSendBuffer, &usDataOffset, &usSendSize))||
14877 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14878 {
14879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014880 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 }
14885
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14890
14891 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14892 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014893 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014895 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14899 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14902 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14905 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14908 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14911 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14914 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14917 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14920 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925
14926
14927 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14957 }
14958
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 wpalMemoryCopy( pSendBuffer+usDataOffset,
14960 &halAggrAddTsReq,
14961 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014962
14963 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014965
14966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014972}/*WDI_ProcessAggrAddTSpecReq*/
14973#endif /* WLAN_FEATURE_VOWIFI_11R */
14974
14975/**
14976 @brief Process Shutdown Request function (called when Main FSM
14977 allows it)
14978
14979 @param pWDICtx: pointer to the WLAN DAL context
14980 pEventData: pointer to the event information structure
14981
14982 @see
14983 @return Result of the function call
14984*/
14985WDI_Status
14986WDI_ProcessShutdownReq
14987(
14988 WDI_ControlBlockType* pWDICtx,
14989 WDI_EventInfoType* pEventData
14990 )
14991{
14992 wpt_status wptStatus;
14993
14994
14995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14996
14997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014999 -------------------------------------------------------------------------*/
15000 if ( NULL == pEventData )
15001 {
15002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 WDI_ASSERT(0);
15005 return WDI_STATUS_E_FAILURE;
15006 }
15007
15008 wpalMutexAcquire(&pWDICtx->wptMutex);
15009
15010
15011 gWDIInitialized = eWLAN_PAL_FALSE;
15012 /*! TO DO: stop the data services */
15013 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15014 {
15015 /*Stop the STA Table !UT- check this logic again
15016 It is safer to do it here than on the response - because a stop is imminent*/
15017 WDI_STATableStop(pWDICtx);
15018
15019 /* Stop Transport Driver, DXE */
15020 WDTS_Stop(pWDICtx);
15021 }
15022
15023 /*Clear all pending request*/
15024 WDI_ClearPendingRequests(pWDICtx);
15025 /* Close Data transport*/
15026 /* FTM mode does not open Data Path */
15027 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15028 {
15029 WDTS_Close(pWDICtx);
15030 }
15031 /*Close the STA Table !UT- check this logic again*/
15032 WDI_STATableClose(pWDICtx);
15033 /*close the PAL */
15034 wptStatus = wpalClose(pWDICtx->pPALContext);
15035 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15036 {
15037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15038 "Failed to wpal Close %d", wptStatus);
15039 WDI_ASSERT(0);
15040 }
15041
15042 /*Transition back to init state*/
15043 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15044
15045 wpalMutexRelease(&pWDICtx->wptMutex);
15046
15047 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015049
15050
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015052}/*WDI_ProcessShutdownReq*/
15053
15054/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015055 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015056========================================================================*/
15057
15058/**
15059 @brief Process Start Response function (called when a response
15060 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015061
15062 @param pWDICtx: pointer to the WLAN DAL context
15063 pEventData: pointer to the event information structure
15064
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 @see
15066 @return Result of the function call
15067*/
15068WDI_Status
15069WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015070(
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 WDI_ControlBlockType* pWDICtx,
15072 WDI_EventInfoType* pEventData
15073)
15074{
15075 WDI_StartRspParamsType wdiRspParams;
15076 WDI_StartRspCb wdiStartRspCb = NULL;
15077
15078 tHalMacStartRspParams* startRspParams;
15079
15080#ifndef HAL_SELF_STA_PER_BSS
15081 WDI_AddStaParams wdiAddSTAParam = {0};
15082#endif
15083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15084
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 -------------------------------------------------------------------------*/
15089 if (( NULL == pEventData ) ||
15090 ( NULL == pEventData->pEventData) ||
15091 ( NULL == wdiStartRspCb ))
15092 {
15093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 }
15098
15099 /*-------------------------------------------------------------------------
15100 Extract response and send it to UMAC
15101 -------------------------------------------------------------------------*/
15102 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15103 {
15104 // not enough data was received
15105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson27c67c82013-11-22 16:44:20 -080015106 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 sizeof(tHalMacStartRspParams), 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 -------------------------------------------------------------------------*/
15116 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15117
15118 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15119 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15120 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15121 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15122 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15123 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15124 wdiRspParams.wlanReportedVersion.major =
15125 startRspParams->wcnssWlanVersion.major;
15126 wdiRspParams.wlanReportedVersion.minor =
15127 startRspParams->wcnssWlanVersion.minor;
15128 wdiRspParams.wlanReportedVersion.version =
15129 startRspParams->wcnssWlanVersion.version;
15130 wdiRspParams.wlanReportedVersion.revision =
15131 startRspParams->wcnssWlanVersion.revision;
15132 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15133 startRspParams->wcnssCrmVersionString,
15134 sizeof(wdiRspParams.wcnssSoftwareVersion));
15135 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15136 startRspParams->wcnssWlanVersionString,
15137 sizeof(wdiRspParams.wcnssHardwareVersion));
15138 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15139
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015140 /*Save the HAL Version*/
15141 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15142
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 wpalMutexAcquire(&pWDICtx->wptMutex);
15144 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15145 {
15146 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15147
15148 /*Cache the start response for further use*/
15149 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015150 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 sizeof(pWDICtx->wdiCachedStartRspParams));
15152
15153 }
15154 else
15155 {
15156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15157 "Failed to start device with status %s(%d)",
15158 WDI_getHALStatusMsgString(startRspParams->status),
15159 startRspParams->status);
15160
15161 /*Set the expected state transition to stopped - because the start has
15162 failed*/
15163 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15164
15165 wpalMutexRelease(&pWDICtx->wptMutex);
15166
15167 /*Notify UMAC*/
15168 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015169
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15171
15172 /*Although the response is an error - it was processed by our function
15173 so as far as the caller is concerned this is a succesful reponse processing*/
15174 return WDI_STATUS_SUCCESS;
15175 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015176
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 wpalMutexRelease(&pWDICtx->wptMutex);
15178
15179 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15180 {
15181 /* FTM mode does not need to execute below */
15182 /* Notify UMAC */
15183 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15184 return WDI_STATUS_SUCCESS;
15185 }
15186
15187 /* START the Data transport */
15188 WDTS_startTransport(pWDICtx);
15189
15190 /*Start the STA Table !- check this logic again*/
15191 WDI_STATableStart(pWDICtx);
15192
15193#ifndef HAL_SELF_STA_PER_BSS
15194 /* Store the Self STA Index */
15195 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15196
15197 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15198 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15199 WDI_MAC_ADDR_LEN);
15200
15201 /* At this point add the self-STA */
15202
15203 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15204 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15205 /*! TO DO: wdiAddSTAParam.dpuSig */
15206 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15207 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15208 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15209
15210 //all DPU indices are the same for self STA
15211 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15212 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015213 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15215 WDI_MAC_ADDR_LEN);
15216 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15217 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15218
15219 /* Note: Since we don't get an explicit config STA request for self STA, we
15220 add the self STA upon receiving the Start response message. But the
15221 self STA entry in the table is deleted when WDI gets an explicit delete STA
15222 request */
15223 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15224#endif
15225
15226 /*Notify UMAC*/
15227 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15228
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015230}/*WDI_ProcessStartRsp*/
15231
15232
15233/**
15234 @brief Process Stop Response function (called when a response
15235 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015236
15237 @param pWDICtx: pointer to the WLAN DAL context
15238 pEventData: pointer to the event information structure
15239
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 @see
15241 @return Result of the function call
15242*/
15243WDI_Status
15244WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015245(
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 WDI_ControlBlockType* pWDICtx,
15247 WDI_EventInfoType* pEventData
15248)
15249{
15250 WDI_Status wdiStatus;
15251 WDI_StopRspCb wdiStopRspCb = NULL;
15252
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15255
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 -------------------------------------------------------------------------*/
15260 if (( NULL == pEventData ) ||
15261 ( NULL == pEventData->pEventData) ||
15262 ( NULL == wdiStopRspCb ))
15263 {
15264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 }
15269
15270 /*-------------------------------------------------------------------------
15271 Extract response and send it to UMAC
15272 -------------------------------------------------------------------------*/
15273 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15274 {
15275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015276 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 pEventData->uEventDataSize);
15278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 }
15281
15282 /*-------------------------------------------------------------------------
15283 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15287 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 sizeof(halMacStopRspMsg.stopRspParams));
15289
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015291
15292 wpalMutexAcquire(&pWDICtx->wptMutex);
15293
15294 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 --------------------------------------------------------------------------*/
15297 if ( WDI_STATUS_SUCCESS != wdiStatus )
15298 {
15299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15300 "Failed to stop the device with status %s (%d)",
15301 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15302 halMacStopRspMsg.stopRspParams.status);
15303
Jeff Johnsone7245742012-09-05 17:12:55 -070015304 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15305
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015309
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15311
15312 /*Transition now as WDI may get preempted imediately after it sends
15313 up the Stop Response and it will not get to process the state transition
15314 from Main Rsp function*/
15315 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15316 wpalMutexRelease(&pWDICtx->wptMutex);
15317
15318 /*! TO DO: - STOP the Data transport */
15319
15320 /*Notify UMAC*/
15321 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15322
Jeff Johnsone7245742012-09-05 17:12:55 -070015323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015324}/*WDI_ProcessStopRsp*/
15325
15326/**
15327 @brief Process Close Rsp function (called when a response
15328 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015329
15330 @param pWDICtx: pointer to the WLAN DAL context
15331 pEventData: pointer to the event information structure
15332
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 @see
15334 @return Result of the function call
15335*/
15336WDI_Status
15337WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015338(
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 WDI_ControlBlockType* pWDICtx,
15340 WDI_EventInfoType* pEventData
15341)
15342{
15343 /*There is no close response comming from HAL - function just kept for
15344 simmetry */
15345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015347}/*WDI_ProcessCloseRsp*/
15348
15349
15350/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015352============================================================================*/
15353
15354/**
15355 @brief Process Init Scan Rsp function (called when a response
15356 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015357
15358 @param pWDICtx: pointer to the WLAN DAL context
15359 pEventData: pointer to the event information structure
15360
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 @see
15362 @return Result of the function call
15363*/
15364WDI_Status
15365WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015366(
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 WDI_ControlBlockType* pWDICtx,
15368 WDI_EventInfoType* pEventData
15369)
15370{
15371 WDI_Status wdiStatus;
15372 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015374 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15376
15377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 -------------------------------------------------------------------------*/
15380 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15381 ( NULL == pEventData->pEventData))
15382 {
15383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 }
15388
15389 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15390 if( NULL == wdiInitScanRspCb)
15391 {
15392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015393 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 }
15397
15398 /*-------------------------------------------------------------------------
15399 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15403 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 sizeof(halInitScanRspMsg.initScanRspParams));
15405
Jeff Johnsone7245742012-09-05 17:12:55 -070015406 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015407
15408 if ( pWDICtx->bInBmps )
15409 {
15410 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015411 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15412 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080015414 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015415 WDI_ASSERT(0);
15416 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 }
15418
15419 /*Notify UMAC*/
15420 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15421
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015423}/*WDI_ProcessInitScanRsp*/
15424
15425
15426/**
15427 @brief Process Start Scan Rsp function (called when a response
15428 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015429
15430 @param pWDICtx: pointer to the WLAN DAL context
15431 pEventData: pointer to the event information structure
15432
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 @see
15434 @return Result of the function call
15435*/
15436WDI_Status
15437WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015438(
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 WDI_ControlBlockType* pWDICtx,
15440 WDI_EventInfoType* pEventData
15441)
15442{
15443 WDI_StartScanRspParamsType wdiStartScanParams;
15444 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015445
15446 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15448
15449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015450 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 -------------------------------------------------------------------------*/
15452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15453 ( NULL == pEventData->pEventData))
15454 {
15455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015456 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459 }
15460
15461 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15462 if( NULL == wdiStartScanRspCb)
15463 {
15464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015465 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 }
15469
15470 /*-------------------------------------------------------------------------
15471 Extract response and send it to UMAC
15472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15474 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015475 sizeof(halStartScanRspMsg.startScanRspParams));
15476
15477 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15478 halStartScanRspMsg.startScanRspParams.status);
15479#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015482 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 halStartScanRspMsg.startScanRspParams.startTSF,
15484 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015485#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015486
15487 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15488 {
15489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15490 "Start scan failed with status %s (%d)",
15491 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15492 halStartScanRspMsg.startScanRspParams.status);
15493 /* send the status to UMAC, don't return from here*/
15494 }
15495
15496 /*Notify UMAC*/
15497 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15498
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015500
15501}/*WDI_ProcessStartScanRsp*/
15502
15503
15504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015507
15508 @param pWDICtx: pointer to the WLAN DAL context
15509 pEventData: pointer to the event information structure
15510
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 @see
15512 @return Result of the function call
15513*/
15514WDI_Status
15515WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015516(
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 WDI_ControlBlockType* pWDICtx,
15518 WDI_EventInfoType* pEventData
15519)
15520{
15521 WDI_Status wdiStatus;
15522 tHalEndScanRspMsg halEndScanRspMsg;
15523 WDI_EndScanRspCb wdiEndScanRspCb;
15524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15525
15526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 -------------------------------------------------------------------------*/
15529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15530 ( NULL == pEventData->pEventData))
15531 {
15532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 }
15537
15538 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15539
15540 /*-------------------------------------------------------------------------
15541 Extract response and send it to UMAC
15542 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15544 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 sizeof(halEndScanRspMsg.endScanRspParams));
15546
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015548
15549 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15550 {
15551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15552 "End Scan failed with status %s (%d )",
15553 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15554 halEndScanRspMsg.endScanRspParams.status);
15555 /* send the status to UMAC, don't return from here*/
15556 }
15557
15558 /*Notify UMAC*/
15559 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15560
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562}/*WDI_ProcessEndScanRsp*/
15563
15564
15565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015568
15569 @param pWDICtx: pointer to the WLAN DAL context
15570 pEventData: pointer to the event information structure
15571
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 @see
15573 @return Result of the function call
15574*/
15575WDI_Status
15576WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015577(
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 WDI_ControlBlockType* pWDICtx,
15579 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015580)
Jeff Johnson295189b2012-06-20 16:38:30 -070015581{
15582 WDI_Status wdiStatus;
15583 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015584
15585 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15587
15588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 -------------------------------------------------------------------------*/
15591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15592 ( NULL == pEventData->pEventData))
15593 {
15594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 }
15599
15600 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15601
15602 /*-------------------------------------------------------------------------
15603 Extract response and send it to UMAC
15604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15606 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15608
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015610
15611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 halFinishScanRspMsg.finishScanRspParams.status);
15614
15615 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15616 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15617 {
15618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15619 "Finish Scan failed with status %s (%d)",
15620 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15621 halFinishScanRspMsg.finishScanRspParams.status);
15622 /* send the status to UMAC, don't return from here*/
15623 }
15624
15625 /*Notify UMAC*/
15626 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15627
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015629}/*WDI_ProcessFinishScanRsp*/
15630
15631/**
15632 @brief Process Join Response function (called when a response
15633 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015634
15635 @param pWDICtx: pointer to the WLAN DAL context
15636 pEventData: pointer to the event information structure
15637
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 @see
15639 @return Result of the function call
15640*/
15641WDI_Status
15642WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015643(
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 WDI_ControlBlockType* pWDICtx,
15645 WDI_EventInfoType* pEventData
15646)
15647{
15648 WDI_Status wdiStatus;
15649 WDI_JoinRspCb wdiJoinRspCb;
15650 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015651
15652 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15654
15655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 -------------------------------------------------------------------------*/
15658 if (( NULL == pWDICtx ) ||
15659 ( NULL == pWDICtx->pfncRspCB ) ||
15660 ( NULL == pEventData ) ||
15661 ( NULL == pEventData->pEventData))
15662 {
15663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 }
15668
15669 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15670
15671 /*-------------------------------------------------------------------------
15672 Extract response and send it to UMAC
15673 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15675 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 sizeof(halJoinRspMsg.joinRspParams));
15677
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015679
15680 wpalMutexAcquire(&pWDICtx->wptMutex);
15681
15682 /*-----------------------------------------------------------------------
15683 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15688 {
15689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015690 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15691 "association no longer in progress %d - mysterious HAL response",
15692 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015693
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 }
15698
15699 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15700
15701 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 -----------------------------------------------------------------------*/
15704 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15705 {
15706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15707 "Join only allowed in Joining state - failure state is %d "
15708 "strange HAL response", pBSSSes->wdiAssocState);
15709
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15711
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 }
15715
15716
15717 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 -----------------------------------------------------------------------*/
15720 if ( WDI_STATUS_SUCCESS != wdiStatus )
15721 {
15722 /*Association was failed by HAL - remove session*/
15723 WDI_DeleteSession(pWDICtx, pBSSSes);
15724
15725 /*Association no longer in progress */
15726 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15727
15728 /*Association no longer in progress - prepare pending assoc for processing*/
15729 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015730
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 }
15732 else
15733 {
15734 /*Transition to state Joining - this may be redundant as we are supposed
15735 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 }
15738
15739 wpalMutexRelease(&pWDICtx->wptMutex);
15740
15741 /*Notify UMAC*/
15742 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15743
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015745}/*WDI_ProcessJoinRsp*/
15746
15747
15748/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015751
15752 @param pWDICtx: pointer to the WLAN DAL context
15753 pEventData: pointer to the event information structure
15754
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 @see
15756 @return Result of the function call
15757*/
15758WDI_Status
15759WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015760(
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 WDI_ControlBlockType* pWDICtx,
15762 WDI_EventInfoType* pEventData
15763)
15764{
15765 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15766 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 WDI_BSSSessionType* pBSSSes = NULL;
15769
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15772 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015773
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15775
15776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 -------------------------------------------------------------------------*/
15779 if (( NULL == pEventData ) ||
15780 ( NULL == pEventData->pEventData))
15781 {
15782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 }
15787
15788 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15789
15790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15794 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 sizeof(halConfigBssRspMsg.configBssRspParams));
15796
15797 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15798 halConfigBssRspMsg.configBssRspParams.status);
15799 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15800 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15803 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015804
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015806
15807 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015809
15810 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015812
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015814
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15818 #endif
15819 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15820 halConfigBssRspMsg.configBssRspParams.staMac,
15821 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015822
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 wpalMutexAcquire(&pWDICtx->wptMutex);
15824 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15828 wdiConfigBSSParams.macBSSID,
15829 &pBSSSes);
15830
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 /*-----------------------------------------------------------------------
15832 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 -----------------------------------------------------------------------*/
15835 if ( NULL == pBSSSes )
15836 {
15837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15838 "Association sequence for this BSS does not yet exist "
15839 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015840
15841 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15842
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015846
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 /*Save data for this BSS*/
15848 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15849 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015858 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15860 pBSSSes->bcastStaIdx =
15861 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015864
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 /*-------------------------------------------------------------------------
15866 Add Peer STA
15867 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15870 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015871
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 wdiAddSTAParam.ucHTCapable =
15876 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15877 wdiAddSTAParam.ucStaType =
15878 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15879
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15882 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015884
15885 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15886 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15887 WDI_MAC_ADDR_LEN);
15888
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015902
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15904 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015905
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15907 /*-------------------------------------------------------------------------
15908 Add Broadcast STA only in AP mode
15909 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015911 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 {
15913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15914 "Add BCAST STA to table for index: %d",
15915 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015916
15917 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015919
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15921 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15922 }
15923 wpalMutexRelease(&pWDICtx->wptMutex);
15924 }
15925 else
15926 {
15927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15928 "Config BSS RSP failed with status : %s(%d)",
15929 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 halConfigBssRspMsg.configBssRspParams.status);
15932
Jeff Johnsone7245742012-09-05 17:12:55 -070015933
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 /*Association was failed by HAL - remove session*/
15935 WDI_DeleteSession(pWDICtx, pBSSSes);
15936
15937 /*Association no longer in progress */
15938 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15939
15940 /*Association no longer in progress - prepare pending assoc for processing*/
15941 WDI_DequeueAssocRequest(pWDICtx);
15942
15943 }
15944
15945 /*Notify UMAC*/
15946 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15947
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015949}/*WDI_ProcessConfigBSSRsp*/
15950
15951
15952/**
15953 @brief Process Del BSS Response function (called when a response
15954 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015955
15956 @param pWDICtx: pointer to the WLAN DAL context
15957 pEventData: pointer to the event information structure
15958
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 @see
15960 @return Result of the function call
15961*/
15962WDI_Status
15963WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015964(
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 WDI_ControlBlockType* pWDICtx,
15966 WDI_EventInfoType* pEventData
15967)
15968{
15969 WDI_DelBSSRspParamsType wdiDelBSSParams;
15970 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 WDI_BSSSessionType* pBSSSes = NULL;
15973
Jeff Johnsone7245742012-09-05 17:12:55 -070015974 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15976
15977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 -------------------------------------------------------------------------*/
15980 if (( NULL == pEventData ) ||
15981 ( NULL == pEventData->pEventData))
15982 {
15983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 }
15988
15989 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15990
15991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15995 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015996 sizeof(halDelBssRspMsg.deleteBssRspParams));
15997
15998
15999 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
16002 wpalMutexAcquire(&pWDICtx->wptMutex);
16003
16004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016005 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016006 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16008 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16009 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016010
16011 /*-----------------------------------------------------------------------
16012 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 -----------------------------------------------------------------------*/
16015 if ( NULL == pBSSSes )
16016 {
16017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16018 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016019 "association no longer in progress - mysterious HAL response");
16020
16021 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16022
16023 wpalMutexRelease(&pWDICtx->wptMutex);
16024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016026
16027 /*Extract BSSID for the response to UMAC*/
16028 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16029 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16030
16031 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16032
16033 /*-----------------------------------------------------------------------
16034 The current session will be deleted
16035 -----------------------------------------------------------------------*/
16036 WDI_DeleteSession(pWDICtx, pBSSSes);
16037
16038
16039 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070016040 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16041 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016043 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016044 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016045
16046 /* Delete the STA's in this BSS */
16047 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16048
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 wpalMutexRelease(&pWDICtx->wptMutex);
16050
16051 /*Notify UMAC*/
16052 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16053
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016055}/*WDI_ProcessDelBSSRsp*/
16056
16057/**
16058 @brief Process Post Assoc Rsp function (called when a response
16059 is 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_ProcessPostAssocRsp
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_PostAssocRspParamsType wdiPostAssocParams;
16075 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016078 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16080
16081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 -------------------------------------------------------------------------*/
16084 if (( NULL == pEventData ) ||
16085 ( NULL == pEventData->pEventData))
16086 {
16087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 }
16092
16093 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16094
16095 /*-------------------------------------------------------------------------
16096 Extract response and send it to UMAC
16097 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16099 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 sizeof(halPostAssocRspMsg.postAssocRspParams));
16101
16102 /*Extract the Post Assoc STA Params */
16103
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16110
Jeff Johnsone7245742012-09-05 17:12:55 -070016111 wdiPostAssocParams.wdiStatus =
16112 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016113
16114 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16115 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16117 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 WDI_MAC_ADDR_LEN);
16119
16120 /* Extract Post Assoc BSS Params */
16121
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16123 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16124 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016125
16126 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16127 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16130 .macSTA, WDI_MAC_ADDR_LEN);
16131
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16137
16138 wdiPostAssocParams.bssParams.ucBSSIdx =
16139 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16140
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16143
16144 wpalMutexAcquire(&pWDICtx->wptMutex);
16145
16146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016152
16153 /*-----------------------------------------------------------------------
16154 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 -----------------------------------------------------------------------*/
16157 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16160 {
16161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16162 "Association sequence for this BSS does not yet exist or "
16163 "association no longer in progress - mysterious HAL response");
16164
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16166
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016169 }
16170
16171 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 -----------------------------------------------------------------------*/
16174 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16175 {
16176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16177 "Post Assoc not allowed before JOIN - failing request "
16178 "strange HAL response");
16179
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16181
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 }
16185
16186 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 -----------------------------------------------------------------------*/
16189 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16190 {
16191 /*Association was failed by HAL - remove session*/
16192 WDI_DeleteSession(pWDICtx, pBSSSes);
16193 }
16194 else
16195 {
16196 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016198
16199 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16208
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16211 }
16212
16213 /*Association no longer in progress */
16214 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16215
16216 /*Association no longer in progress - prepare pending assoc for processing*/
16217 WDI_DequeueAssocRequest(pWDICtx);
16218
16219 wpalMutexRelease(&pWDICtx->wptMutex);
16220
16221 /*Notify UMAC*/
16222 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16223
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016225}/*WDI_ProcessPostAssocRsp*/
16226
16227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016230
16231 @param pWDICtx: pointer to the WLAN DAL context
16232 pEventData: pointer to the event information structure
16233
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 @see
16235 @return Result of the function call
16236*/
16237WDI_Status
16238WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016239(
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 WDI_ControlBlockType* pWDICtx,
16241 WDI_EventInfoType* pEventData
16242)
16243{
16244 WDI_DelSTARspParamsType wdiDelSTARsp;
16245 WDI_DelSTARspCb wdiDelSTARspCb;
16246 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16249
16250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 -------------------------------------------------------------------------*/
16253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16254 ( NULL == pEventData->pEventData))
16255 {
16256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 }
16261
16262 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16263
16264 /*-------------------------------------------------------------------------
16265 Extract response and send it to UMAC
16266 -------------------------------------------------------------------------*/
16267 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 sizeof(halDelStaRspMsg.delStaRspParams));
16270
16271 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 wdiDelSTARsp.wdiStatus =
16273 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016274
16275 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16276
16277 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16278 if(staType == WDI_STA_ENTRY_SELF)
16279 {
16280 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16281
16282 /* At this point add the self-STA */
16283
16284 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16285 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16286 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16287
16288#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16289#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16290
16291 //all DPU indices are the same for self STA
16292 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16293 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16294 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16295 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16296 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16297 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016298
16299 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 }
16301 else
16302 {
16303 //Delete the station in the table
16304 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16305 }
16306
16307 /*Notify UMAC*/
16308 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16309
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016311}/*WDI_ProcessDelSTARsp*/
16312
16313
16314/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016316==========================================================================*/
16317
16318/**
16319 @brief Process Set BSS Key Rsp function (called when a response
16320 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016321
16322 @param pWDICtx: pointer to the WLAN DAL context
16323 pEventData: pointer to the event information structure
16324
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 @see
16326 @return Result of the function call
16327*/
16328WDI_Status
16329WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016330(
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 WDI_ControlBlockType* pWDICtx,
16332 WDI_EventInfoType* pEventData
16333)
16334{
16335 WDI_Status wdiStatus;
16336 eHalStatus halStatus;
16337 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16339
16340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 -------------------------------------------------------------------------*/
16343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16344 ( NULL == pEventData->pEventData))
16345 {
16346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 }
16351
16352 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16353
16354 /*-------------------------------------------------------------------------
16355 Extract response and send it to UMAC
16356 -------------------------------------------------------------------------*/
16357 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016358 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016359
16360 if ( eHAL_STATUS_SUCCESS != halStatus )
16361 {
16362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16363 "Set BSS Key failed with status %s (%d)",
16364 WDI_getHALStatusMsgString(halStatus),
16365 halStatus);
16366 /* send the status to UMAC, don't return from here*/
16367 }
16368
16369 /*Notify UMAC*/
16370 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16371
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016373}/*WDI_ProcessSetBssKeyRsp*/
16374
16375/**
16376 @brief Process Remove BSS Key Rsp function (called when a response
16377 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016378
16379 @param pWDICtx: pointer to the WLAN DAL context
16380 pEventData: pointer to the event information structure
16381
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 @see
16383 @return Result of the function call
16384*/
16385WDI_Status
16386WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016387(
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 WDI_ControlBlockType* pWDICtx,
16389 WDI_EventInfoType* pEventData
16390)
16391{
16392 WDI_Status wdiStatus;
16393 eHalStatus halStatus;
16394 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16396
16397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 -------------------------------------------------------------------------*/
16400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16401 ( NULL == pEventData->pEventData))
16402 {
16403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 }
16408
16409 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16410
16411 /*-------------------------------------------------------------------------
16412 Extract response and send it to UMAC
16413 -------------------------------------------------------------------------*/
16414 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016416
16417 if ( eHAL_STATUS_SUCCESS != halStatus )
16418 {
16419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16420 "Remove BSS Key failed with status %s (%d )",
16421 WDI_getHALStatusMsgString(halStatus),
16422 halStatus);
16423 /* send the status to UMAC, don't return from here*/
16424 }
16425
16426 /*Notify UMAC*/
16427 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16428
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016430}/*WDI_ProcessSetBssKeyRsp*/
16431
16432
16433/**
16434 @brief Process Set STA Key Rsp function (called when a response
16435 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016436
16437 @param pWDICtx: pointer to the WLAN DAL context
16438 pEventData: pointer to the event information structure
16439
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 @see
16441 @return Result of the function call
16442*/
16443WDI_Status
16444WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016445(
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 WDI_ControlBlockType* pWDICtx,
16447 WDI_EventInfoType* pEventData
16448)
16449{
16450 WDI_Status wdiStatus;
16451 eHalStatus halStatus;
16452 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16454
16455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 -------------------------------------------------------------------------*/
16458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16459 ( NULL == pEventData->pEventData))
16460 {
16461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 }
16466
16467 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16468
16469 /*-------------------------------------------------------------------------
16470 Extract response and send it to UMAC
16471 -------------------------------------------------------------------------*/
16472 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016473 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016474
16475 if ( eHAL_STATUS_SUCCESS != halStatus )
16476 {
16477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16478 "Set STA Key failed with status %s (%d)",
16479 WDI_getHALStatusMsgString(halStatus),
16480 halStatus);
16481 /* send the status to UMAC, don't return from here*/
16482 }
16483
16484 /*Notify UMAC*/
16485 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16486
Jeff Johnsone7245742012-09-05 17:12:55 -070016487 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016488}/*WDI_ProcessSetSTAKeyRsp*/
16489
16490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016493
16494 @param pWDICtx: pointer to the WLAN DAL context
16495 pEventData: pointer to the event information structure
16496
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 @see
16498 @return Result of the function call
16499*/
16500WDI_Status
16501WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016502(
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 WDI_ControlBlockType* pWDICtx,
16504 WDI_EventInfoType* pEventData
16505)
16506{
16507 WDI_Status wdiStatus;
16508 eHalStatus halStatus;
16509 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16511
16512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 -------------------------------------------------------------------------*/
16515 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16516 ( NULL == pEventData->pEventData))
16517 {
16518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 }
16523
16524 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16525
16526 /*-------------------------------------------------------------------------
16527 Extract response and send it to UMAC
16528 -------------------------------------------------------------------------*/
16529 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016530 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016531
16532 if ( eHAL_STATUS_SUCCESS != halStatus )
16533 {
16534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16535 "Remove STA Key failed with status %s (%d)",
16536 WDI_getHALStatusMsgString(halStatus),
16537 halStatus);
16538 /* send the status to UMAC, don't return from here*/
16539 }
16540
16541 /*Notify UMAC*/
16542 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16543
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016545}/*WDI_ProcessRemoveStaKeyRsp*/
16546
16547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016550
16551 @param pWDICtx: pointer to the WLAN DAL context
16552 pEventData: pointer to the event information structure
16553
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 @see
16555 @return Result of the function call
16556*/
16557WDI_Status
16558WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016559(
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 WDI_ControlBlockType* pWDICtx,
16561 WDI_EventInfoType* pEventData
16562)
16563{
16564 WDI_Status wdiStatus;
16565 eHalStatus halStatus;
16566 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16568
16569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 -------------------------------------------------------------------------*/
16572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16573 ( NULL == pEventData->pEventData))
16574 {
16575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 }
16580
16581 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16582
16583 /*-------------------------------------------------------------------------
16584 Extract response and send it to UMAC
16585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 wpalMemoryCopy( &halStatus,
16587 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 sizeof(halStatus));
16589
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016591
16592 if ( eHAL_STATUS_SUCCESS != halStatus )
16593 {
16594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16595 "Set STA Key failed with status %s (%d)",
16596 WDI_getHALStatusMsgString(halStatus),
16597 halStatus);
16598 /* send the status to UMAC, don't return from here*/
16599 }
16600
16601 /*Notify UMAC*/
16602 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16603
Jeff Johnsone7245742012-09-05 17:12:55 -070016604 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016605}/*WDI_ProcessSetSTABcastKeyRsp*/
16606
16607/**
16608 @brief Process Remove STA Bcast Key Rsp function (called when a
16609 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016610
16611 @param pWDICtx: pointer to the WLAN DAL context
16612 pEventData: pointer to the event information structure
16613
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 @see
16615 @return Result of the function call
16616*/
16617WDI_Status
16618WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016619(
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 WDI_ControlBlockType* pWDICtx,
16621 WDI_EventInfoType* pEventData
16622)
16623{
16624 WDI_Status wdiStatus;
16625 eHalStatus halStatus;
16626 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16628
16629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 -------------------------------------------------------------------------*/
16632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16633 ( NULL == pEventData->pEventData))
16634 {
16635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 }
16640
16641 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16642
16643 /*-------------------------------------------------------------------------
16644 Extract response and send it to UMAC
16645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 wpalMemoryCopy( &halStatus,
16647 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 sizeof(halStatus));
16649
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016651
16652 if ( eHAL_STATUS_SUCCESS != halStatus )
16653 {
16654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16655 "Remove STA Key failed with status %s (%d)",
16656 WDI_getHALStatusMsgString(halStatus),
16657 halStatus);
16658 /* send the status to UMAC, don't return from here*/
16659 }
16660
16661 /*Notify UMAC*/
16662 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16663
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016665}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16666
16667
16668/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016670==========================================================================*/
16671
16672/**
16673 @brief Process Add TSpec Rsp function (called when a response
16674 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016675
16676 @param pWDICtx: pointer to the WLAN DAL context
16677 pEventData: pointer to the event information structure
16678
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 @see
16680 @return Result of the function call
16681*/
16682WDI_Status
16683WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016684(
Jeff Johnson295189b2012-06-20 16:38:30 -070016685 WDI_ControlBlockType* pWDICtx,
16686 WDI_EventInfoType* pEventData
16687)
16688{
16689 WDI_Status wdiStatus;
16690 eHalStatus halStatus;
16691 WDI_AddTsRspCb wdiAddTsRspCb;
16692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16693
16694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 -------------------------------------------------------------------------*/
16697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16698 ( NULL == pEventData->pEventData))
16699 {
16700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 }
16705
16706 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16707
16708 /*-------------------------------------------------------------------------
16709 Extract response and send it to UMAC
16710 -------------------------------------------------------------------------*/
16711 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016713
16714 /*Notify UMAC*/
16715 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16716
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016718}/*WDI_ProcessAddTSpecRsp*/
16719
16720
16721/**
16722 @brief Process Del TSpec Rsp function (called when a response
16723 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016724
16725 @param pWDICtx: pointer to the WLAN DAL context
16726 pEventData: pointer to the event information structure
16727
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 @see
16729 @return Result of the function call
16730*/
16731WDI_Status
16732WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016733(
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 WDI_ControlBlockType* pWDICtx,
16735 WDI_EventInfoType* pEventData
16736)
16737{
16738 WDI_Status wdiStatus;
16739 eHalStatus halStatus;
16740 WDI_DelTsRspCb wdiDelTsRspCb;
16741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16742
16743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 -------------------------------------------------------------------------*/
16746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16747 ( NULL == pEventData->pEventData))
16748 {
16749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 }
16754
16755 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16756
16757 /*-------------------------------------------------------------------------
16758 Extract response and send it to UMAC
16759 -------------------------------------------------------------------------*/
16760 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016762
16763 /*Notify UMAC*/
16764 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16765
Jeff Johnsone7245742012-09-05 17:12:55 -070016766 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016767}/*WDI_ProcessDelTSpecRsp*/
16768
16769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016772
16773 @param pWDICtx: pointer to the WLAN DAL context
16774 pEventData: pointer to the event information structure
16775
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 @see
16777 @return Result of the function call
16778*/
16779WDI_Status
16780WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016781(
Jeff Johnson295189b2012-06-20 16:38:30 -070016782 WDI_ControlBlockType* pWDICtx,
16783 WDI_EventInfoType* pEventData
16784)
16785{
16786 WDI_Status wdiStatus;
16787 eHalStatus halStatus;
16788 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16790
16791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 -------------------------------------------------------------------------*/
16794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16795 ( NULL == pEventData->pEventData))
16796 {
16797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 }
16802
16803 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16804
16805 /*-------------------------------------------------------------------------
16806 Extract response and send it to UMAC
16807 -------------------------------------------------------------------------*/
16808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016810
16811 /*Notify UMAC*/
16812 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16813
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016815}/*WDI_ProcessUpdateEDCAParamsRsp*/
16816
16817
16818/**
16819 @brief Process Add BA Rsp function (called when a response
16820 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016821
16822 @param pWDICtx: pointer to the WLAN DAL context
16823 pEventData: pointer to the event information structure
16824
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 @see
16826 @return Result of the function call
16827*/
16828WDI_Status
16829WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016830(
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 WDI_ControlBlockType* pWDICtx,
16832 WDI_EventInfoType* pEventData
16833)
16834{
16835 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16836
16837 tAddBASessionRspParams halBASessionRsp;
16838 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16839
Jeff Johnsone7245742012-09-05 17:12:55 -070016840
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16842
16843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 -------------------------------------------------------------------------*/
16846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16847 ( NULL == pEventData->pEventData))
16848 {
16849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 }
16854
16855 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16856
16857 /*-------------------------------------------------------------------------
16858 Extract response and send it to UMAC
16859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 wpalMemoryCopy( &halBASessionRsp,
16861 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 sizeof(halBASessionRsp));
16863
16864 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16865
Jeff Johnson43971f52012-07-17 12:26:56 -070016866 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 {
16868 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16869 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16870 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16871 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16872 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16873 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16874 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16875 }
16876
16877 /*Notify UMAC*/
16878 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16879
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016881}/*WDI_ProcessAddSessionBARsp*/
16882
16883
16884/**
16885 @brief Process Del BA Rsp function (called when a response
16886 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016887
16888 @param pWDICtx: pointer to the WLAN DAL context
16889 pEventData: pointer to the event information structure
16890
Jeff Johnson295189b2012-06-20 16:38:30 -070016891 @see
16892 @return Result of the function call
16893*/
16894WDI_Status
16895WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016896(
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 WDI_ControlBlockType* pWDICtx,
16898 WDI_EventInfoType* pEventData
16899)
16900{
16901 WDI_Status wdiStatus;
16902 eHalStatus halStatus;
16903 WDI_DelBARspCb wdiDelBARspCb;
16904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16905
16906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 -------------------------------------------------------------------------*/
16909 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16910 ( NULL == pEventData->pEventData))
16911 {
16912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 }
16917
16918 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16919
16920 /*-------------------------------------------------------------------------
16921 Extract response and send it to UMAC
16922 -------------------------------------------------------------------------*/
16923 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016925
16926 if ( eHAL_STATUS_SUCCESS == halStatus )
16927 {
16928 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16929 }
16930
16931 /*Notify UMAC*/
16932 wdiDelBARspCb( 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_ProcessDelBARsp*/
16936
16937#ifdef FEATURE_WLAN_CCX
16938/**
16939 @brief Process TSM Stats Rsp function (called when a response
16940 is being received over the bus from HAL)
16941
16942 @param pWDICtx: pointer to the WLAN DAL context
16943 pEventData: pointer to the event information structure
16944
16945 @see
16946 @return Result of the function call
16947*/
16948WDI_Status
16949WDI_ProcessTsmStatsRsp
16950(
16951 WDI_ControlBlockType* pWDICtx,
16952 WDI_EventInfoType* pEventData
16953)
16954{
16955 WDI_TsmRspCb wdiTsmStatsRspCb;
16956 tTsmStatsRspMsg halTsmStatsRspMsg;
16957 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16959
16960 /*-------------------------------------------------------------------------
16961 Sanity check
16962 -------------------------------------------------------------------------*/
16963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16964 ( NULL == pEventData->pEventData))
16965 {
16966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 WDI_ASSERT(0);
16969 return WDI_STATUS_E_FAILURE;
16970 }
16971
16972 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16973
16974 /*-------------------------------------------------------------------------
16975 Unpack HAL Response Message - the header was already extracted by the
16976 main Response Handling procedure
16977 -------------------------------------------------------------------------*/
16978 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16979 pEventData->pEventData,
16980 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16981
16982 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16983 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16984 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16985 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16986 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16987 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16988 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16989 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16990 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16991 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16992 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16993 halTsmStatsRspMsg.tsmStatsRspParams.status);
16994
16995 /*Notify UMAC*/
16996 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16997
16998 return WDI_STATUS_SUCCESS;
16999}/*WDI_ProcessTsmStatsRsp*/
17000
17001#endif
17002
17003
17004
17005/**
17006 @brief Process Flush AC Rsp function (called when a response
17007 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017008
17009 @param pWDICtx: pointer to the WLAN DAL context
17010 pEventData: pointer to the event information structure
17011
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 @see
17013 @return Result of the function call
17014*/
17015WDI_Status
17016WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017017(
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 WDI_ControlBlockType* pWDICtx,
17019 WDI_EventInfoType* pEventData
17020)
17021{
17022 WDI_Status wdiStatus;
17023 eHalStatus halStatus;
17024 WDI_FlushAcRspCb wdiFlushAcRspCb;
17025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17026
17027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 -------------------------------------------------------------------------*/
17030 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17031 ( NULL == pEventData->pEventData))
17032 {
17033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 }
17038
17039 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17040
17041 /*-------------------------------------------------------------------------
17042 Extract response and send it to UMAC
17043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 wpalMemoryCopy( &halStatus,
17045 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 sizeof(halStatus));
17047
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017049
17050 /*Notify UMAC*/
17051 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17052
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017054}/*WDI_ProcessFlushAcRsp*/
17055
17056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017059
17060 @param pWDICtx: pointer to the WLAN DAL context
17061 pEventData: pointer to the event information structure
17062
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 @see
17064 @return Result of the function call
17065*/
17066WDI_Status
17067WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017068(
Jeff Johnson295189b2012-06-20 16:38:30 -070017069 WDI_ControlBlockType* pWDICtx,
17070 WDI_EventInfoType* pEventData
17071)
17072{
17073 WDI_Status wdiStatus;
17074 eHalStatus halStatus;
17075 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17077
17078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 -------------------------------------------------------------------------*/
17081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17082 ( NULL == pEventData->pEventData))
17083 {
17084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 }
17089
17090 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17091
17092 /*-------------------------------------------------------------------------
17093 Extract response and send it to UMAC
17094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 wpalMemoryCopy( &halStatus,
17096 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 sizeof(halStatus));
17098
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017100
17101 /*Notify UMAC*/
17102 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17103
Jeff Johnsone7245742012-09-05 17:12:55 -070017104 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017105}/*WDI_ProcessBtAmpEventRsp*/
17106
17107
17108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017111
17112 @param pWDICtx: pointer to the WLAN DAL context
17113 pEventData: pointer to the event information structure
17114
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 @see
17116 @return Result of the function call
17117*/
17118WDI_Status
17119WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017120(
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 WDI_ControlBlockType* pWDICtx,
17122 WDI_EventInfoType* pEventData
17123)
17124{
17125 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17126 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17127 tAddStaSelfRspMsg halAddStaSelfRsp;
17128 WDI_AddStaParams wdiAddSTAParam = {0};
17129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17130
17131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 -------------------------------------------------------------------------*/
17134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17135 ( NULL == pEventData->pEventData))
17136 {
17137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 }
17142
Jeff Johnsone7245742012-09-05 17:12:55 -070017143 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17145
17146 /*-------------------------------------------------------------------------
17147 Extract response and send it to UMAC
17148 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17150 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17152
17153
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 wdiAddSTASelfParams.wdiStatus =
17155 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017156
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017161 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17163
17164 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17165 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17166 WDI_MAC_ADDR_LEN);
17167
17168
17169#ifdef HAL_SELF_STA_PER_BSS
17170
17171 /* At this point add the self-STA */
17172
17173 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17174 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17175 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17176
17177 //all DPU indices are the same for self STA
17178
17179 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17182 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17183 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17184 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17185 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17186
17187 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17188 WDI_MAC_ADDR_LEN);
17189
17190 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17191 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17195 {
17196 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17197 }
17198#endif
17199
17200 /*Notify UMAC*/
17201 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17202
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017204}/*WDI_ProcessAddSTASelfRsp*/
17205
17206
17207
17208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017209 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017211
17212 @param pWDICtx: pointer to the WLAN DAL context
17213 pEventData: pointer to the event information structure
17214
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 @see
17216 @return Result of the function call
17217*/
17218WDI_Status
17219WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017220(
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 WDI_ControlBlockType* pWDICtx,
17222 WDI_EventInfoType* pEventData
17223)
17224{
17225 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17226 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17227 tDelStaSelfRspParams delStaSelfRspParams;
17228 wpt_uint8 ucStaIdx;
17229
17230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17231
17232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 -------------------------------------------------------------------------*/
17235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17236 ( NULL == pEventData->pEventData))
17237 {
17238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 }
17243
17244 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17245
17246 /*-------------------------------------------------------------------------
17247 Extract response and send it to UMAC
17248 -------------------------------------------------------------------------*/
17249
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 (wpt_uint8*)pEventData->pEventData,
17252 sizeof(tDelStaSelfRspParams));
17253
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wdiDelStaSelfRspParams.wdiStatus =
17255 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017256
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17259 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17260 {
17261 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 delStaSelfRspParams.selfMacAddr,
17264 &ucStaIdx);
17265 if(WDI_STATUS_E_FAILURE == wdiStatus)
17266 {
17267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017268 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 }
17272 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17273 }
17274
17275 /*Notify UMAC*/
17276 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17277
17278 return WDI_STATUS_SUCCESS;
17279}
17280
Jeff Johnsone7245742012-09-05 17:12:55 -070017281#ifdef FEATURE_OEM_DATA_SUPPORT
17282/**
17283 @brief Start Oem Data Rsp function (called when a
17284 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017285
Jeff Johnsone7245742012-09-05 17:12:55 -070017286 @param pWDICtx: pointer to the WLAN DAL context
17287 pEventData: pointer to the event information structure
17288
17289 @see
17290 @return Result of the function call
17291*/
17292#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17293
17294WDI_Status
17295WDI_ProcessStartOemDataRsp
17296(
17297 WDI_ControlBlockType* pWDICtx,
17298 WDI_EventInfoType* pEventData
17299)
17300{
17301 WDI_oemDataRspCb wdiOemDataRspCb;
17302 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17303 tStartOemDataRspParams* halStartOemDataRspParams;
17304
17305 /*-------------------------------------------------------------------------
17306 Sanity check
17307 -------------------------------------------------------------------------*/
17308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17309 ( NULL == pEventData->pEventData))
17310 {
17311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017312 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017313 WDI_ASSERT(0);
17314 return WDI_STATUS_E_FAILURE;
17315 }
17316
17317 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17318
17319 /*-------------------------------------------------------------------------
17320 Extract response and send it to UMAC
17321 -------------------------------------------------------------------------*/
17322 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17323
17324
17325 //It is the responsibility of the application code to check for failure
17326 //conditions!
17327
17328 //Allocate memory for WDI OEM DATA RSP structure
17329 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17330
17331 if(NULL == wdiOemDataRspParams)
17332 {
17333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017334 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 pWDICtx, pEventData, pEventData->pEventData);
17336 WDI_ASSERT(0);
17337 return WDI_STATUS_E_FAILURE;
17338 }
17339
17340 /* Populate WDI structure members */
17341 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17342
17343 /*Notify UMAC*/
17344 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17345
17346 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17347 wpalMemoryFree(wdiOemDataRspParams);
17348
17349 return WDI_STATUS_SUCCESS;
17350}/*WDI_PrcoessStartOemDataRsp*/
17351#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017352
17353/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017355===========================================================================*/
17356
17357/**
17358 @brief Process Channel Switch Rsp function (called when a response
17359 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017360
17361 @param pWDICtx: pointer to the WLAN DAL context
17362 pEventData: pointer to the event information structure
17363
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 @see
17365 @return Result of the function call
17366*/
17367WDI_Status
17368WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017369(
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 WDI_ControlBlockType* pWDICtx,
17371 WDI_EventInfoType* pEventData
17372)
17373{
17374 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17375 WDI_SwitchChRspCb wdiChSwitchRspCb;
17376 tSwitchChannelRspParams halSwitchChannelRsp;
17377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17378
17379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 -------------------------------------------------------------------------*/
17382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17383 ( NULL == pEventData->pEventData))
17384 {
17385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 }
17390
17391 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17392
17393 /*-------------------------------------------------------------------------
17394 Extract response and send it to UMAC
17395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 (wpt_uint8*)pEventData->pEventData,
17398 sizeof(halSwitchChannelRsp));
17399
Jeff Johnsone7245742012-09-05 17:12:55 -070017400 wdiSwitchChRsp.wdiStatus =
17401 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17403
17404#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017406#endif
17407
17408 /*Notify UMAC*/
17409 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17410
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017412}/*WDI_ProcessChannelSwitchRsp*/
17413
17414
17415/**
17416 @brief Process Config STA Rsp function (called when a response
17417 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017418
17419 @param pWDICtx: pointer to the WLAN DAL context
17420 pEventData: pointer to the event information structure
17421
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 @see
17423 @return Result of the function call
17424*/
17425WDI_Status
17426WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017427(
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 WDI_ControlBlockType* pWDICtx,
17429 WDI_EventInfoType* pEventData
17430)
17431{
17432 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17433 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17434 WDI_AddStaParams wdiAddSTAParam;
17435
17436 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017438
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17441
17442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 -------------------------------------------------------------------------*/
17445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17446 ( NULL == pEventData->pEventData))
17447 {
17448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 }
17453
17454 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17455
17456 /*-------------------------------------------------------------------------
17457 Extract response and send it to UMAC
17458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17460 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017461 sizeof(halConfigStaRsp.configStaRspParams));
17462
17463
17464 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17465 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17466 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17467 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17468 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17469
17470 /* MAC Address of STA - take from cache as it does not come back in the
17471 response*/
17472 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017473 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017475
17476 wdiCfgSTAParams.wdiStatus =
17477 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017478
17479 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17480 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17481 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17482
17483 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17484 {
17485 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17486 {
17487 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017488 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17490 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017491
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 wdiAddSTAParam.ucHTCapable =
17496 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17497 wdiAddSTAParam.ucStaType =
17498 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017499 wdiAddSTAParam.ucRmfEnabled =
17500 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017501
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017503 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17504 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017505 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017506
17507 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17508 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17509 WDI_MAC_ADDR_LEN);
17510
17511 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17512 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17513 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017514
17515 if ( NULL == pBSSSes )
17516 {
17517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17518 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017519
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 }
17523
17524 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017534
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17536 }
17537 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17538 {
17539 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17540
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017554 halConfigStaRsp.configStaRspParams.ucUcastSig;
17555 }
17556 }
17557
17558 /*Notify UMAC*/
17559 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17560
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017562}/*WDI_ProcessConfigStaRsp*/
17563
17564
17565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017568
17569 @param pWDICtx: pointer to the WLAN DAL context
17570 pEventData: pointer to the event information structure
17571
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 @see
17573 @return Result of the function call
17574*/
17575WDI_Status
17576WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017577(
Jeff Johnson295189b2012-06-20 16:38:30 -070017578 WDI_ControlBlockType* pWDICtx,
17579 WDI_EventInfoType* pEventData
17580)
17581{
17582 WDI_Status wdiStatus;
17583 eHalStatus halStatus;
17584 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17585
17586 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17589
17590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 -------------------------------------------------------------------------*/
17593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17594 ( NULL == pEventData->pEventData))
17595 {
17596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 }
17601
17602 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17603
17604 wpalMutexAcquire(&pWDICtx->wptMutex);
17605
17606 /*If the link is being transitioned to idle - the BSS is to be deleted
17607 - this type of ending a session is possible when UMAC has failed an
17608 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17611 {
17612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017613 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017614 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17616 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17617 &pBSSSes);
17618
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 /*-----------------------------------------------------------------------
17620 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017621 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 -----------------------------------------------------------------------*/
17623 if ( NULL == pBSSSes )
17624 {
17625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17626 "Set link response received outside association session");
17627 }
17628 else
17629 {
17630 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17631 will be del BSS coming after this to stop the beaconing & cleaning up the
17632 sessions*/
17633 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17634 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17635 {
17636 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 -----------------------------------------------------------------------*/
17639 WDI_DeleteSession(pWDICtx, pBSSSes);
17640
17641 /*-----------------------------------------------------------------------
17642 Check to see if this association is in progress - if so disable the
17643 flag as this has ended
17644 -----------------------------------------------------------------------*/
17645 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 /*Association no longer in progress */
17648 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17649 /*Association no longer in progress - prepare pending assoc for processing*/
17650 WDI_DequeueAssocRequest(pWDICtx);
17651 }
17652 }
17653 }
17654 }
17655 /* If the link state has been set to POST ASSOC, reset the "association in
17656 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017657 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17659 {
17660 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17661 WDI_DequeueAssocRequest(pWDICtx);
17662 }
17663
17664 wpalMutexRelease(&pWDICtx->wptMutex);
17665
17666 /*-------------------------------------------------------------------------
17667 Extract response and send it to UMAC
17668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 wpalMemoryCopy( &halStatus,
17670 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 sizeof(halStatus));
17672
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017674
17675 /*Notify UMAC*/
17676 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17677
Jeff Johnsone7245742012-09-05 17:12:55 -070017678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017679}/*WDI_ProcessSetLinkStateRsp*/
17680
17681/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017682 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017684
17685 @param pWDICtx: pointer to the WLAN DAL context
17686 pEventData: pointer to the event information structure
17687
Jeff Johnson295189b2012-06-20 16:38:30 -070017688 @see
17689 @return Result of the function call
17690*/
17691WDI_Status
17692WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017693(
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 WDI_ControlBlockType* pWDICtx,
17695 WDI_EventInfoType* pEventData
17696)
17697{
17698 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17699 WDI_GetStatsRspCb wdiGetStatsRspCb;
17700 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017701
Jeff Johnson295189b2012-06-20 16:38:30 -070017702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17703
17704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 -------------------------------------------------------------------------*/
17707 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17708 ( NULL == pEventData->pEventData))
17709 {
17710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017711 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 }
17715
17716 /*-------------------------------------------------------------------------
17717 Extract response and send it to UMAC
17718 -------------------------------------------------------------------------*/
17719 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17720
17721 /*allocate the stats response buffer */
17722 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17723 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17724 + sizeof(WDI_GetStatsRspParamsType));
17725
17726 if(NULL == wdiGetStatsRsp)
17727 {
17728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017729 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 pWDICtx, pEventData, pEventData->pEventData);
17731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017733 }
17734
17735 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17736
17737 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17738 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17739 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17740 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17741 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17742 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17743
17744 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17745 wpalMemoryCopy(wdiGetStatsRsp + 1,
17746 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17747 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17748
17749 /*Notify UMAC*/
17750 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17751
17752 wpalMemoryFree(wdiGetStatsRsp);
17753
Jeff Johnsone7245742012-09-05 17:12:55 -070017754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017755}/*WDI_ProcessGetStatsRsp*/
17756
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017757#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17758/**
17759 @brief Process Get Roam Rssi Rsp function (called when a response is
17760 being received over the bus from HAL)
17761
17762 @param pWDICtx: pointer to the WLAN DAL context
17763 pEventData: pointer to the event information structure
17764
17765 @see
17766 @return Result of the function call
17767*/
17768WDI_Status
17769WDI_ProcessGetRoamRssiRsp
17770(
17771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
17775 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17776 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17777 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17779
17780 /*-------------------------------------------------------------------------
17781 Sanity check
17782 -------------------------------------------------------------------------*/
17783 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17784 ( NULL == pEventData->pEventData))
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17787 "%s: Invalid parameters", __func__);
17788 WDI_ASSERT(0);
17789 return WDI_STATUS_E_FAILURE;
17790 }
17791
17792 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17793 if(NULL == wdiGetRoamRssiRspCb)
17794 {
17795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17796 "%s: call back function is NULL", __func__);
17797 WDI_ASSERT(0);
17798 return WDI_STATUS_E_FAILURE;
17799 }
17800
17801 /*-------------------------------------------------------------------------
17802 Extract response and send it to UMAC
17803 -------------------------------------------------------------------------*/
17804 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17805 pEventData->pEventData,
17806 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17807
17808 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17809 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17810 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17811
17812 /*Notify UMAC*/
17813 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17814
17815 return WDI_STATUS_SUCCESS;
17816}/*WDI_ProcessGetRoamRssiRsp*/
17817#endif
17818
Jeff Johnson295189b2012-06-20 16:38:30 -070017819
17820/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017821 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017823
17824 @param pWDICtx: pointer to the WLAN DAL context
17825 pEventData: pointer to the event information structure
17826
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 @see
17828 @return Result of the function call
17829*/
17830WDI_Status
17831WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017832(
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 WDI_ControlBlockType* pWDICtx,
17834 WDI_EventInfoType* pEventData
17835)
17836{
17837 WDI_Status wdiStatus;
17838 eHalStatus halStatus;
17839 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17841
17842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 -------------------------------------------------------------------------*/
17845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17846 ( NULL == pEventData->pEventData))
17847 {
17848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 }
17853
17854 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17855
17856 /*-------------------------------------------------------------------------
17857 Extract response and send it to UMAC
17858 -------------------------------------------------------------------------*/
17859 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017860 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017861
17862 /*Notify UMAC*/
17863 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17864
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017866}/*WDI_ProcessUpdateCfgRsp*/
17867
17868
17869
17870/**
17871 @brief Process Add BA 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_ProcessAddBARsp
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_AddBARspCb wdiAddBARspCb;
17888
17889 tAddBARspParams halAddBARsp;
17890 WDI_AddBARspinfoType wdiAddBARsp;
17891
17892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17893
17894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 -------------------------------------------------------------------------*/
17897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17898 ( NULL == pEventData->pEventData))
17899 {
17900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 }
17905
17906 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17907
17908 /*-------------------------------------------------------------------------
17909 Extract response and send it to UMAC
17910 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 wpalMemoryCopy( &halAddBARsp,
17912 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 sizeof(halAddBARsp));
17914
17915 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17916
Jeff Johnson43971f52012-07-17 12:26:56 -070017917 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017918 {
17919 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17920 }
17921
17922 /*Notify UMAC*/
17923 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17924
Jeff Johnsone7245742012-09-05 17:12:55 -070017925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017926}/*WDI_ProcessAddSessionBARsp*/
17927
17928/**
17929 @brief Process Add BA Rsp function (called when a response
17930 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017931
17932 @param pWDICtx: pointer to the WLAN DAL context
17933 pEventData: pointer to the event information structure
17934
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 @see
17936 @return Result of the function call
17937*/
17938WDI_Status
17939WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017940(
Jeff Johnson295189b2012-06-20 16:38:30 -070017941 WDI_ControlBlockType* pWDICtx,
17942 WDI_EventInfoType* pEventData
17943)
17944{
17945 WDI_TriggerBARspCb wdiTriggerBARspCb;
17946
17947 tTriggerBARspParams* halTriggerBARsp;
17948 tTriggerBaRspCandidate* halBaCandidate;
17949 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17950 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17951 wpt_uint16 index;
17952 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017953 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17955
17956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 -------------------------------------------------------------------------*/
17959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17960 ( NULL == pEventData->pEventData))
17961 {
17962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017966 }
17967
17968 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17969
17970 /*-------------------------------------------------------------------------
17971 Extract response and send it to UMAC
17972 -------------------------------------------------------------------------*/
17973 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17974
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017975 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17976
17977 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17978 {
17979 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017983 if(NULL == wdiTriggerBARsp)
17984 {
17985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017986 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017987 pWDICtx, pEventData, pEventData->pEventData);
17988 WDI_ASSERT(0);
17989 return WDI_STATUS_E_FAILURE;
17990 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017991
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017992 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17993
Jeff Johnson295189b2012-06-20 16:38:30 -070017994 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017995 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17997
17998 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17999 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18000
18001 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18002 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18005 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18006 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018007 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018009 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18011 }
18012 wdiTriggerBARspCandidate++;
18013 halBaCandidate++;
18014 }
18015 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018016 else
18017 {
18018 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18019
18020 if(NULL == wdiTriggerBARsp)
18021 {
18022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080018023 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070018024 pWDICtx, pEventData, pEventData->pEventData);
18025 WDI_ASSERT(0);
18026 return WDI_STATUS_E_FAILURE;
18027 }
18028
18029 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18030
18031 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018032
18033 /*Notify UMAC*/
18034 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18035
18036 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018038}/*WDI_ProcessAddSessionBARsp*/
18039
18040/**
18041 @brief Process Update Beacon Params Rsp function (called when a response
18042 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018043
18044 @param pWDICtx: pointer to the WLAN DAL context
18045 pEventData: pointer to the event information structure
18046
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 @see
18048 @return Result of the function call
18049*/
18050WDI_Status
18051WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018052(
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_ControlBlockType* pWDICtx,
18054 WDI_EventInfoType* pEventData
18055)
18056{
18057 WDI_Status wdiStatus;
18058 eHalStatus halStatus;
18059 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18061
18062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 -------------------------------------------------------------------------*/
18065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18066 ( NULL == pEventData->pEventData))
18067 {
18068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 }
18073
18074 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18075
18076 /*-------------------------------------------------------------------------
18077 Extract response and send it to UMAC
18078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 wpalMemoryCopy( &halStatus,
18080 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 sizeof(halStatus));
18082
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018084
18085 /*Notify UMAC*/
18086 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18087
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018089}/*WDI_ProcessUpdateBeaconParamsRsp*/
18090
18091/**
18092 @brief Process Send Beacon template Rsp function (called when a response
18093 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018094
18095 @param pWDICtx: pointer to the WLAN DAL context
18096 pEventData: pointer to the event information structure
18097
Jeff Johnson295189b2012-06-20 16:38:30 -070018098 @see
18099 @return Result of the function call
18100*/
18101WDI_Status
18102WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018103(
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 WDI_ControlBlockType* pWDICtx,
18105 WDI_EventInfoType* pEventData
18106)
18107{
18108 WDI_Status wdiStatus;
18109 eHalStatus halStatus;
18110 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18112
18113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 -------------------------------------------------------------------------*/
18116 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18117 ( NULL == pEventData->pEventData))
18118 {
18119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 }
18124
18125 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18126
18127 /*-------------------------------------------------------------------------
18128 Extract response and send it to UMAC
18129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 wpalMemoryCopy( &halStatus,
18131 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018132 sizeof(halStatus));
18133
Jeff Johnsone7245742012-09-05 17:12:55 -070018134 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018135
18136 /*Notify UMAC*/
18137 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18138
Jeff Johnsone7245742012-09-05 17:12:55 -070018139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018140}/*WDI_ProcessSendBeaconParamsRsp*/
18141
Jeff Johnsone7245742012-09-05 17:12:55 -070018142
Jeff Johnson295189b2012-06-20 16:38:30 -070018143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018144 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018146
18147 @param pWDICtx: pointer to the WLAN DAL context
18148 pEventData: pointer to the event information structure
18149
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 @see
18151 @return Result of the function call
18152*/
18153WDI_Status
18154WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018155(
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 WDI_ControlBlockType* pWDICtx,
18157 WDI_EventInfoType* pEventData
18158)
18159{
18160 WDI_Status wdiStatus;
18161 eHalStatus halStatus;
18162 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18164
18165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 -------------------------------------------------------------------------*/
18168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18169 ( NULL == pEventData->pEventData))
18170 {
18171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 }
18176
18177 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18178
18179 /*-------------------------------------------------------------------------
18180 Extract response and send it to UMAC
18181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 wpalMemoryCopy( &halStatus,
18183 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 sizeof(halStatus));
18185
Jeff Johnsone7245742012-09-05 17:12:55 -070018186 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018187
18188 /*Notify UMAC*/
18189 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18190
Jeff Johnsone7245742012-09-05 17:12:55 -070018191 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018192}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18193
18194 /**
18195 @brief Process Set Max Tx Power Rsp function (called when a response
18196 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018197
18198 @param pWDICtx: pointer to the WLAN DAL context
18199 pEventData: pointer to the event information structure
18200
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 @see
18202 @return Result of the function call
18203*/
18204WDI_Status
18205WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018206(
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 WDI_ControlBlockType* pWDICtx,
18208 WDI_EventInfoType* pEventData
18209)
18210{
18211 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018212
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018214
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18217
18218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 -------------------------------------------------------------------------*/
18221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18222 ( NULL == pEventData->pEventData))
18223 {
18224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 }
18229
18230 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18231
18232 /*-------------------------------------------------------------------------
18233 Extract response and send it to UMAC
18234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18236 pEventData->pEventData,
18237 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018238
18239 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18240 {
18241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18242 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018244 }
18245
Jeff Johnsone7245742012-09-05 17:12:55 -070018246 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018247 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018249
18250 /*Notify UMAC*/
18251 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18252
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018254}
18255
schangd82195a2013-03-13 18:41:24 -070018256 /**
18257 @brief Process Set Tx Power Rsp function (called when a response
18258 is being received over the bus from HAL)
18259
18260 @param pWDICtx: pointer to the WLAN DAL context
18261 pEventData: pointer to the event information structure
18262
18263 @see
18264 @return Result of the function call
18265*/
18266WDI_Status
18267WDI_ProcessSetTxPowerRsp
18268(
18269 WDI_ControlBlockType* pWDICtx,
18270 WDI_EventInfoType* pEventData
18271)
18272{
18273 tSetTxPwrRspMsg halTxpowerrsp;
18274 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18275 WDA_SetTxPowerRspCb wdiReqStatusCb;
18276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18277
18278 /*-------------------------------------------------------------------------
18279 Sanity check
18280 -------------------------------------------------------------------------*/
18281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18282 ( NULL == pEventData->pEventData))
18283 {
18284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18285 "%s: Invalid parameters", __func__);
18286 WDI_ASSERT(0);
18287 return WDI_STATUS_E_FAILURE;
18288 }
18289
18290 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18291
18292 /*-------------------------------------------------------------------------
18293 Extract response and send it to UMAC
18294 -------------------------------------------------------------------------*/
18295 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18296 pEventData->pEventData,
18297 sizeof(halTxpowerrsp.setTxPwrRspParams));
18298
18299 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18300 {
18301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18302 "Error status returned in Set Tx Power Response ");
18303 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18304 return WDI_STATUS_E_FAILURE;
18305 }
18306
18307 wdiSetTxPowerRspMsg.wdiStatus =
18308 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18309
18310 /*Notify UMAC*/
18311 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18312
18313 return WDI_STATUS_SUCCESS;
18314}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018315#ifdef FEATURE_WLAN_TDLS
18316/**
18317 @brief Process TDLS Link Establish Rsp function (called
18318 when a response is being received over the bus from HAL)
18319
18320 @param pWDICtx: pointer to the WLAN DAL context
18321 pEventData: pointer to the event information structure
18322
18323 @see
18324 @return Result of the function call
18325*/
18326WDI_Status
18327WDI_ProcessLinkEstablishReqRsp
18328(
18329 WDI_ControlBlockType* pWDICtx,
18330 WDI_EventInfoType* pEventData
18331)
18332{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018333 eHalStatus halStatus;
18334 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018335 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18336 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18337
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18339
18340 /*-------------------------------------------------------------------------
18341 Sanity check
18342 -------------------------------------------------------------------------*/
18343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18344 ( NULL == pEventData->pEventData))
18345 {
18346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18347 "%s: Invalid parameters", __func__);
18348 WDI_ASSERT(0);
18349 return WDI_STATUS_E_FAILURE;
18350 }
18351
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018352 /*-------------------------------------------------------------------------
18353 Extract indication and send it to UMAC
18354 -------------------------------------------------------------------------*/
18355 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18356 pEventData->pEventData,
18357 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18358
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018359 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18360
18361 /*-------------------------------------------------------------------------
18362 Extract response and send it to UMAC
18363 -------------------------------------------------------------------------*/
18364 wpalMemoryCopy( &halStatus,
18365 pEventData->pEventData,
18366 sizeof(halStatus));
18367
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018368 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18369 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018370
18371 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018372 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018373
18374 return WDI_STATUS_SUCCESS;
18375}/*WDI_ProcessLinkEstablishReqRsp*/
18376#endif
schangd82195a2013-03-13 18:41:24 -070018377
Jeff Johnson295189b2012-06-20 16:38:30 -070018378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018379 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018381
18382 @param pWDICtx: pointer to the WLAN DAL context
18383 pEventData: pointer to the event information structure
18384
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 @see
18386 @return Result of the function call
18387*/
18388WDI_Status
18389WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018390(
Jeff Johnson295189b2012-06-20 16:38:30 -070018391 WDI_ControlBlockType* pWDICtx,
18392 WDI_EventInfoType* pEventData
18393)
18394{
18395 WDI_Status wdiStatus;
18396 eHalStatus halStatus;
18397 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18399
18400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 -------------------------------------------------------------------------*/
18403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18404 ( NULL == pEventData->pEventData))
18405 {
18406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 }
18411
18412 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18413
18414 /*-------------------------------------------------------------------------
18415 Extract response and send it to UMAC
18416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018417 wpalMemoryCopy( &halStatus,
18418 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 sizeof(halStatus));
18420
Jeff Johnsone7245742012-09-05 17:12:55 -070018421 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018422
18423 /*Notify UMAC*/
18424 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18425
Jeff Johnsone7245742012-09-05 17:12:55 -070018426 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018427}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018428/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018429 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018431
18432 @param pWDICtx: pointer to the WLAN DAL context
18433 pEventData: pointer to the event information structure
18434
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 @see
18436 @return Result of the function call
18437*/
18438WDI_Status
18439WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018440(
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 WDI_ControlBlockType* pWDICtx,
18442 WDI_EventInfoType* pEventData
18443)
18444{
18445 WDI_Status wdiStatus;
18446 eHalStatus halStatus;
18447 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018448 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18450
18451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 -------------------------------------------------------------------------*/
18454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18455 ( NULL == pEventData->pEventData))
18456 {
18457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 }
18462
18463 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18464
18465 /*-------------------------------------------------------------------------
18466 Extract response and send it to UMAC
18467 -------------------------------------------------------------------------*/
18468 halStatus = *((eHalStatus*)pEventData->pEventData);
18469
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018471
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018472 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18473 * Other module states are taken care by PMC.
18474 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18475 */
18476 if (wdiStatus != WDI_STATUS_SUCCESS) {
18477
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18479 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18480 halStatus);
18481 /* Call Back is not required as we are putting the DXE in FULL
18482 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018483 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18484
18485 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018487 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018488 WDI_ASSERT(0);
18489 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018490 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 /*Notify UMAC*/
18492 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18493
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018495}/*WDI_ProcessEnterImpsRsp*/
18496
18497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018500
18501 @param pWDICtx: pointer to the WLAN DAL context
18502 pEventData: pointer to the event information structure
18503
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 @see
18505 @return Result of the function call
18506*/
18507WDI_Status
18508WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018509(
Jeff Johnson295189b2012-06-20 16:38:30 -070018510 WDI_ControlBlockType* pWDICtx,
18511 WDI_EventInfoType* pEventData
18512)
18513{
18514 WDI_Status wdiStatus;
18515 eHalStatus halStatus;
18516 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018517 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18519
18520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 -------------------------------------------------------------------------*/
18523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18524 ( NULL == pEventData->pEventData))
18525 {
18526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 }
18531
18532 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18533
18534 /*-------------------------------------------------------------------------
18535 Extract response and send it to UMAC
18536 -------------------------------------------------------------------------*/
18537 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018539
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018540 if (halStatus != eHAL_STATUS_SUCCESS)
18541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18542 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18543
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018545 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18546 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18547 {
18548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018549 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018550 WDI_ASSERT(0);
18551 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 /*Notify UMAC*/
18553 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18554
Jeff Johnsone7245742012-09-05 17:12:55 -070018555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018556}/*WDI_ProcessExitImpsRsp*/
18557
18558/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018561
18562 @param pWDICtx: pointer to the WLAN DAL context
18563 pEventData: pointer to the event information structure
18564
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 @see
18566 @return Result of the function call
18567*/
18568WDI_Status
18569WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018570(
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 WDI_ControlBlockType* pWDICtx,
18572 WDI_EventInfoType* pEventData
18573)
18574{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018575 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18576 tHalEnterBmpsRspParams halEnterBmpsRsp;
18577 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18578 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018579 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18581
18582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 -------------------------------------------------------------------------*/
18585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18586 ( NULL == pEventData->pEventData))
18587 {
18588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 }
18593
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018595 Extract response and send it to UMAC
18596 -------------------------------------------------------------------------*/
18597 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18598 {
18599 wpalMemoryCopy( &halEnterBmpsRsp,
18600 pEventData->pEventData,
18601 sizeof(halEnterBmpsRsp));
18602
18603 //Used to print debug message
18604 halStatus = halEnterBmpsRsp.status;
18605 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18606 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18607 }
18608 else
18609 {
18610 halStatus = *((eHalStatus*)pEventData->pEventData);
18611 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18612 }
18613
18614 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018615
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018616 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18617 * Other module states are taken care by PMC.
18618 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18619 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018620 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18621 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018622
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018624 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18625 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018626 /* Call Back is not required as we are putting the DXE in FULL
18627 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018628 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18629 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18630 {
18631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018632 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018633 WDI_ASSERT(0);
18634 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018635 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018636 }
18637
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018639 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018640
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018642}/*WDI_ProcessEnterBmpsRsp*/
18643
18644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018647
18648 @param pWDICtx: pointer to the WLAN DAL context
18649 pEventData: pointer to the event information structure
18650
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 @see
18652 @return Result of the function call
18653*/
18654WDI_Status
18655WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018656(
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 WDI_ControlBlockType* pWDICtx,
18658 WDI_EventInfoType* pEventData
18659)
18660{
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 eHalStatus halStatus;
18662 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018663 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018664 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18665 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18667
18668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 -------------------------------------------------------------------------*/
18671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18672 ( NULL == pEventData->pEventData))
18673 {
18674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 }
18679
18680 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18681
18682 /*-------------------------------------------------------------------------
18683 Extract response and send it to UMAC
18684 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018685
18686 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18687 {
18688 wpalMemoryCopy( &halExitBmpsRsp,
18689 pEventData->pEventData,
18690 sizeof(halExitBmpsRsp));
18691
18692 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18693 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18694 }
18695 else
18696 {
18697 halStatus = *((eHalStatus*)pEventData->pEventData);
18698 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18699 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018700
18701 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018702 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18703 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18704 {
18705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain5f7589c2013-11-17 22:05:35 -080018706 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018707 WDI_ASSERT(0);
18708 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018709 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18710
18711 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018712 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018713
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018715}/*WDI_ProcessExitBmpsRsp*/
18716
18717/**
18718 @brief Process Enter UAPSD Rsp function (called when a response
18719 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018720
18721 @param pWDICtx: pointer to the WLAN DAL context
18722 pEventData: pointer to the event information structure
18723
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 @see
18725 @return Result of the function call
18726*/
18727WDI_Status
18728WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018729(
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 WDI_ControlBlockType* pWDICtx,
18731 WDI_EventInfoType* pEventData
18732)
18733{
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018735 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018737 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18738
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18740
18741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 -------------------------------------------------------------------------*/
18744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18745 ( NULL == pEventData->pEventData))
18746 {
18747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 }
18752
18753 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18754
18755 /*-------------------------------------------------------------------------
18756 Extract response and send it to UMAC
18757 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018758 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18759 {
18760 wpalMemoryCopy( &halEnterUapsdRsp,
18761 pEventData->pEventData,
18762 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018763
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018764 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18765 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18766 }
18767 else
18768 {
18769 halStatus = *((eHalStatus*)pEventData->pEventData);
18770 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18771 }
18772
18773 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018774 {
18775 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18776 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18777 // the traffic to decide when to suspend the trigger frames when there is no traffic
18778 // activity on the trigger enabled ACs
18779 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18780
18781#ifdef WLAN_PERF
18782 // Increment the BD signature to refresh the fast path BD utilization
18783 pWDICtx->uBdSigSerialNum++;
18784#endif
18785 }
18786
18787 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018788 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018789
Jeff Johnsone7245742012-09-05 17:12:55 -070018790 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018791}/*WDI_ProcessEnterUapsdRsp*/
18792
18793/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018794 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018796
18797 @param pWDICtx: pointer to the WLAN DAL context
18798 pEventData: pointer to the event information structure
18799
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 @see
18801 @return Result of the function call
18802*/
18803WDI_Status
18804WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018805(
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 WDI_ControlBlockType* pWDICtx,
18807 WDI_EventInfoType* pEventData
18808)
18809{
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 eHalStatus halStatus;
18811 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018812 tHalExitUapsdRspParams halExitUapsdRsp;
18813 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18815
18816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 -------------------------------------------------------------------------*/
18819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18820 ( NULL == pEventData->pEventData))
18821 {
18822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 }
18827
18828 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18829
18830 /*-------------------------------------------------------------------------
18831 Extract response and send it to UMAC
18832 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018833 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18834 {
18835 wpalMemoryCopy( &halExitUapsdRsp,
18836 pEventData->pEventData,
18837 sizeof(halExitUapsdRsp));
18838
18839 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18840 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18841 }
18842 else
18843 {
18844 halStatus = *((eHalStatus*)pEventData->pEventData);
18845 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18846 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18848 // directly instead of the FW WQ.
18849 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18850
18851#ifdef WLAN_PERF
18852 // Increment the BD signature to refresh the fast path BD utilization
18853 pWDICtx->uBdSigSerialNum++;
18854#endif
18855
18856 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018857 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018858
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018860}/*WDI_ProcessExitUapsdRsp*/
18861
18862/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018865
18866 @param pWDICtx: pointer to the WLAN DAL context
18867 pEventData: pointer to the event information structure
18868
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 @see
18870 @return Result of the function call
18871*/
18872WDI_Status
18873WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018874(
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 WDI_ControlBlockType* pWDICtx,
18876 WDI_EventInfoType* pEventData
18877)
18878{
18879 WDI_Status wdiStatus;
18880 eHalStatus halStatus;
18881 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18883
18884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018886 -------------------------------------------------------------------------*/
18887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18888 ( NULL == pEventData->pEventData))
18889 {
18890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 }
18895
18896 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18897
18898 /*-------------------------------------------------------------------------
18899 Extract response and send it to UMAC
18900 -------------------------------------------------------------------------*/
18901 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018902 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018903
18904 /*Notify UMAC*/
18905 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18906
Jeff Johnsone7245742012-09-05 17:12:55 -070018907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018908}/*WDI_ProcessSetUapsdAcParamsRsp*/
18909
18910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018911 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018912 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018913
18914 @param pWDICtx: pointer to the WLAN DAL context
18915 pEventData: pointer to the event information structure
18916
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 @see
18918 @return Result of the function call
18919*/
18920WDI_Status
18921WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018922(
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 WDI_ControlBlockType* pWDICtx,
18924 WDI_EventInfoType* pEventData
18925)
18926{
18927 WDI_Status wdiStatus;
18928 eHalStatus halStatus;
18929 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18931
18932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018933 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 -------------------------------------------------------------------------*/
18935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18936 ( NULL == pEventData->pEventData))
18937 {
18938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 }
18943
18944 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18945
18946 /*-------------------------------------------------------------------------
18947 Extract response and send it to UMAC
18948 -------------------------------------------------------------------------*/
18949 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018950 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018951
18952 /*Notify UMAC*/
18953 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18954
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018956}/*WDI_ProcessUpdateUapsdParamsRsp*/
18957
18958/**
18959 @brief Process Configure RXP filter Rsp function (called when a
18960 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
18962 @param pWDICtx: pointer to the WLAN DAL context
18963 pEventData: pointer to the event information structure
18964
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 @see
18966 @return Result of the function call
18967*/
18968WDI_Status
18969WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018970(
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 WDI_ControlBlockType* pWDICtx,
18972 WDI_EventInfoType* pEventData
18973)
18974{
18975 WDI_Status wdiStatus;
18976 eHalStatus halStatus;
18977 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18979
18980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 -------------------------------------------------------------------------*/
18983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18984 ( NULL == pEventData->pEventData))
18985 {
18986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 }
18991
18992 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18993
18994 /*-------------------------------------------------------------------------
18995 Extract response and send it to UMAC
18996 -------------------------------------------------------------------------*/
18997 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018999
19000 /*Notify UMAC*/
19001 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19002
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019004}/*WDI_ProcessConfigureRxpFilterRsp*/
19005
19006/**
19007 @brief Process Set beacon filter Rsp function (called when a
19008 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019009
19010 @param pWDICtx: pointer to the WLAN DAL context
19011 pEventData: pointer to the event information structure
19012
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 @see
19014 @return Result of the function call
19015*/
19016WDI_Status
19017WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019018(
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 WDI_ControlBlockType* pWDICtx,
19020 WDI_EventInfoType* pEventData
19021)
19022{
19023 WDI_Status wdiStatus;
19024 eHalStatus halStatus;
19025 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19027
19028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 -------------------------------------------------------------------------*/
19031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19032 ( NULL == pEventData->pEventData))
19033 {
19034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 }
19039
19040 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19041
19042 /*-------------------------------------------------------------------------
19043 Extract response and send it to UMAC
19044 -------------------------------------------------------------------------*/
19045 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019047
19048 /*Notify UMAC*/
19049 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19050
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019052}/*WDI_ProcessSetBeaconFilterRsp*/
19053
19054/**
19055 @brief Process remove beacon filter Rsp function (called when a
19056 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019057
19058 @param pWDICtx: pointer to the WLAN DAL context
19059 pEventData: pointer to the event information structure
19060
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 @see
19062 @return Result of the function call
19063*/
19064WDI_Status
19065WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019066(
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 WDI_ControlBlockType* pWDICtx,
19068 WDI_EventInfoType* pEventData
19069)
19070{
19071 WDI_Status wdiStatus;
19072 eHalStatus halStatus;
19073 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19075
19076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 -------------------------------------------------------------------------*/
19079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19080 ( NULL == pEventData->pEventData))
19081 {
19082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 }
19087
19088 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19089
19090 /*-------------------------------------------------------------------------
19091 Extract response and send it to UMAC
19092 -------------------------------------------------------------------------*/
19093 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019095
19096 /*Notify UMAC*/
19097 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19098
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019100}/*WDI_ProcessRemBeaconFilterRsp*/
19101
19102/**
19103 @brief Process set RSSI thresholds Rsp function (called when a
19104 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019105
19106 @param pWDICtx: pointer to the WLAN DAL context
19107 pEventData: pointer to the event information structure
19108
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 @see
19110 @return Result of the function call
19111*/
19112WDI_Status
19113WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019114(
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 WDI_ControlBlockType* pWDICtx,
19116 WDI_EventInfoType* pEventData
19117)
19118{
19119 WDI_Status wdiStatus;
19120 eHalStatus halStatus;
19121 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19123
19124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 -------------------------------------------------------------------------*/
19127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19128 ( NULL == pEventData->pEventData))
19129 {
19130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 }
19135
19136 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19137
19138 /*-------------------------------------------------------------------------
19139 Extract response and send it to UMAC
19140 -------------------------------------------------------------------------*/
19141 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019142 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019143
19144 /*Notify UMAC*/
19145 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19146
Jeff Johnsone7245742012-09-05 17:12:55 -070019147 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019148}/*WDI_ProcessSetRSSIThresoldsRsp*/
19149
19150/**
19151 @brief Process host offload Rsp function (called when a
19152 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019153
19154 @param pWDICtx: pointer to the WLAN DAL context
19155 pEventData: pointer to the event information structure
19156
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 @see
19158 @return Result of the function call
19159*/
19160WDI_Status
19161WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019162(
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 WDI_ControlBlockType* pWDICtx,
19164 WDI_EventInfoType* pEventData
19165)
19166{
19167 WDI_Status wdiStatus;
19168 eHalStatus halStatus;
19169 WDI_HostOffloadCb wdiHostOffloadCb;
19170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19171
19172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019174 -------------------------------------------------------------------------*/
19175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19176 ( NULL == pEventData->pEventData))
19177 {
19178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019182 }
19183
19184 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19185
19186 /*-------------------------------------------------------------------------
19187 Extract response and send it to UMAC
19188 -------------------------------------------------------------------------*/
19189 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019190 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019191
19192 /*Notify UMAC*/
19193 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19194
Jeff Johnsone7245742012-09-05 17:12:55 -070019195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019196}/*WDI_ProcessHostOffloadRsp*/
19197
19198/**
19199 @brief Process keep alive Rsp function (called when a
19200 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019201
19202 @param pWDICtx: pointer to the WLAN DAL context
19203 pEventData: pointer to the event information structure
19204
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 @see
19206 @return Result of the function call
19207*/
19208WDI_Status
19209WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019210(
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 WDI_ControlBlockType* pWDICtx,
19212 WDI_EventInfoType* pEventData
19213)
19214{
19215 WDI_Status wdiStatus;
19216 eHalStatus halStatus;
19217 WDI_KeepAliveCb wdiKeepAliveCb;
19218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19220 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19221
19222
19223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 -------------------------------------------------------------------------*/
19226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19227 ( NULL == pEventData->pEventData))
19228 {
19229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 }
19234
Jeff Johnsone7245742012-09-05 17:12:55 -070019235 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19236
Jeff Johnson295189b2012-06-20 16:38:30 -070019237 /*-------------------------------------------------------------------------
19238 Extract response and send it to UMAC
19239 -------------------------------------------------------------------------*/
19240 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019241 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019242
19243 /*Notify UMAC*/
19244 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19245
Jeff Johnsone7245742012-09-05 17:12:55 -070019246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247}/*WDI_ProcessKeepAliveRsp*/
19248
19249/**
19250 @brief Process wowl add ptrn Rsp function (called when a
19251 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019252
19253 @param pWDICtx: pointer to the WLAN DAL context
19254 pEventData: pointer to the event information structure
19255
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 @see
19257 @return Result of the function call
19258*/
19259WDI_Status
19260WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019261(
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 WDI_ControlBlockType* pWDICtx,
19263 WDI_EventInfoType* pEventData
19264)
19265{
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 eHalStatus halStatus;
19267 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019268 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19269 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19270
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19272
19273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 -------------------------------------------------------------------------*/
19276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19277 ( NULL == pEventData->pEventData))
19278 {
19279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 }
19284
19285 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19286
19287 /*-------------------------------------------------------------------------
19288 Extract response and send it to UMAC
19289 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019290 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19291 {
19292 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19293 pEventData->pEventData,
19294 sizeof(halAddWowlBcastPtrRsp));
19295
19296 wdiWowlAddBcPtrRsp.wdiStatus =
19297 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19298 }
19299 else
19300 {
19301 halStatus = *((eHalStatus*)pEventData->pEventData);
19302 wdiWowlAddBcPtrRsp.wdiStatus =
19303 WDI_HAL_2_WDI_STATUS(halStatus);
19304 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019305
19306 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019307 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019308
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019310}/*WDI_ProcessWowlAddBcPtrnRsp*/
19311
19312/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019313 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019315
19316 @param pWDICtx: pointer to the WLAN DAL context
19317 pEventData: pointer to the event information structure
19318
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 @see
19320 @return Result of the function call
19321*/
19322WDI_Status
19323WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019324(
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 WDI_ControlBlockType* pWDICtx,
19326 WDI_EventInfoType* pEventData
19327)
19328{
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 eHalStatus halStatus;
19330 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019331 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19332 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19334
19335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019337 -------------------------------------------------------------------------*/
19338 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19339 ( NULL == pEventData->pEventData))
19340 {
19341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 }
19346
19347 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19348
19349 /*-------------------------------------------------------------------------
19350 Extract response and send it to UMAC
19351 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019352 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19353 {
19354 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19355 pEventData->pEventData,
19356 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019357
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019358 wdiWowlDelBcstPtrRsp.wdiStatus =
19359 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19360 }
19361 else
19362 {
19363 halStatus = *((eHalStatus*)pEventData->pEventData);
19364 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19365 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019367 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019368
Jeff Johnsone7245742012-09-05 17:12:55 -070019369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019370}/*WDI_ProcessWowlDelBcPtrnRsp*/
19371
19372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019375
19376 @param pWDICtx: pointer to the WLAN DAL context
19377 pEventData: pointer to the event information structure
19378
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 @see
19380 @return Result of the function call
19381*/
19382WDI_Status
19383WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019384(
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 WDI_ControlBlockType* pWDICtx,
19386 WDI_EventInfoType* pEventData
19387)
19388{
Jeff Johnson295189b2012-06-20 16:38:30 -070019389 eHalStatus halStatus;
19390 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019391 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19392 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19394
19395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 -------------------------------------------------------------------------*/
19398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19399 ( NULL == pEventData->pEventData))
19400 {
19401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 }
19406
19407 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19408
19409 /*-------------------------------------------------------------------------
19410 Extract response and send it to UMAC
19411 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019412 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19413 {
19414 wpalMemoryCopy( &halEnterWowlRspParams,
19415 (wpt_uint8*)pEventData->pEventData,
19416 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019417
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019418 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19419 wdiwowlEnterRsp.status =
19420 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19421 }
19422 else
19423 {
19424 halStatus = *((eHalStatus*)pEventData->pEventData);
19425 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19426 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019428 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019429
Jeff Johnsone7245742012-09-05 17:12:55 -070019430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019431}/*WDI_ProcessWowlEnterRsp*/
19432
19433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019434 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019435 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019436
19437 @param pWDICtx: pointer to the WLAN DAL context
19438 pEventData: pointer to the event information structure
19439
Jeff Johnson295189b2012-06-20 16:38:30 -070019440 @see
19441 @return Result of the function call
19442*/
19443WDI_Status
19444WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019445(
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 WDI_ControlBlockType* pWDICtx,
19447 WDI_EventInfoType* pEventData
19448)
19449{
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 eHalStatus halStatus;
19451 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019452 tHalExitWowlRspParams halExitWowlRspParams;
19453 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19454
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19456
19457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 -------------------------------------------------------------------------*/
19460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19461 ( NULL == pEventData->pEventData))
19462 {
19463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 }
19468
19469 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19470
19471 /*-------------------------------------------------------------------------
19472 Extract response and send it to UMAC
19473 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019474 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19475 {
19476 wpalMemoryCopy( &halExitWowlRspParams,
19477 pEventData->pEventData,
19478 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019479
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019480 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19481 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19482
19483 }
19484 else
19485 {
19486 halStatus = *((eHalStatus*)pEventData->pEventData);
19487 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19488 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019490 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019491
Jeff Johnsone7245742012-09-05 17:12:55 -070019492 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019493}/*WDI_ProcessWowlExitRsp*/
19494
19495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019496 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 (called when a response is being received over the bus
19498 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019499
19500 @param pWDICtx: pointer to the WLAN DAL context
19501 pEventData: pointer to the event information structure
19502
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 @see
19504 @return Result of the function call
19505*/
19506WDI_Status
19507WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019508(
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 WDI_ControlBlockType* pWDICtx,
19510 WDI_EventInfoType* pEventData
19511)
19512{
19513 WDI_Status wdiStatus;
19514 eHalStatus halStatus;
19515 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19517
19518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 -------------------------------------------------------------------------*/
19521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19522 ( NULL == pEventData->pEventData))
19523 {
19524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 }
19529
19530 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19531
19532 /*-------------------------------------------------------------------------
19533 Extract response and send it to UMAC
19534 -------------------------------------------------------------------------*/
19535 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019537
19538 /*Notify UMAC*/
19539 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19540
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019542}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19543
19544
19545/**
19546 @brief Process Nv download(called when a response
19547 is being received over the bus from HAL,will check if the responce is )
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_ProcessNvDownloadRsp
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
19563 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19564 tHalNvImgDownloadRspParams halNvDownloadRsp;
19565 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
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 }
19578
19579 /*-------------------------------------------------------------------------
19580 Extract response and send it to UMAC
19581 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019582 wpalMemoryCopy( &halNvDownloadRsp,
19583 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 sizeof(halNvDownloadRsp));
19585
19586 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19587
19588 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19590 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019591 {
19592 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019593 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 }
19595 else
19596 {
19597 /*Reset the Nv related global information in WDI context information */
19598 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19599 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19600 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19601 /*call WDA callback function for last fragment */
19602 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19603 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19604 }
19605
Jeff Johnsone7245742012-09-05 17:12:55 -070019606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019607}
19608#ifdef WLAN_FEATURE_VOWIFI_11R
19609/**
19610 @brief Process Add TSpec Rsp function (called when a response
19611 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019612
19613 @param pWDICtx: pointer to the WLAN DAL context
19614 pEventData: pointer to the event information structure
19615
Jeff Johnson295189b2012-06-20 16:38:30 -070019616 @see
19617 @return Result of the function call
19618*/
19619WDI_Status
19620WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019621(
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 WDI_ControlBlockType* pWDICtx,
19623 WDI_EventInfoType* pEventData
19624)
19625{
19626 WDI_Status wdiStatus;
19627 tAggrAddTsRspParams aggrAddTsRsp;
19628 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19630
19631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019633 -------------------------------------------------------------------------*/
19634 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19635 ( NULL == pEventData->pEventData))
19636 {
19637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 }
19642
19643 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19644
19645 /*-------------------------------------------------------------------------
19646 Extract response and send it to UMAC
19647 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019648 wpalMemoryCopy( &aggrAddTsRsp,
19649 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 sizeof(aggrAddTsRsp));
19651
19652 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019653 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019654
19655 /*Notify UMAC*/
19656 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19657
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019659}/*WDI_ProcessAddTSpecRsp*/
19660#endif /* WLAN_FEATURE_VOWIFI_11R */
19661
19662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019665
19666 @param pWDICtx: pointer to the WLAN DAL context
19667 pEventData: pointer to the event information structure
19668
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 @see
19670 @return Result of the function call
19671*/
19672WDI_Status
19673WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019674(
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 WDI_ControlBlockType* pWDICtx,
19676 WDI_EventInfoType* pEventData
19677)
19678{
19679 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19680 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19681 tHalHostResumeRspParams hostResumeRspMsg;
19682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19683
19684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 -------------------------------------------------------------------------*/
19687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19688 ( NULL == pEventData->pEventData))
19689 {
19690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 }
19695
19696 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19697
19698 /*-------------------------------------------------------------------------
19699 Extract response and send it to UMAC
19700 -------------------------------------------------------------------------*/
19701
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 (wpt_uint8*)pEventData->pEventData,
19704 sizeof(hostResumeRspMsg));
19705
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 wdiResumeRspParams.wdiStatus =
19707 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019708
19709 /*Notify UMAC*/
19710 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19711
19712 return WDI_STATUS_SUCCESS;
19713}
19714
19715/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019716 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019718
19719 @param pWDICtx: pointer to the WLAN DAL context
19720 pEventData: pointer to the event information structure
19721
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 @see
19723 @return Result of the function call
19724*/
19725WDI_Status
19726WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019727(
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 WDI_ControlBlockType* pWDICtx,
19729 WDI_EventInfoType* pEventData
19730)
19731{
19732 WDI_Status wdiStatus;
19733 eHalStatus halStatus;
19734 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19736
19737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 -------------------------------------------------------------------------*/
19740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19741 ( NULL == pEventData->pEventData))
19742 {
19743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019748
19749 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019750
19751 /*-------------------------------------------------------------------------
19752 Extract response and send it to UMAC
19753 -------------------------------------------------------------------------*/
19754 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019756
19757 /*Notify UMAC*/
19758 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19759
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019761}/*WDI_ProcessSetTxPerTrackingRsp*/
19762
19763/*==========================================================================
19764 Indications from HAL
19765 ==========================================================================*/
19766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 indication of this kind is being received over the bus
19769 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019770
19771 @param pWDICtx: pointer to the WLAN DAL context
19772 pEventData: pointer to the event information structure
19773
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 @see
19775 @return Result of the function call
19776*/
19777WDI_Status
19778WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019779(
Jeff Johnson295189b2012-06-20 16:38:30 -070019780 WDI_ControlBlockType* pWDICtx,
19781 WDI_EventInfoType* pEventData
19782)
19783{
19784 WDI_LowLevelIndType wdiInd;
19785 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19787
19788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 -------------------------------------------------------------------------*/
19791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19792 ( NULL == pEventData->pEventData))
19793 {
19794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 }
19799
19800 /*-------------------------------------------------------------------------
19801 Extract indication and send it to UMAC
19802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019803 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19804 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 sizeof(tHalRSSINotification));
19806
19807 /*Fill in the indication parameters*/
19808 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19809 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19810 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19811 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19812 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19813 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19814 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19815 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19816 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19817 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19818 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19819 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19820 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019821 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19822 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019823
ltimariu034f7d62013-01-24 18:54:33 -080019824 if ( pWDICtx->wdiLowLevelIndCB )
19825 {
19826 /*Notify UMAC of indication*/
19827 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19828 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
19830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019831}/*WDI_ProcessLowRSSIInd*/
19832
19833
19834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019835 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 an indication of this kind is being received over the
19837 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019838
19839 @param pWDICtx: pointer to the WLAN DAL context
19840 pEventData: pointer to the event information structure
19841
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 @see
19843 @return Result of the function call
19844*/
19845WDI_Status
19846WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019847(
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 WDI_ControlBlockType* pWDICtx,
19849 WDI_EventInfoType* pEventData
19850)
19851{
19852 WDI_Status wdiStatus;
19853 eHalStatus halStatus;
19854 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019855 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19857
19858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 -------------------------------------------------------------------------*/
19861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19862 ( NULL == pEventData->pEventData))
19863 {
19864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019869 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019870 /*-------------------------------------------------------------------------
19871 Extract indication and send it to UMAC
19872 -------------------------------------------------------------------------*/
19873 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19874 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019875 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019876
19877 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019879 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19880 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019881 if ( pWDICtx->wdiLowLevelIndCB )
19882 {
19883 /*Notify UMAC*/
19884 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19885 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019886
19887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019888}/*WDI_ProcessMissedBeaconInd*/
19889
19890
19891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 an indication of this kind is being received over the
19894 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019895
19896 @param pWDICtx: pointer to the WLAN DAL context
19897 pEventData: pointer to the event information structure
19898
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 @see
19900 @return Result of the function call
19901*/
19902WDI_Status
19903WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019904(
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 WDI_ControlBlockType* pWDICtx,
19906 WDI_EventInfoType* pEventData
19907)
19908{
19909 WDI_Status wdiStatus;
19910 eHalStatus halStatus;
19911 WDI_LowLevelIndType wdiInd;
19912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19913
19914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 -------------------------------------------------------------------------*/
19917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19918 ( NULL == pEventData->pEventData))
19919 {
19920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019924 }
19925
19926 /*-------------------------------------------------------------------------
19927 Extract indication and send it to UMAC
19928 -------------------------------------------------------------------------*/
19929 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19930 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019932
19933 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 /* ! TO DO - fill in from HAL struct:
19936 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19937
ltimariu034f7d62013-01-24 18:54:33 -080019938 if ( pWDICtx->wdiLowLevelIndCB )
19939 {
19940 /*Notify UMAC*/
19941 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19942 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019943
19944 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019945}/*WDI_ProcessUnkAddrFrameInd*/
19946
19947
19948/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019949 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 indication of this kind is being received over the bus
19951 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019952
19953 @param pWDICtx: pointer to the WLAN DAL context
19954 pEventData: pointer to the event information structure
19955
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 @see
19957 @return Result of the function call
19958*/
19959WDI_Status
19960WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019961(
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 WDI_ControlBlockType* pWDICtx,
19963 WDI_EventInfoType* pEventData
19964)
19965{
19966 WDI_LowLevelIndType wdiInd;
19967 tpSirMicFailureInd pHalMicFailureInd;
19968
19969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19970
19971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 -------------------------------------------------------------------------*/
19974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19975 ( NULL == pEventData->pEventData))
19976 {
19977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019982
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19984 /*-------------------------------------------------------------------------
19985 Extract indication and send it to UMAC
19986 -------------------------------------------------------------------------*/
19987
19988 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19991 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19992 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19993 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19994 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19995 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19996 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19997 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 pHalMicFailureInd->info.keyId;
20004 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20005 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20006 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20007 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080020008
20009 if ( pWDICtx->wdiLowLevelIndCB )
20010 {
20011 /*Notify UMAC*/
20012 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20013 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020014
20015 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020016}/*WDI_ProcessMicFailureInd*/
20017
20018
20019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020020 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 an indication of this kind is being received over the
20022 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020023
20024 @param pWDICtx: pointer to the WLAN DAL context
20025 pEventData: pointer to the event information structure
20026
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 @see
20028 @return Result of the function call
20029*/
20030WDI_Status
20031WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020032(
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 WDI_ControlBlockType* pWDICtx,
20034 WDI_EventInfoType* pEventData
20035)
20036{
20037 WDI_Status wdiStatus;
20038 eHalStatus halStatus;
20039 WDI_LowLevelIndType wdiInd;
20040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20041
20042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 -------------------------------------------------------------------------*/
20045 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20046 ( NULL == pEventData->pEventData))
20047 {
20048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 }
20053
20054 /*-------------------------------------------------------------------------
20055 Extract indication and send it to UMAC
20056 -------------------------------------------------------------------------*/
20057
20058 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20059 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020060 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020061
20062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20063 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020064
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020066 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20067 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020068
ltimariu034f7d62013-01-24 18:54:33 -080020069 if ( pWDICtx->wdiLowLevelIndCB )
20070 {
20071 /*Notify UMAC*/
20072 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20073 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020074
20075 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020076}/*WDI_ProcessFatalErrorInd*/
20077
20078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 an indication of this kind is being received over the
20081 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020082
20083 @param pWDICtx: pointer to the WLAN DAL context
20084 pEventData: pointer to the event information structure
20085
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 @see
20087 @return Result of the function call
20088*/
20089WDI_Status
20090WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020091(
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ControlBlockType* pWDICtx,
20093 WDI_EventInfoType* pEventData
20094)
20095{
20096 tDeleteStaContextParams halDelSTACtx;
20097 WDI_LowLevelIndType wdiInd;
20098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20099
20100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 -------------------------------------------------------------------------*/
20103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20104 ( NULL == pEventData->pEventData))
20105 {
20106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 }
20111
20112 /*-------------------------------------------------------------------------
20113 Extract indication and send it to UMAC
20114 -------------------------------------------------------------------------*/
20115
20116 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020117 wpalMemoryCopy( &halDelSTACtx,
20118 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 sizeof(halDelSTACtx));
20120
20121 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020123
20124 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20125 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20126 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20127 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20128
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020131 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020133 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20134 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020135
ltimariu034f7d62013-01-24 18:54:33 -080020136 if ( pWDICtx->wdiLowLevelIndCB )
20137 {
20138 /*Notify UMAC*/
20139 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20140 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020141
20142 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020143}/*WDI_ProcessDelSTAInd*/
20144
20145/**
20146*@brief Process Coex Indication function (called when
20147 an indication of this kind is being received over the
20148 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020149
20150 @param pWDICtx: pointer to the WLAN DAL context
20151 pEventData: pointer to the event information structure
20152
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 @see
20154 @return Result of the function call
20155*/
20156WDI_Status
20157WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020158(
Jeff Johnson295189b2012-06-20 16:38:30 -070020159 WDI_ControlBlockType* pWDICtx,
20160 WDI_EventInfoType* pEventData
20161)
20162{
20163 WDI_LowLevelIndType wdiInd;
20164 tCoexIndMsg halCoexIndMsg;
20165 wpt_uint32 index;
20166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20167
20168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 -------------------------------------------------------------------------*/
20171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20172 ( NULL == pEventData->pEventData ))
20173 {
20174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 }
20179
20180 /*-------------------------------------------------------------------------
20181 Extract indication and send it to UMAC
20182 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20184 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 sizeof(halCoexIndMsg.coexIndParams) );
20186
20187 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020188 wdiInd.wdiIndicationType = WDI_COEX_IND;
20189 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20191 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 }
20194
20195 // DEBUG
20196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20197 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020198 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20199 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20200 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20201 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20202 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020203
ltimariu034f7d62013-01-24 18:54:33 -080020204 if ( pWDICtx->wdiLowLevelIndCB )
20205 {
20206 /*Notify UMAC*/
20207 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20208 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020209
20210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020211}/*WDI_ProcessCoexInd*/
20212
20213/**
20214*@brief Process Tx Complete Indication function (called when
20215 an indication of this kind is being received over the
20216 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020217
20218 @param pWDICtx: pointer to the WLAN DAL context
20219 pEventData: pointer to the event information structure
20220
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 @see
20222 @return Result of the function call
20223*/
20224WDI_Status
20225WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020226(
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 WDI_ControlBlockType* pWDICtx,
20228 WDI_EventInfoType* pEventData
20229)
20230{
20231 WDI_LowLevelIndType wdiInd;
20232 tTxComplIndMsg halTxComplIndMsg;
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 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20251 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 sizeof(halTxComplIndMsg.txComplParams) );
20253
20254 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020255 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20256 wdiInd.wdiIndicationData.tx_complete_status
20257 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020258
ltimariu034f7d62013-01-24 18:54:33 -080020259 if ( pWDICtx->wdiLowLevelIndCB )
20260 {
20261 /*Notify UMAC*/
20262 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20263 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020264
20265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020266}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020267#ifdef FEATURE_WLAN_TDLS
20268/**
20269*@brief Process TDLS Indication function (called when
20270 an indication of this kind is being received over the
20271 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020272
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020273 @param pWDICtx: pointer to the WLAN DAL context
20274 pEventData: pointer to the event information structure
20275
20276 @see
20277 @return Result of the function call
20278*/
20279WDI_Status
20280WDI_ProcessTdlsInd
20281(
20282 WDI_ControlBlockType* pWDICtx,
20283 WDI_EventInfoType* pEventData
20284)
20285{
20286 WDI_LowLevelIndType wdiInd;
20287 tTdlsIndMsg halTdlsIndMsg;
20288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20289
20290 /*-------------------------------------------------------------------------
20291 Sanity check
20292 -------------------------------------------------------------------------*/
20293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20294 ( NULL == pEventData->pEventData ))
20295 {
20296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20297 "%s: Invalid parameters", __func__);
20298 WDI_ASSERT( 0 );
20299 return WDI_STATUS_E_FAILURE;
20300 }
20301
20302 /*-------------------------------------------------------------------------
20303 Extract indication and send it to UMAC
20304 -------------------------------------------------------------------------*/
20305 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20306 pEventData->pEventData,
20307 sizeof(halTdlsIndMsg.tdlsIndParams) );
20308
20309 /*Fill in the indication parameters*/
20310 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20311
20312 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20313 = halTdlsIndMsg.tdlsIndParams.status;
20314
20315 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20316 = halTdlsIndMsg.tdlsIndParams.staIdx;
20317
20318 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20319 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20320
20321 /*Notify UMAC*/
20322 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20323
20324 return WDI_STATUS_SUCCESS;
20325}/*WDI_ProcessTdlsInd*/
20326#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020327/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020328*@brief Process Noa Start Indication function (called when
20329 an indication of this kind is being received over the
20330 bus from HAL)
20331
20332 @param pWDICtx: pointer to the WLAN DAL context
20333 pEventData: pointer to the event information structure
20334
20335 @see
20336 @return Result of the function call
20337*/
20338WDI_Status
20339WDI_ProcessP2pNoaStartInd
20340(
20341 WDI_ControlBlockType* pWDICtx,
20342 WDI_EventInfoType* pEventData
20343)
20344{
20345 WDI_LowLevelIndType wdiInd;
20346 tNoaStartIndMsg halNoaStartIndMsg;
20347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20348
20349 /*-------------------------------------------------------------------------
20350 Sanity check
20351 -------------------------------------------------------------------------*/
20352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20353 ( NULL == pEventData->pEventData ))
20354 {
20355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20356 "%s: Invalid parameters", __func__);
20357 WDI_ASSERT( 0 );
20358 return WDI_STATUS_E_FAILURE;
20359 }
20360
20361 /*-------------------------------------------------------------------------
20362 Extract indication and send it to UMAC
20363 -------------------------------------------------------------------------*/
20364 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20365 pEventData->pEventData,
20366 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20367
20368 /*Fill in the indication parameters*/
20369 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20370
20371 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20372 = halNoaStartIndMsg.noaStartIndParams.status;
20373
20374 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20375 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20376
20377 /*Notify UMAC*/
20378 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20379
20380 return WDI_STATUS_SUCCESS;
20381}/*WDI_ProcessNoaAttrInd*/
20382
20383/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020384*@brief Process Noa Attr Indication function (called when
20385 an indication of this kind is being received over the
20386 bus from HAL)
20387
20388 @param pWDICtx: pointer to the WLAN DAL context
20389 pEventData: pointer to the event information structure
20390
20391 @see
20392 @return Result of the function call
20393*/
20394WDI_Status
20395WDI_ProcessP2pNoaAttrInd
20396(
20397 WDI_ControlBlockType* pWDICtx,
20398 WDI_EventInfoType* pEventData
20399)
20400{
20401 WDI_LowLevelIndType wdiInd;
20402 tNoaAttrIndMsg halNoaAttrIndMsg;
20403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20404
20405 /*-------------------------------------------------------------------------
20406 Sanity check
20407 -------------------------------------------------------------------------*/
20408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20409 ( NULL == pEventData->pEventData ))
20410 {
20411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 WDI_ASSERT( 0 );
20414 return WDI_STATUS_E_FAILURE;
20415 }
20416
20417 /*-------------------------------------------------------------------------
20418 Extract indication and send it to UMAC
20419 -------------------------------------------------------------------------*/
20420 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20421 pEventData->pEventData,
20422 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20423
20424 /*Fill in the indication parameters*/
20425 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020426
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20428 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020429
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20431 = halNoaAttrIndMsg.noaAttrIndParams.index;
20432 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20433 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20434 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20435 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020436
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20438 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20439 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20440 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20441 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20442 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20443 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20444 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020445
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20447 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20448 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20449 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20450 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20451 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20452 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20453 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20454
ltimariu034f7d62013-01-24 18:54:33 -080020455 if ( pWDICtx->wdiLowLevelIndCB )
20456 {
20457 /*Notify UMAC*/
20458 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20459 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020460
20461 return WDI_STATUS_SUCCESS;
20462}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020463
20464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 an indication of this kind is being received over the
20467 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020468
20469 @param pWDICtx: pointer to the WLAN DAL context
20470 pEventData: pointer to the event information structure
20471
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 @see
20473 @return Result of the function call
20474*/
20475WDI_Status
20476WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020477(
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 WDI_ControlBlockType* pWDICtx,
20479 WDI_EventInfoType* pEventData
20480)
20481{
20482 WDI_LowLevelIndType wdiInd;
20483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020484
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 /*-------------------------------------------------------------------------
20486 Extract indication and send it to UMAC
20487 -------------------------------------------------------------------------*/
20488 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20490
ltimariu034f7d62013-01-24 18:54:33 -080020491 if ( pWDICtx->wdiLowLevelIndCB )
20492 {
20493 /*Notify UMAC*/
20494 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20495 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020496
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020498}/*WDI_ProcessTxPerHitInd*/
20499
Jeff Johnson295189b2012-06-20 16:38:30 -070020500/**
Yue Ma365933a2013-08-14 15:59:08 -070020501 @brief Process Periodic Tx Pattern Fw Indication function
20502
20503 @param pWDICtx: pointer to the WLAN DAL context
20504 pEventData: pointer to the event information structure
20505
20506 @see
20507 @return Result of the function call
20508*/
20509WDI_Status
20510WDI_ProcessPeriodicTxPtrnFwInd
20511(
20512 WDI_ControlBlockType* pWDICtx,
20513 WDI_EventInfoType* pEventData
20514)
20515{
20516 WDI_LowLevelIndType wdiInd;
20517
20518 /*-------------------------------------------------------------------------
20519 Sanity check
20520 -------------------------------------------------------------------------*/
20521 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20522 (NULL == pEventData->pEventData))
20523 {
20524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20525 "%s: Invalid parameters", __func__);
20526 WDI_ASSERT(0);
20527 return WDI_STATUS_E_FAILURE;
20528 }
20529
20530 /*-------------------------------------------------------------------------
20531 Extract indication and send it to UMAC
20532 -------------------------------------------------------------------------*/
20533 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20534 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20535 sizeof(tHalPeriodicTxPtrnFwInd));
20536
20537 if (pWDICtx->wdiLowLevelIndCB)
20538 {
20539 /*Notify UMAC*/
20540 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20541 }
20542
20543 return WDI_STATUS_SUCCESS;
20544}
20545
20546/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 @brief WDI_ProcessFTMCommandReq
20548 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020549
20550 @param pWDICtx: pointer to the WLAN DAL context
20551 pEventData: pointer to the event information structure
20552
Jeff Johnson295189b2012-06-20 16:38:30 -070020553 @see
20554 @return Result of the function call
20555*/
20556WDI_Status
20557WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020558(
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 WDI_ControlBlockType* pWDICtx,
20560 WDI_EventInfoType* pEventData
20561)
20562{
20563 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20564 wpt_uint8 *ftmCommandBuffer = NULL;
20565 wpt_uint16 dataOffset;
20566 wpt_uint16 bufferSize;
20567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 -------------------------------------------------------------------------*/
20570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20571 ( NULL == pEventData->pEventData))
20572
20573 {
20574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 }
20579
20580 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20581
20582 /* Get MSG Buffer */
20583 WDI_GetMessageBuffer(pWDICtx,
20584 WDI_FTM_CMD_REQ,
20585 ftmCommandReq->bodyLength,
20586 &ftmCommandBuffer,
20587 &dataOffset,
20588 &bufferSize);
20589
20590 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20591 ftmCommandReq->FTMCommandBody,
20592 ftmCommandReq->bodyLength);
20593
20594 /* Send MSG */
20595 return WDI_SendMsg(pWDICtx,
20596 ftmCommandBuffer,
20597 bufferSize,
20598 pEventData->pCBfnc,
20599 pEventData->pUserData,
20600 WDI_FTM_CMD_RESP);
20601}
20602
20603/**
20604 @brief WDI_ProcessFTMCommandRsp
20605 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020606
20607 @param pWDICtx: pointer to the WLAN DAL context
20608 pEventData: pointer to the event information structure
20609
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 @see
20611 @return Result of the function call
20612*/
20613WDI_Status
20614WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020615(
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 WDI_ControlBlockType* pWDICtx,
20617 WDI_EventInfoType* pEventData
20618)
20619{
20620 WDI_FTMCommandRspCb ftmCMDRspCb;
20621 tProcessPttRspParams *ftmCMDRspData = NULL;
20622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20623
20624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 -------------------------------------------------------------------------*/
20627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20628 ( NULL == pEventData->pEventData))
20629 {
20630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 }
20635
20636 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20637
20638 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20639
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20641 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20643
20644 /*Notify UMAC*/
20645 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20646
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020648}
Jeff Johnson295189b2012-06-20 16:38:30 -070020649/**
20650 @brief WDI_ProcessHalDumpCmdReq
20651 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020652
20653 @param pWDICtx: pointer to the WLAN DAL context
20654 pEventData: pointer to the event information structure
20655
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 @see
20657 @return Result of the function call
20658*/
20659WDI_Status
20660WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020661(
Jeff Johnson295189b2012-06-20 16:38:30 -070020662 WDI_ControlBlockType* pWDICtx,
20663 WDI_EventInfoType* pEventData
20664)
20665{
20666 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20667 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20668 wpt_uint16 usDataOffset = 0;
20669 wpt_uint16 usSendSize = 0;
20670 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020672
20673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 -------------------------------------------------------------------------*/
20676 if (( NULL == pEventData ) ||
20677 ( NULL == pEventData->pEventData) ||
20678 ( NULL == pEventData->pCBfnc ))
20679 {
20680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 }
20685
20686 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20687 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20688
20689 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020700
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 /*-----------------------------------------------------------------------
20702 Get message buffer
20703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20706 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20709 {
20710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020711 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 }
20716
Jeff Johnsone7245742012-09-05 17:12:55 -070020717 wpalMemoryCopy( pSendBuffer+usDataOffset,
20718 &halDumpCmdReqMsg.dumpCmdReqParams,
20719 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020720
20721 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020723
20724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20728 wdiHALDumpCmdRspCb, pEventData->pUserData,
20729 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020730}
20731
20732/**
20733 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 Process hal Dump Command Response from HAL, simply route to HDD
20735
20736 @param pWDICtx: pointer to the WLAN DAL context
20737 pEventData: pointer to the event information structure
20738
Jeff Johnson295189b2012-06-20 16:38:30 -070020739 @see
20740 @return Result of the function call
20741*/
20742WDI_Status
20743WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020744(
Jeff Johnson295189b2012-06-20 16:38:30 -070020745 WDI_ControlBlockType* pWDICtx,
20746 WDI_EventInfoType* pEventData
20747)
20748{
20749 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020750 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20752
20753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 -------------------------------------------------------------------------*/
20756 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20757 ( NULL == pEventData->pEventData))
20758 {
20759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020763 }
20764
Jeff Johnsone7245742012-09-05 17:12:55 -070020765 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020766
20767 /*Initialize the WDI Response structure */
20768 wdiHALDumpCmdRsp.usBufferLen = 0;
20769 wdiHALDumpCmdRsp.pBuffer = NULL;
20770
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020771 wpalMemoryCopy( &halDumpCmdRspParams,
20772 pEventData->pEventData,
20773 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020774
20775 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020776 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020777
20778 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020779 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 {
20781 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020782 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20783 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20784
20785 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20786 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020787 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020788 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020789
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 /*Notify UMAC*/
20791 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20792
20793 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20794 {
20795 /* Free the allocated buffer */
20796 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20797 }
20798 return WDI_STATUS_SUCCESS;
20799}
20800
20801/*==========================================================================
20802 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020803
Jeff Johnson295189b2012-06-20 16:38:30 -070020804 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020806==========================================================================*/
20807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 when it wishes to send up a notification like the ones
20810 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020811
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020813
20814 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 wctsNotifyCBData: the callback data of the user
20817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020819
20820 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020821*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020822void
Jeff Johnson295189b2012-06-20 16:38:30 -070020823WDI_NotifyMsgCTSCB
20824(
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 WCTS_NotifyEventType wctsEvent,
20827 void* wctsNotifyCBData
20828)
20829{
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20832
20833 if (NULL == pWDICtx )
20834 {
20835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 }
20840
20841 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20842 {
20843 /* callback presumably occurred after close */
20844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020845 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 }
20848
20849 if ( WCTS_EVENT_OPEN == wctsEvent )
20850 {
20851 /*Flag must be set atomically as it is checked from incoming request
20852 functions*/
20853 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020855
20856 /*Nothing to do - so try to dequeue any pending request that may have
20857 occurred while we were trying to establish this*/
20858 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020861 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 {
20863 /*Flag must be set atomically as it is checked from incoming request
20864 functions*/
20865 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020866 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020867
20868 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020869 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 wpalMutexRelease(&pWDICtx->wptMutex);
20871
20872 /*Notify that the Control Channel is closed */
20873 wpalEventSet(&pWDICtx->wctsActionEvent);
20874 }
20875
20876}/*WDI_NotifyMsgCTSCB*/
20877
20878
20879/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 when it wishes to send up a packet received over the
20882 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020883
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020885
20886 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 pMsg: the packet
20888 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 wctsRxMsgCBData: the callback data of the user
20890
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020892
20893 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020894*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020895void
20896WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020897(
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 void* pMsg,
20900 wpt_uint32 uLen,
20901 void* wctsRxMsgCBData
20902)
20903{
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 tHalMsgHeader *pHalMsgHeader;
20905 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20908
20909 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 ( uLen < sizeof(tHalMsgHeader)))
20914 {
20915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020918 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 }
20920
20921 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20922 {
20923 /* callback presumably occurred after close */
20924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020925 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 }
20928
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 context - so no serialization is necessary here
20931 ! - revisit this assumption */
20932
20933 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20934
20935 if ( uLen != pHalMsgHeader->msgLen )
20936 {
20937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20938 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20940 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 }
20942
20943 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20944
20945 /*The message itself starts after the header*/
20946 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20947 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20948 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20949 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20950
20951
20952 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20953 {
20954 /*Stop the timer as the response was received */
20955 /*!UT - check for potential race conditions between stop and response */
20956 wpalTimerStop(&pWDICtx->wptResponseTimer);
20957 }
20958 /* Check if we receive a response message which is not expected */
20959 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20960 {
20961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20962 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20963 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020964 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20966 pWDICtx->wdiExpectedResponse);
Sameer Thalappilad723582013-11-15 14:50:51 -080020967
20968 if (gWDICb.bEnableSSR == false)
20969 {
20970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20971 "SSR is not enabled on WDI timeout");
20972 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20973 return;
20974 }
20975 wpalWcnssResetIntr();
20976 /* if this timer fires, it means Riva did not receive the FIQ */
20977 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
20978
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 return;
20980 }
20981
20982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20983 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20984
20985 /*Post response event to the state machine*/
20986 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20987
20988}/*WDI_RXMsgCTSCB*/
20989
20990
20991/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020992 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020993========================================================================*/
20994
20995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020996 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020998
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 @param pWDICtx - pointer to the control block
21000
21001 @return Result of the function call
21002*/
21003WPT_INLINE WDI_Status
21004WDI_CleanCB
21005(
21006 WDI_ControlBlockType* pWDICtx
21007)
21008{
21009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21010
21011 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021012 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021013
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21016 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21017
21018 WDI_ResetAssocSessions( pWDICtx );
21019
21020 return WDI_STATUS_SUCCESS;
21021}/*WDI_CleanCB*/
21022
21023
21024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021025 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021026
Jeff Johnsone7245742012-09-05 17:12:55 -070021027
21028 @param pWDICtx: pointer to the WLAN DAL context
21029 pEventData: pointer to the event information structure
21030
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 @see
21032 @return Result of the function call
21033*/
21034WPT_INLINE WDI_Status
21035WDI_ProcessRequest
21036(
21037 WDI_ControlBlockType* pWDICtx,
21038 WDI_EventInfoType* pEventData
21039)
21040{
21041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21042
Jeff Johnsone7245742012-09-05 17:12:55 -070021043 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 already checked these pointers*/
21045
21046 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21047 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021050 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 WDI_getReqMsgString(pEventData->wdiRequest),
21052 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21053 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21054 }
21055 else
21056 {
21057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 pEventData->wdiRequest);
21060 return WDI_STATUS_E_NOT_IMPLEMENT;
21061 }
21062}/*WDI_ProcessRequest*/
21063
21064
21065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 prefixes it with a send message header
21069
21070 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 wdiReqType: type of the request being sent
21072 uBufferLen: message buffer len
21073 pMsgBuffer: resulting allocated buffer
21074 pusDataOffset: offset in the buffer where the caller
21075 can start copying its message data
21076 puBufferSize: the resulting buffer size (offset+buff
21077 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021078
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 @see
21080 @return Result of the function call
21081*/
21082WDI_Status
21083WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021084(
21085 WDI_ControlBlockType* pWDICtx,
21086 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 wpt_uint8** pMsgBuffer,
21089 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 wpt_uint16* pusBufferSize
21091)
21092{
21093 tHalMsgHeader halMsgHeader;
21094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21095
Jeff Johnsone7245742012-09-05 17:12:55 -070021096 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 again*/
21098
21099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21104 if ( NULL == *pMsgBuffer )
21105 {
21106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21107 "Unable to allocate message buffer for req %s (%d)",
21108 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021109 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 }
21113
21114 /*-------------------------------------------------------------------------
21115 Fill in the message header
21116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21118 /* Fill msgVersion */
21119#ifdef WLAN_FEATURE_11AC
21120 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021121 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021122 else
21123#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021124 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21127 *pusDataOffset = sizeof(halMsgHeader);
21128 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21129
21130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021131}/*WDI_GetMessageBuffer*/
21132
21133
21134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 the CB
21138
21139 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021140 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021141
Jeff Johnson295189b2012-06-20 16:38:30 -070021142 usSendSize size of the buffer to be sent
21143 pRspCb: response callback - save in the WDI
21144 CB
21145 pUserData: user data associated with the
21146 callback
21147 wdiExpectedResponse: the code of the response that is
21148 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021149
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 @see
21151 @return Result of the function call
21152*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021154WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021155(
21156 WDI_ControlBlockType* pWDICtx,
21157 wpt_uint8* pSendBuffer,
21158 wpt_uint32 usSendSize,
21159 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 void* pUserData,
21161 WDI_ResponseEnumType wdiExpectedResponse
21162)
21163{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021164 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021165 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21167
21168 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 ------------------------------------------------------------------------*/
21171 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021172 pWDICtx->pfncRspCB = pRspCb;
21173 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174
21175 /*-----------------------------------------------------------------------
21176 Call the CTS to send this message over - free message afterwards
21177 - notify transport failure
21178 Note: CTS is reponsible for freeing the message buffer.
21179 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021180 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21181 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21182 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 "Failed to send message over the bus - catastrophic failure");
21186
Jeff Johnsond13512a2012-07-17 11:42:19 -070021187 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021189 else
21190 {
21191 /* even when message was placed in CTS deferred Q, we will treat it
21192 success but log this info
21193 */
21194 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21195 {
21196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21197 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21198 "response %s (%d)",
21199 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21200 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021201 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021202 }
21203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021204
Jeff Johnsond13512a2012-07-17 11:42:19 -070021205 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 if ( NULL != pWDICtx->wdiReqStatusCB )
21207 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021208 /*Inform originator whether request went through or not*/
21209 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21210 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 pWDICtx->wdiReqStatusCB = NULL;
21212 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021213 callback(wdiStatus, callbackContext);
21214
21215 /*For WDI requests which have registered a request callback,
21216 inform the WDA caller of the same via setting the return value
21217 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21218 end up repeating the functonality in the req callback for the
21219 WDI_STATUS_E_FAILURE case*/
21220 if (wdiStatus == WDI_STATUS_E_FAILURE)
21221 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 }
21223
Jeff Johnsond13512a2012-07-17 11:42:19 -070021224 if ( wdiStatus == WDI_STATUS_SUCCESS )
21225 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 /*Start timer for the expected response */
21227 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021228
21229 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021230 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021231 }
21232 else
21233 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021234 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021235 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21236 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021237
Jeff Johnsond13512a2012-07-17 11:42:19 -070021238 return wdiStatus;
21239
Jeff Johnson295189b2012-06-20 16:38:30 -070021240}/*WDI_SendMsg*/
21241
21242
21243
21244/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 the bus using the control transport and saves some info
21247 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021248
21249 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 pSendBuffer: buffer to be sent
21251 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021252
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 @see
21254 @return Result of the function call
21255*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021256WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021257WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021258(
21259 WDI_ControlBlockType* pWDICtx,
21260 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 wpt_uint32 usSendSize
21262)
21263{
21264 wpt_uint32 uStatus ;
21265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21266
21267 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 Note: CTS is reponsible for freeing the message buffer.
21270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 (void*)pSendBuffer, usSendSize );
21273
21274 /*Inform Upper MAC about the outcome of the request*/
21275 if ( NULL != pWDICtx->wdiReqStatusCB )
21276 {
21277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21278 "Send indication status : %d", uStatus);
21279
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021280 /* even if CTS placed indication into its deferred Q, we treat it
21281 * as success and let CTS drain its queue as per smd interrupt to CTS
21282 */
21283 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 -070021284 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 }
21286
21287 /*If sending of the message failed - it is considered catastrophic and
21288 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021289 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21290 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21291
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 {
21293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021295
21296 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21297 return WDI_STATUS_E_FAILURE;
21298 }
21299
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301}/*WDI_SendIndication*/
21302
21303
21304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 @brief WDI_DetectedDeviceError - called internally by DAL when
21306 it has detected a failure in the device
21307
21308 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 usErrorCode: error code detected by WDI or received
21310 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021311
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021313 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021314*/
21315void
21316WDI_DetectedDeviceError
21317(
21318 WDI_ControlBlockType* pWDICtx,
21319 wpt_uint16 usErrorCode
21320)
21321{
21322 WDI_LowLevelIndType wdiInd;
21323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21324
21325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21326 "Device Error detected code: %d - transitioning to stopped state",
21327 usErrorCode);
21328
21329 wpalMutexAcquire(&pWDICtx->wptMutex);
21330
21331 WDI_STATableStop(pWDICtx);
21332
21333 WDI_ResetAssocSessions(pWDICtx);
21334
21335 /*Set the expected state transition to stopped - because the device
21336 experienced a failure*/
21337 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21338
21339 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021341
Jeff Johnsone7245742012-09-05 17:12:55 -070021342 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021343
21344 /*TO DO: - there should be an attempt to reset the device here*/
21345
21346 wpalMutexRelease(&pWDICtx->wptMutex);
21347
21348 /*------------------------------------------------------------------------
21349 Notify UMAC if a handler is registered
21350 ------------------------------------------------------------------------*/
21351 if (pWDICtx->wdiLowLevelIndCB)
21352 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21354 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021355
21356 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21357 }
21358}/*WDI_DetectedDeviceError*/
21359
21360/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 we started on send message has expire - this should
21363 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 reply - trigger catastrophic failure
21365 @param
21366
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021368
21369 @see
21370 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021371*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021372void
Jeff Johnson295189b2012-06-20 16:38:30 -070021373WDI_ResponseTimerCB
21374(
21375 void *pUserData
21376)
21377{
21378 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21380
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021381 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021386 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 }
21388
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021389 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021390 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021391
21392 /* If response timer is running at this time that means this timer
21393 * event is not for the last request but rather last-to-last request and
21394 * this timer event has come after we recevied respone for last-to-last
21395 * message
21396 */
21397 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21398 {
21399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21400 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021401 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021402 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21403 return;
21404 }
21405
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021406 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021407 {
21408
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021411 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021413 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21414 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021415
21416 /* WDI timeout means Riva is not responding or SMD communication to Riva
21417 * is not happening. The only possible way to recover from this error
21418 * is to initiate SSR from APPS.
21419 * There is also an option to re-enable wifi, which will eventually
21420 * trigger SSR
21421 */
21422 if (gWDICb.bEnableSSR == false)
21423 {
21424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21425 "SSR is not enabled on WDI timeout");
21426 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21427 return;
21428 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021429#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021430 wpalWcnssResetIntr();
21431 /* if this timer fires, it means Riva did not receive the FIQ */
21432 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021433#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021434 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21435 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021436#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 }
21438 else
21439 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021441 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021442 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021443 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21444 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 }
21446
21447 return;
21448
21449}/*WDI_ResponseTimerCB*/
21450
21451
21452/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021454
Jeff Johnsone7245742012-09-05 17:12:55 -070021455
21456 @param pWDICtx: pointer to the WLAN DAL context
21457 pEventData: pointer to the event information structure
21458
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 @see
21460 @return Result of the function call
21461*/
21462WPT_INLINE WDI_Status
21463WDI_ProcessResponse
21464(
21465 WDI_ControlBlockType* pWDICtx,
21466 WDI_EventInfoType* pEventData
21467)
21468{
21469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21470
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 already checked these pointers
21473 ! - revisit this assumption */
21474 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21475 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021478 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 WDI_getRespMsgString(pEventData->wdiResponse),
21480 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21481 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21482 }
21483 else
21484 {
21485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 pEventData->wdiResponse);
21488 return WDI_STATUS_E_NOT_IMPLEMENT;
21489 }
21490}/*WDI_ProcessResponse*/
21491
21492
21493/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021494 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021495=========================================================================*/
21496
21497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 @brief Utility function used by the DAL Core to help queue a
21499 request that cannot be processed right away.
21500 @param
21501
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 pWDICtx: - pointer to the WDI control block
21503 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 queued
21505
21506 @see
21507 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021508*/
21509WDI_Status
21510WDI_QueuePendingReq
21511(
21512 WDI_ControlBlockType* pWDICtx,
21513 WDI_EventInfoType* pEventData
21514)
21515{
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21520
21521 if ( NULL == pEventDataQueue )
21522 {
21523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 WDI_ASSERT(0);
21526 return WDI_STATUS_MEM_FAILURE;
21527 }
21528
21529 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21530 pEventDataQueue->pUserData = pEventData->pUserData;
21531 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21532 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021534
21535 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21536 {
21537 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 if ( NULL == pEventInfo )
21540 {
21541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 WDI_ASSERT(0);
21544 wpalMemoryFree(pEventDataQueue);
21545 return WDI_STATUS_MEM_FAILURE;
21546 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021547
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21549
21550 }
21551 pEventDataQueue->pEventData = pEventInfo;
21552
21553 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021555
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021557
21558 return WDI_STATUS_SUCCESS;
21559}/*WDI_QueuePendingReq*/
21560
21561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 @param
21565
21566 pMsg - pointer to the message
21567
21568 @see
21569 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021570*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021571void
Jeff Johnson295189b2012-06-20 16:38:30 -070021572WDI_PALCtrlMsgCB
21573(
21574 wpt_msg *pMsg
21575)
21576{
21577 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021578 WDI_ControlBlockType* pWDICtx = NULL;
21579 WDI_Status wdiStatus;
21580 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 void* pUserData;
21582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21583
21584 if (( NULL == pMsg )||
21585 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21586 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21587 {
21588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 }
21593
21594 /*Transition back to the state that we had before serialization
21595 - serialization transitions us to BUSY to stop any incomming requests
21596 ! TO DO L: possible race condition here if a request comes in between the
21597 state transition and the post function*/
21598
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021600
21601 /*-----------------------------------------------------------------------
21602 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021603 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021604 -----------------------------------------------------------------------*/
21605 switch ( pEventData->wdiRequest )
21606 {
21607
Jeff Johnsone7245742012-09-05 17:12:55 -070021608 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21610 break;
21611
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 case WDI_NV_DOWNLOAD_REQ:
21613 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21614 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21615 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21616 {
21617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021618 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21620 }
21621 else
21622 {
21623 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21624 }
21625
21626 break;
21627
21628 default:
21629 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21630 break;
21631 }/*switch ( pEventData->wdiRequest )*/
21632
21633 if ( WDI_STATUS_SUCCESS != wdiStatus )
21634 {
21635 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21636
21637 if ( NULL != pfnReqStatusCB )
21638 {
21639 /*Fail the request*/
21640 pfnReqStatusCB( wdiStatus, pUserData);
21641 }
21642 }
21643
21644 /* Free data - that was allocated when queueing*/
21645 if( pEventData != NULL )
21646 {
21647 if( pEventData->pEventData != NULL )
21648 {
21649 wpalMemoryFree(pEventData->pEventData);
21650 }
21651 wpalMemoryFree(pEventData);
21652 }
21653
21654 if( pMsg != NULL )
21655 {
21656 wpalMemoryFree(pMsg);
21657 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021658
Jeff Johnson295189b2012-06-20 16:38:30 -070021659}/*WDI_PALCtrlMsgCB*/
21660
21661/**
21662 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 and schedule for execution a pending request
21664 @param
21665
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 pWDICtx: - pointer to the WDI control block
21667 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 queued
21669
21670 @see
21671 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021672*/
21673WDI_Status
21674WDI_DequeuePendingReq
21675(
21676 WDI_ControlBlockType* pWDICtx
21677)
21678{
Jeff Johnsone7245742012-09-05 17:12:55 -070021679 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21683
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021685
21686 if ( NULL == pNode )
21687 {
21688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 return WDI_STATUS_SUCCESS;
21691 }
21692
21693 /*The node actually points to the 1st element inside the Event Data struct -
21694 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021696
21697 /*Serialize processing in the control thread
21698 !TO DO: - check to see if these are all the messages params that need
21699 to be filled in*/
21700 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21701
21702 if ( NULL == palMsg )
21703 {
21704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 palMsg->callback = WDI_PALCtrlMsgCB;
21711 palMsg->ptr = pEventData;
21712
21713 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 palMsg->val = pWDICtx->uGlobalState;
Leo Chang6e358542013-12-17 13:35:00 -080021715 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021716
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 /*Transition back to BUSY as we need to handle a queued request*/
21718 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021719
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21721
21722 return WDI_STATUS_PENDING;
21723}/*WDI_DequeuePendingReq*/
21724
21725
21726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021727 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 away.- The assoc requests will be queued by BSSID
21730 @param
21731
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 pWDICtx: - pointer to the WDI control block
21733 pEventData: pointer to the evnt info that needs to be queued
21734 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021735
21736 @see
21737 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021738*/
21739WDI_Status
21740WDI_QueueNewAssocRequest
21741(
21742 WDI_ControlBlockType* pWDICtx,
21743 WDI_EventInfoType* pEventData,
21744 wpt_macAddr macBSSID
21745)
21746{
Jeff Johnsone7245742012-09-05 17:12:55 -070021747 wpt_uint8 i;
21748 WDI_BSSSessionType* pSession = NULL;
21749 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 void* pEventInfo;
21752 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021754
Jeff Johnsone7245742012-09-05 17:12:55 -070021755
21756 /*------------------------------------------------------------------------
21757 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021758 ------------------------------------------------------------------------*/
21759 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21760 {
21761 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21762 {
21763 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 pSession = &pWDICtx->aBSSSessions[i];
21765 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 }
21767 }
21768
21769 if ( i >= WDI_MAX_BSS_SESSIONS )
21770 {
21771 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021774
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 /*------------------------------------------------------------------------
21776 Fill in the BSSID for this session and set the usage flag
21777 ------------------------------------------------------------------------*/
21778 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021779 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021780
21781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 ------------------------------------------------------------------------*/
21784 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21785 if ( NULL == pEventDataQueue )
21786 {
21787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021788 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 WDI_ASSERT(0);
21790 return WDI_STATUS_MEM_FAILURE;
21791 }
21792
21793 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21794 if ( NULL == pSessionIdElement )
21795 {
21796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021797 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 WDI_ASSERT(0);
21799 wpalMemoryFree(pEventDataQueue);
21800 return WDI_STATUS_MEM_FAILURE;
21801 }
21802
21803 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21804 if ( NULL == pEventInfo )
21805 {
21806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021807 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021808 WDI_ASSERT(0);
21809 wpalMemoryFree(pSessionIdElement);
21810 wpalMemoryFree(pEventDataQueue);
21811 return WDI_STATUS_MEM_FAILURE;
21812 }
21813
21814 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21815 pEventDataQueue->pUserData = pEventData->pUserData;
21816 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21817 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021819
21820 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21821 pEventDataQueue->pEventData = pEventInfo;
21822
21823 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021824 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021825
21826 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021828
Jeff Johnsone7245742012-09-05 17:12:55 -070021829 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021830
21831 /*We need to maintain a separate list that keeps track of the order in which
21832 the new assoc requests are being queued such that we can start processing
21833 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 pSessionIdElement->ucIndex = i;
21835 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021836
21837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21838 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021840
21841 /*Return pending as this is what the status of the request is since it has
21842 been queued*/
21843 return WDI_STATUS_PENDING;
21844}/*WDI_QueueNewAssocRequest*/
21845
21846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021847 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 away.- The assoc requests will be queued by BSSID
21850 @param
21851
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 pWDICtx: - pointer to the WDI control block
21853 pSession: - session in which to queue
21854 pEventData: pointer to the event info that needs to be
21855 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021856
21857 @see
21858 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021859*/
21860WDI_Status
21861WDI_QueueAssocRequest
21862(
21863 WDI_ControlBlockType* pWDICtx,
21864 WDI_BSSSessionType* pSession,
21865 WDI_EventInfoType* pEventData
21866)
21867{
Jeff Johnsone7245742012-09-05 17:12:55 -070021868 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021870 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021872
21873 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 Sanity check
21875 ------------------------------------------------------------------------*/
21876 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21877 {
21878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021880
Jeff Johnsone7245742012-09-05 17:12:55 -070021881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021882 }
21883
21884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021885 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 ------------------------------------------------------------------------*/
21887 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21888 if ( NULL == pEventDataQueue )
21889 {
21890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021891 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 WDI_ASSERT(0);
21893 return WDI_STATUS_MEM_FAILURE;
21894 }
21895
21896 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21897 if ( NULL == pEventInfo )
21898 {
21899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21900 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021901 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 WDI_ASSERT(0);
21903 wpalMemoryFree(pEventDataQueue);
21904 return WDI_STATUS_MEM_FAILURE;
21905 }
21906
21907 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21908 pEventDataQueue->pUserData = pEventData->pUserData;
21909 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21910 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 pEventDataQueue->pEventData = pEventInfo;
21913
21914 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21915
21916 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021917 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021918
21919 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021923
21924 /*The result of this operation is pending because the request has been
21925 queued and it will be processed at a later moment in time */
21926 return WDI_STATUS_PENDING;
21927}/*WDI_QueueAssocRequest*/
21928
21929/**
21930 @brief Utility function used by the DAL Core to help dequeue
21931 an association request that was pending
21932 The request will be queued up in front of the main
21933 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021934 @param
21935
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021937
21938
21939 @see
21940 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021941*/
21942WDI_Status
21943WDI_DequeueAssocRequest
21944(
21945 WDI_ControlBlockType* pWDICtx
21946)
21947{
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 wpt_list_node* pNode = NULL;
21949 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021950 WDI_BSSSessionType* pSession;
21951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021952
21953 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 Sanity check
21955 ------------------------------------------------------------------------*/
21956 if ( NULL == pWDICtx )
21957 {
21958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021960
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 }
21963
21964 /*------------------------------------------------------------------------
21965 An association has been completed => a new association can occur
21966 Check to see if there are any pending associations ->
21967 If so , transfer all the pending requests into the busy queue for
21968 processing
21969 These requests have arrived prior to the requests in the busy queue
21970 (bc they needed to be processed in order to be placed in this queue)
21971 => they will be placed at the front of the busy queue
21972 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021974
21975 if ( NULL == pNode )
21976 {
21977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021978 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 return WDI_STATUS_SUCCESS;
21980 }
21981
21982 /*The node actually points to the 1st element inside the Session Id struct -
21983 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985
21986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21987 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21988
21989 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21990 {
21991 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021992
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 the front of the main waiting queue for subsequent execution*/
21995 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 while ( NULL != pNode )
21997 {
21998 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021999 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22000 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022003 }
22004 else
22005 {
22006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 WPAL_ASSERT(0);
22009 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022012
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22014 wpalMemoryFree(pSessionIdElement);
22015 return WDI_STATUS_SUCCESS;
22016}/*WDI_DequeueAssocRequest*/
22017
22018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 pending requests - all req cb will be called with
22021 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022022 @param
22023
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022025
22026 @see
22027 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022028*/
22029WDI_Status
22030WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022031(
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 WDI_ControlBlockType* pWDICtx
22033)
22034{
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 void* pUserData;
22039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22040
Jeff Johnsone7245742012-09-05 17:12:55 -070022041 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022042
22043 /*------------------------------------------------------------------------
22044 Go through all the requests and fail them - this will only be called
22045 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 ------------------------------------------------------------------------*/
22048 while( pNode )
22049 {
22050 /*The node actually points to the 1st element inside the Event Data struct -
22051 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 pEventDataQueue = (WDI_EventInfoType*)pNode;
22053
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22055 if ( NULL != pfnReqStatusCB )
22056 {
22057 /*Fail the request*/
22058 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22059 }
22060 /* Free data - that was allocated when queueing */
22061 if ( pEventDataQueue->pEventData != NULL )
22062 {
22063 wpalMemoryFree(pEventDataQueue->pEventData);
22064 }
22065 wpalMemoryFree(pEventDataQueue);
22066
22067 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22068 {
22069 break;
22070 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022071 }
22072
Jeff Johnson295189b2012-06-20 16:38:30 -070022073 return WDI_STATUS_SUCCESS;
22074}/*WDI_ClearPendingRequests*/
22075
22076/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 @brief Helper routine used to init the BSS Sessions in the WDI control block
22078
22079
22080 @param pWDICtx: pointer to the WLAN DAL context
22081
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 @see
22083*/
22084void
22085WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022086(
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 WDI_ControlBlockType* pWDICtx
22088)
22089{
Jeff Johnsone7245742012-09-05 17:12:55 -070022090 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22092
22093 /*-------------------------------------------------------------------------
22094 No Sanity check
22095 -------------------------------------------------------------------------*/
22096 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022098 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22100 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22101 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22102 }
22103}/*WDI_ResetAssocSessions*/
22104
22105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 @brief Helper routine used to find a session based on the BSSID
22107
22108
22109 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 pSession: pointer to the session (if found)
22112
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022115*/
22116wpt_uint8
22117WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022118(
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 WDI_ControlBlockType* pWDICtx,
22120 wpt_macAddr macBSSID,
22121 WDI_BSSSessionType** ppSession
22122)
22123{
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22126
22127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 -------------------------------------------------------------------------*/
22130 if ( NULL == ppSession )
22131 {
22132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022133 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 }
22136
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022138
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 /*------------------------------------------------------------------------
22140 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 ------------------------------------------------------------------------*/
22142 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22143 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022144 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22145 (eWLAN_PAL_TRUE ==
22146 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22147 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 {
22149 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022150 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 return i;
22152 }
22153 }
22154
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022156}/*WDI_FindAssocSession*/
22157
22158/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 @brief Helper routine used to find a session based on the BSSID
22160
22161
22162 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022163 ucBSSIdx: BSS Index of the session
22164 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022165
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022168*/
22169wpt_uint8
22170WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022171(
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 WDI_ControlBlockType* pWDICtx,
22173 wpt_uint16 ucBSSIdx,
22174 WDI_BSSSessionType** ppSession
22175)
22176{
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22179
22180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 -------------------------------------------------------------------------*/
22183 if ( NULL == ppSession )
22184 {
22185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022186 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 }
22189
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022191
Jeff Johnsone7245742012-09-05 17:12:55 -070022192 /*------------------------------------------------------------------------
22193 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 ------------------------------------------------------------------------*/
22195 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22196 {
22197 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22198 {
22199 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 return i;
22202 }
22203 }
22204
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022206}/*WDI_FindAssocSessionByBSSIdx*/
22207
22208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 @brief Helper routine used to find a session based on the BSSID
22210
22211
22212 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 ucBSSIdx: BSS Index of the session
22214 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022215
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022218*/
22219wpt_uint8
22220WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022221(
Jeff Johnson295189b2012-06-20 16:38:30 -070022222 WDI_ControlBlockType* pWDICtx,
22223 wpt_uint16 usIdx,
22224 WDI_BSSSessionType** ppSession
22225)
22226{
22227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22228
22229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022231 -------------------------------------------------------------------------*/
22232 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22233 {
22234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022235 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022236 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022237 }
22238
22239 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022241
22242 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022243
Jeff Johnson295189b2012-06-20 16:38:30 -070022244}/*WDI_FindAssocSessionByBSSIdx*/
22245
22246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022249
22250
22251 @param pWDICtx: pointer to the WLAN DAL context
22252 pSession: pointer to the session (if found)
22253
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022256*/
22257wpt_uint8
22258WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022259(
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 WDI_ControlBlockType* pWDICtx,
22261 WDI_BSSSessionType** ppSession
22262)
22263{
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 -------------------------------------------------------------------------*/
22269 if ( NULL == ppSession )
22270 {
22271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022272 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 }
22275
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022277
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 /*------------------------------------------------------------------------
22279 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022280 ------------------------------------------------------------------------*/
22281 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22282 {
22283 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22284 {
22285 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 return i;
22288 }
22289 }
22290
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022292}/*WDI_FindEmptySession*/
22293
22294
22295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022297 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022298
22299
22300 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022301 macBSSID: pointer to BSSID. If NULL, get all the session.
22302 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22303 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22304 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 @see
22306 @return Number of sessions in use
22307*/
22308wpt_uint8
22309WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022310(
Hoonki Lee26599972013-04-24 01:21:58 -070022311 WDI_ControlBlockType* pWDICtx,
22312 wpt_macAddr macBSSID,
22313 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022314)
22315{
Jeff Johnsone7245742012-09-05 17:12:55 -070022316 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022318
22319 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 Count all sessions in use
22321 ------------------------------------------------------------------------*/
22322 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22323 {
Hoonki Lee26599972013-04-24 01:21:58 -070022324 if ( macBSSID && skipBSSID &&
22325 (eWLAN_PAL_TRUE ==
22326 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22327 WDI_MAC_ADDR_LEN)))
22328 {
22329 continue;
22330 }
22331 else if ( pWDICtx->aBSSSessions[i].bInUse )
22332 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022334 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 }
22336
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022338}/*WDI_GetActiveSessionsCount*/
22339
22340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022343
22344
22345 @param pWDICtx: pointer to the WLAN DAL context
22346 pSession: pointer to the session (if found)
22347
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022349 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022350*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022351void
Jeff Johnson295189b2012-06-20 16:38:30 -070022352WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022353(
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 WDI_ControlBlockType* pWDICtx,
22355 WDI_BSSSessionType* ppSession
22356)
22357{
22358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 -------------------------------------------------------------------------*/
22361 if ( NULL == ppSession )
22362 {
22363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022364 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 }
22367
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 /*------------------------------------------------------------------------
22369 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 ------------------------------------------------------------------------*/
22371 wpal_list_destroy(&ppSession->wptPendingQueue);
22372 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22374 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22376 wpal_list_init(&ppSession->wptPendingQueue);
22377
22378}/*WDI_DeleteSession*/
22379
22380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022382 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022383 @param
22384
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 WDI_AddStaParams: - pointer to the WDI Add STA params
22386 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022387
22388 @see
22389 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022390*/
22391void
22392WDI_AddBcastSTAtoSTATable
22393(
22394 WDI_ControlBlockType* pWDICtx,
22395 WDI_AddStaParams * staParams,
22396 wpt_uint16 usBcastStaIdx
22397)
22398{
22399 WDI_AddStaParams wdiAddSTAParam = {0};
22400 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22402
22403 /*---------------------------------------------------------------------
22404 Sanity check
22405 ---------------------------------------------------------------------*/
22406 if ( NULL == staParams )
22407 {
22408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022410
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 }
22413
22414 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22415 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22416 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22417 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22418 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22419 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22420 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22421 WDI_MAC_ADDR_LEN );
22422 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22423 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22424 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22425 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22426 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22427 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22428 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022429
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22431}
22432
22433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 @brief NV blob will be divided into fragments of size 4kb and
22435 Sent to HAL
22436
22437 @param pWDICtx: pointer to the WLAN DAL context
22438 pEventData: pointer to the event information structure
22439
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 @see
22441 @return Result of the function call
22442 */
22443
22444WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022445(
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 WDI_ControlBlockType* pWDICtx,
22447 WDI_EventInfoType* pEventData
22448)
22449{
22450
22451 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22452 wpt_uint8* pSendBuffer = NULL;
22453 wpt_uint16 usDataOffset = 0;
22454 wpt_uint16 usSendSize = 0;
22455 wpt_uint16 usCurrentFragmentSize =0;
22456 wpt_uint8* pSrcBuffer = NULL;
22457 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22458 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22459
22460 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22461 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22462 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22463
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22466
22467 /* Update the current Fragment Number */
22468 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22469
22470 /*Update the HAL REQ structure */
22471 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22472 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22473 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22474
22475 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022476 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 image will be sent to HAL*/
22478
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22485 usCurrentFragmentSize = FRAGMENT_SIZE;
22486
22487 /*Update the HAL REQ structure */
22488 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22489 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22490
22491 }
22492 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 usCurrentFragmentSize = FRAGMENT_SIZE;
22495
22496 /*Update the HAL REQ structure */
22497 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22498 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22499 }
22500
22501 /*-----------------------------------------------------------------------
22502 Get message buffer
22503 -----------------------------------------------------------------------*/
22504 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22505 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22506 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22509 {
22510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022511 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 pEventData, pwdiNvDownloadReqParams);
22513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 }
22516
22517 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22520
22521 /* Appending the NV image fragment */
22522 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22523 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22524 usCurrentFragmentSize);
22525
22526 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022528
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22530 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022531 WDI_NV_DOWNLOAD_RESP);
22532
22533}
Jeff Johnsone7245742012-09-05 17:12:55 -070022534/*============================================================================
22535 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022536 ============================================================================*/
22537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022538 @brief Helper routine used to find a session based on the BSSID
22539 @param pContext: pointer to the WLAN DAL context
22540 @param pDPContext: pointer to the Datapath context
22541
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022543 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022544*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022545WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022546WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22547{
22548 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22549
22550 pCB->pDPContext = pDPContext;
22551 return;
22552}
22553
22554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 @brief Helper routine used to find a session based on the BSSID
22556
22557
22558 @param pContext: pointer to the WLAN DAL context
22559
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 @see
22561 @return pointer to Datapath context
22562*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022563WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022564WDI_DS_GetDatapathContext (void *pContext)
22565{
22566 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22567 return pCB->pDPContext;
22568}
22569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 @brief Helper routine used to find a session based on the BSSID
22571
22572
22573 @param pContext: pointer to the WLAN DAL context
22574 @param pDTDriverContext: pointer to the Transport Driver context
22575
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 @see
22577 @return void
22578*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022579WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022580WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22581{
22582 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22583
22584 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022586}
22587
22588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 @brief Helper routine used to find a session based on the BSSID
22590
22591
22592 @param pWDICtx: pointer to the WLAN DAL context
22593
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022596*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022597WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022598WDT_GetTransportDriverContext (void *pContext)
22599{
22600 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022602}
22603
Jeff Johnsone7245742012-09-05 17:12:55 -070022604/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 Helper inline converters
22606 ============================================================================*/
22607/*Convert WDI driver type into HAL driver type*/
22608WPT_STATIC WPT_INLINE WDI_Status
22609WDI_HAL_2_WDI_STATUS
22610(
22611 eHalStatus halStatus
22612)
22613{
Jeff Johnsone7245742012-09-05 17:12:55 -070022614 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 the chances of getting inlined*/
22616 switch( halStatus )
22617 {
22618 case eHAL_STATUS_SUCCESS:
22619 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22620 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22621 return WDI_STATUS_SUCCESS;
22622 case eHAL_STATUS_FAILURE:
22623 return WDI_STATUS_E_FAILURE;
22624 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 return WDI_STATUS_MEM_FAILURE;
22626 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 default:
22629 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22630 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022631
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022633}/*WDI_HAL_2_WDI_STATUS*/
22634
22635/*Convert WDI request type into HAL request type*/
22636WPT_STATIC WPT_INLINE tHalHostMsgType
22637WDI_2_HAL_REQ_TYPE
22638(
22639 WDI_RequestEnumType wdiReqType
22640)
22641{
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 the chances of getting inlined*/
22644 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022651 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022657 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022676 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 return WLAN_HAL_RMV_STAKEY_REQ;
22681 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022682 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022685 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022686 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 case WDI_DEL_BA_REQ:
22690 return WLAN_HAL_DEL_BA_REQ;
22691#ifdef FEATURE_WLAN_CCX
22692 case WDI_TSM_STATS_REQ:
22693 return WLAN_HAL_TSM_STATS_REQ;
22694#endif
22695 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 case WDI_ADD_BA_SESSION_REQ:
22706 return WLAN_HAL_ADD_BA_SESSION_REQ;
22707 case WDI_TRIGGER_BA_REQ:
22708 return WLAN_HAL_TRIGGER_BA_REQ;
22709 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22714 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22715 case WDI_SET_MAX_TX_POWER_REQ:
22716 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussainfc753992013-08-09 15:09:58 -070022717 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22718 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schangd82195a2013-03-13 18:41:24 -070022719 case WDI_SET_TX_POWER_REQ:
22720 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22722 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022723#ifdef FEATURE_WLAN_TDLS
22724 case WDI_TDLS_LINK_ESTABLISH_REQ:
22725 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22726#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022744 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 case WDI_REM_BEACON_FILTER_REQ:
22748 return WLAN_HAL_REM_BCN_FILTER_REQ;
22749 case WDI_SET_RSSI_THRESHOLDS_REQ:
22750 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22751 case WDI_HOST_OFFLOAD_REQ:
22752 return WLAN_HAL_HOST_OFFLOAD_REQ;
22753 case WDI_WOWL_ADD_BC_PTRN_REQ:
22754 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22755 case WDI_WOWL_DEL_BC_PTRN_REQ:
22756 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22757 case WDI_WOWL_ENTER_REQ:
22758 return WLAN_HAL_ENTER_WOWL_REQ;
22759 case WDI_WOWL_EXIT_REQ:
22760 return WLAN_HAL_EXIT_WOWL_REQ;
22761 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22762 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22763 case WDI_NV_DOWNLOAD_REQ:
22764 return WLAN_HAL_DOWNLOAD_NV_REQ;
22765 case WDI_FLUSH_AC_REQ:
22766 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22767 case WDI_BTAMP_EVENT_REQ:
22768 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22769#ifdef WLAN_FEATURE_VOWIFI_11R
22770 case WDI_AGGR_ADD_TS_REQ:
22771 return WLAN_HAL_AGGR_ADD_TS_REQ;
22772#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022773 case WDI_FTM_CMD_REQ:
22774 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022775 case WDI_ADD_STA_SELF_REQ:
22776 return WLAN_HAL_ADD_STA_SELF_REQ;
22777 case WDI_DEL_STA_SELF_REQ:
22778 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022779#ifdef FEATURE_OEM_DATA_SUPPORT
22780 case WDI_START_OEM_DATA_REQ:
22781 return WLAN_HAL_START_OEM_DATA_REQ;
22782#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 case WDI_HOST_RESUME_REQ:
22784 return WLAN_HAL_HOST_RESUME_REQ;
22785 case WDI_HOST_SUSPEND_IND:
22786 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022787 case WDI_TRAFFIC_STATS_IND:
22788 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022789#ifdef WLAN_FEATURE_11W
22790 case WDI_EXCLUDE_UNENCRYPTED_IND:
22791 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22792#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 case WDI_KEEP_ALIVE_REQ:
22794 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022795#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022796 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22797 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022798#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022799#ifdef FEATURE_WLAN_SCAN_PNO
22800 case WDI_SET_PREF_NETWORK_REQ:
22801 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22802 case WDI_SET_RSSI_FILTER_REQ:
22803 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22804 case WDI_UPDATE_SCAN_PARAMS_REQ:
22805 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22806#endif // FEATURE_WLAN_SCAN_PNO
22807 case WDI_SET_TX_PER_TRACKING_REQ:
22808 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22809#ifdef WLAN_FEATURE_PACKET_FILTERING
22810 case WDI_8023_MULTICAST_LIST_REQ:
22811 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22812 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22815 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22816 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22817 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22818#endif // WLAN_FEATURE_PACKET_FILTERING
22819 case WDI_HAL_DUMP_CMD_REQ:
22820 return WLAN_HAL_DUMP_COMMAND_REQ;
22821#ifdef WLAN_FEATURE_GTK_OFFLOAD
22822 case WDI_GTK_OFFLOAD_REQ:
22823 return WLAN_HAL_GTK_OFFLOAD_REQ;
22824 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22825 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22826#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22827
22828 case WDI_INIT_SCAN_CON_REQ:
22829 return WLAN_HAL_INIT_SCAN_CON_REQ;
22830 case WDI_SET_POWER_PARAMS_REQ:
22831 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22832 case WDI_SET_TM_LEVEL_REQ:
22833 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22834 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22835 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022836#ifdef WLAN_FEATURE_11AC
22837 case WDI_UPDATE_VHT_OP_MODE_REQ:
22838 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22839#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022840 case WDI_GET_ROAM_RSSI_REQ:
22841 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022842 case WDI_DHCP_START_IND:
22843 return WLAN_HAL_DHCP_START_IND;
22844 case WDI_DHCP_STOP_IND:
22845 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022846#ifdef FEATURE_WLAN_LPHB
22847 case WDI_LPHB_CFG_REQ:
22848 return WLAN_HAL_LPHB_CFG_REQ;
22849#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022850 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22851 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22852 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22853 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22854
Rajeev3db91f12013-10-05 11:03:42 +053022855#ifdef FEATURE_WLAN_BATCH_SCAN
22856 case WDI_SET_BATCH_SCAN_REQ:
22857 return WLAN_HAL_BATCHSCAN_SET_REQ;
22858 case WDI_STOP_BATCH_SCAN_IND:
22859 return WLAN_HAL_BATCHSCAN_STOP_IND;
22860 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22861 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22862#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022863 case WDI_RATE_UPDATE_IND:
22864 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022865
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022869
Jeff Johnson295189b2012-06-20 16:38:30 -070022870}/*WDI_2_HAL_REQ_TYPE*/
22871
22872/*Convert WDI response type into HAL response type*/
22873WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22874HAL_2_WDI_RSP_TYPE
22875(
22876 tHalHostMsgType halMsg
22877)
22878{
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 the chances of getting inlined*/
22881 switch( halMsg )
22882 {
22883 case WLAN_HAL_START_RSP:
22884 return WDI_START_RESP;
22885 case WLAN_HAL_STOP_RSP:
22886 return WDI_STOP_RESP;
22887 case WLAN_HAL_INIT_SCAN_RSP:
22888 return WDI_INIT_SCAN_RESP;
22889 case WLAN_HAL_START_SCAN_RSP:
22890 return WDI_START_SCAN_RESP;
22891 case WLAN_HAL_END_SCAN_RSP:
22892 return WDI_END_SCAN_RESP;
22893 case WLAN_HAL_FINISH_SCAN_RSP:
22894 return WDI_FINISH_SCAN_RESP;
22895 case WLAN_HAL_CONFIG_STA_RSP:
22896 return WDI_CONFIG_STA_RESP;
22897 case WLAN_HAL_DELETE_STA_RSP:
22898 return WDI_DEL_STA_RESP;
22899 case WLAN_HAL_CONFIG_BSS_RSP:
22900 return WDI_CONFIG_BSS_RESP;
22901 case WLAN_HAL_DELETE_BSS_RSP:
22902 return WDI_DEL_BSS_RESP;
22903 case WLAN_HAL_JOIN_RSP:
22904 return WDI_JOIN_RESP;
22905 case WLAN_HAL_POST_ASSOC_RSP:
22906 return WDI_POST_ASSOC_RESP;
22907 case WLAN_HAL_SET_BSSKEY_RSP:
22908 return WDI_SET_BSS_KEY_RESP;
22909 case WLAN_HAL_SET_STAKEY_RSP:
22910 return WDI_SET_STA_KEY_RESP;
22911 case WLAN_HAL_RMV_BSSKEY_RSP:
22912 return WDI_RMV_BSS_KEY_RESP;
22913 case WLAN_HAL_RMV_STAKEY_RSP:
22914 return WDI_RMV_STA_KEY_RESP;
22915 case WLAN_HAL_SET_BCASTKEY_RSP:
22916 return WDI_SET_STA_BCAST_KEY_RESP;
22917 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22918 // return WDI_RMV_STA_BCAST_KEY_RESP;
22919 case WLAN_HAL_ADD_TS_RSP:
22920 return WDI_ADD_TS_RESP;
22921 case WLAN_HAL_DEL_TS_RSP:
22922 return WDI_DEL_TS_RESP;
22923 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22924 return WDI_UPD_EDCA_PRMS_RESP;
22925 case WLAN_HAL_ADD_BA_RSP:
22926 return WDI_ADD_BA_RESP;
22927 case WLAN_HAL_DEL_BA_RSP:
22928 return WDI_DEL_BA_RESP;
22929#ifdef FEATURE_WLAN_CCX
22930 case WLAN_HAL_TSM_STATS_RSP:
22931 return WDI_TSM_STATS_RESP;
22932#endif
22933 case WLAN_HAL_CH_SWITCH_RSP:
22934 return WDI_CH_SWITCH_RESP;
22935 case WLAN_HAL_SET_LINK_ST_RSP:
22936 return WDI_SET_LINK_ST_RESP;
22937 case WLAN_HAL_GET_STATS_RSP:
22938 return WDI_GET_STATS_RESP;
22939 case WLAN_HAL_UPDATE_CFG_RSP:
22940 return WDI_UPDATE_CFG_RESP;
22941 case WLAN_HAL_ADD_BA_SESSION_RSP:
22942 return WDI_ADD_BA_SESSION_RESP;
22943 case WLAN_HAL_TRIGGER_BA_RSP:
22944 return WDI_TRIGGER_BA_RESP;
22945 case WLAN_HAL_UPDATE_BEACON_RSP:
22946 return WDI_UPD_BCON_PRMS_RESP;
22947 case WLAN_HAL_SEND_BEACON_RSP:
22948 return WDI_SND_BCON_RESP;
22949 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22950 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22951 /*Indications*/
22952 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22953 return WDI_HAL_RSSI_NOTIFICATION_IND;
22954 case WLAN_HAL_MISSED_BEACON_IND:
22955 return WDI_HAL_MISSED_BEACON_IND;
22956 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22957 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22958 case WLAN_HAL_MIC_FAILURE_IND:
22959 return WDI_HAL_MIC_FAILURE_IND;
22960 case WLAN_HAL_FATAL_ERROR_IND:
22961 return WDI_HAL_FATAL_ERROR_IND;
22962 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22963 return WDI_HAL_DEL_STA_IND;
22964 case WLAN_HAL_COEX_IND:
22965 return WDI_HAL_COEX_IND;
22966 case WLAN_HAL_OTA_TX_COMPL_IND:
22967 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022968 case WLAN_HAL_P2P_NOA_ATTR_IND:
22969 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022970 case WLAN_HAL_P2P_NOA_START_IND:
22971 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 case WLAN_HAL_TX_PER_HIT_IND:
22973 return WDI_HAL_TX_PER_HIT_IND;
22974 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22975 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussainfc753992013-08-09 15:09:58 -070022976 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
22977 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schangd82195a2013-03-13 18:41:24 -070022978 case WLAN_HAL_SET_TX_POWER_RSP:
22979 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 case WLAN_HAL_SET_P2P_GONOA_RSP:
22981 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022982#ifdef FEATURE_WLAN_TDLS
22983 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22984 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22985 case WLAN_HAL_TDLS_IND:
22986 return WDI_HAL_TDLS_IND;
22987#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023003 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023004 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23007 return WDI_SET_BEACON_FILTER_RESP;
23008 case WLAN_HAL_REM_BCN_FILTER_RSP:
23009 return WDI_REM_BEACON_FILTER_RESP;
23010 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23011 return WDI_SET_RSSI_THRESHOLDS_RESP;
23012 case WLAN_HAL_HOST_OFFLOAD_RSP:
23013 return WDI_HOST_OFFLOAD_RESP;
23014 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23015 return WDI_WOWL_ADD_BC_PTRN_RESP;
23016 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23017 return WDI_WOWL_DEL_BC_PTRN_RESP;
23018 case WLAN_HAL_ENTER_WOWL_RSP:
23019 return WDI_WOWL_ENTER_RESP;
23020 case WLAN_HAL_EXIT_WOWL_RSP:
23021 return WDI_WOWL_EXIT_RESP;
23022 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23023 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23024 case WLAN_HAL_DOWNLOAD_NV_RSP:
23025 return WDI_NV_DOWNLOAD_RESP;
23026 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23027 return WDI_FLUSH_AC_RESP;
23028 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23029 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023030 case WLAN_HAL_PROCESS_PTT_RSP:
23031 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023032 case WLAN_HAL_ADD_STA_SELF_RSP:
23033 return WDI_ADD_STA_SELF_RESP;
23034case WLAN_HAL_DEL_STA_SELF_RSP:
23035 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023036#ifdef FEATURE_OEM_DATA_SUPPORT
23037 case WLAN_HAL_START_OEM_DATA_RSP:
23038 return WDI_START_OEM_DATA_RESP;
23039#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 case WLAN_HAL_HOST_RESUME_RSP:
23041 return WDI_HOST_RESUME_RESP;
23042 case WLAN_HAL_KEEP_ALIVE_RSP:
23043 return WDI_KEEP_ALIVE_RESP;
23044#ifdef FEATURE_WLAN_SCAN_PNO
23045 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23046 return WDI_SET_PREF_NETWORK_RESP;
23047 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23050 return WDI_UPDATE_SCAN_PARAMS_RESP;
23051 case WLAN_HAL_PREF_NETW_FOUND_IND:
23052 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23053#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023054#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070023055 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23056 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070023057#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23059 return WDI_SET_TX_PER_TRACKING_RESP;
23060#ifdef WLAN_FEATURE_PACKET_FILTERING
23061 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23062 return WDI_8023_MULTICAST_LIST_RESP;
23063 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23064 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23065 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23066 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23067 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23068 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23069#endif // WLAN_FEATURE_PACKET_FILTERING
23070
23071 case WLAN_HAL_DUMP_COMMAND_RSP:
23072 return WDI_HAL_DUMP_CMD_RESP;
23073 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23074 return WDI_SET_POWER_PARAMS_RESP;
23075#ifdef WLAN_FEATURE_VOWIFI_11R
23076 case WLAN_HAL_AGGR_ADD_TS_RSP:
23077 return WDI_AGGR_ADD_TS_RESP;
23078#endif
23079
23080#ifdef WLAN_FEATURE_GTK_OFFLOAD
23081 case WLAN_HAL_GTK_OFFLOAD_RSP:
23082 return WDI_GTK_OFFLOAD_RESP;
23083 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23084 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23085#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23086#ifdef WLAN_WAKEUP_EVENTS
23087 case WLAN_HAL_WAKE_REASON_IND:
23088 return WDI_HAL_WAKE_REASON_IND;
23089#endif // WLAN_WAKEUP_EVENTS
23090
23091 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23092 return WDI_SET_TM_LEVEL_RESP;
23093 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23094 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023095#ifdef WLAN_FEATURE_11AC
23096 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23097 return WDI_UPDATE_VHT_OP_MODE_RESP;
23098#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023099#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23100 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23101 return WDI_GET_ROAM_RSSI_RESP;
23102#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070023103
Leo Chang00bc9132013-08-01 19:21:11 -070023104#ifdef FEATURE_WLAN_LPHB
23105 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070023106 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070023107 case WLAN_HAL_LPHB_CFG_RSP:
23108 return WDI_LPHB_CFG_RESP;
23109#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070023110
23111 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23112 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070023113 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23114 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070023115
Rajeev3db91f12013-10-05 11:03:42 +053023116#ifdef FEATURE_WLAN_BATCH_SCAN
23117 case WLAN_HAL_BATCHSCAN_SET_RSP:
23118 return WDI_SET_BATCH_SCAN_RESP;
23119 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23120 return WDI_BATCHSCAN_RESULT_IND;
23121#endif // FEATURE_WLAN_BATCH_SCAN
23122
Leo Changd95d6622013-12-15 15:18:55 -080023123#ifdef FEATURE_WLAN_CH_AVOID
23124 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23125 return WDI_HAL_CH_AVOID_IND;
23126#endif /* FEATURE_WLAN_CH_AVOID */
23127
Jeff Johnson295189b2012-06-20 16:38:30 -070023128 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023129 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023130 }
23131
23132}/*HAL_2_WDI_RSP_TYPE*/
23133
23134
23135/*Convert WDI driver type into HAL driver type*/
23136WPT_STATIC WPT_INLINE tDriverType
23137WDI_2_HAL_DRV_TYPE
23138(
23139 WDI_DriverType wdiDriverType
23140)
23141{
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 the chances of getting inlined*/
23144 switch( wdiDriverType )
23145 {
23146 case WDI_DRIVER_TYPE_PRODUCTION:
23147 return eDRIVER_TYPE_PRODUCTION;
23148 case WDI_DRIVER_TYPE_MFG:
23149 return eDRIVER_TYPE_MFG;
23150 case WDI_DRIVER_TYPE_DVT:
23151 return eDRIVER_TYPE_DVT;
23152 }
23153
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155}/*WDI_2_HAL_DRV_TYPE*/
23156
23157
23158/*Convert WDI stop reason into HAL stop reason*/
23159WPT_STATIC WPT_INLINE tHalStopType
23160WDI_2_HAL_STOP_REASON
23161(
23162 WDI_StopType wdiDriverType
23163)
23164{
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 the chances of getting inlined*/
23167 switch( wdiDriverType )
23168 {
23169 case WDI_STOP_TYPE_SYS_RESET:
23170 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023171 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23172 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023173 case WDI_STOP_TYPE_RF_KILL:
23174 return HAL_STOP_TYPE_RF_KILL;
23175 }
23176
Jeff Johnsone7245742012-09-05 17:12:55 -070023177 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023178}/*WDI_2_HAL_STOP_REASON*/
23179
23180
23181/*Convert WDI scan mode type into HAL scan mode type*/
23182WPT_STATIC WPT_INLINE eHalSysMode
23183WDI_2_HAL_SCAN_MODE
23184(
23185 WDI_ScanMode wdiScanMode
23186)
23187{
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 the chances of getting inlined*/
23190 switch( wdiScanMode )
23191 {
23192 case WDI_SCAN_MODE_NORMAL:
23193 return eHAL_SYS_MODE_NORMAL;
23194 case WDI_SCAN_MODE_LEARN:
23195 return eHAL_SYS_MODE_LEARN;
23196 case WDI_SCAN_MODE_SCAN:
23197 return eHAL_SYS_MODE_SCAN;
23198 case WDI_SCAN_MODE_PROMISC:
23199 return eHAL_SYS_MODE_PROMISC;
23200 case WDI_SCAN_MODE_SUSPEND_LINK:
23201 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023202 case WDI_SCAN_MODE_ROAM_SCAN:
23203 return eHAL_SYS_MODE_ROAM_SCAN;
23204 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23205 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 }
23207
Jeff Johnsone7245742012-09-05 17:12:55 -070023208 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023209}/*WDI_2_HAL_SCAN_MODE*/
23210
23211/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023212WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023213WDI_2_HAL_SEC_CH_OFFSET
23214(
23215 WDI_HTSecondaryChannelOffset wdiSecChOffset
23216)
23217{
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 the chances of getting inlined*/
23220 switch( wdiSecChOffset )
23221 {
23222 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23228#ifdef WLAN_FEATURE_11AC
23229 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23230 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23231 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23232 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23233 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23234 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23235 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23236 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23237 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23238 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23239 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23240 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23241 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23242 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23243#endif
23244 default:
23245 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 }
23247
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023249}/*WDI_2_HAL_SEC_CH_OFFSET*/
23250
23251/*Convert WDI BSS type into HAL BSS type*/
23252WPT_STATIC WPT_INLINE tSirBssType
23253WDI_2_HAL_BSS_TYPE
23254(
23255 WDI_BssType wdiBSSType
23256)
23257{
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 the chances of getting inlined*/
23260 switch( wdiBSSType )
23261 {
23262 case WDI_INFRASTRUCTURE_MODE:
23263 return eSIR_INFRASTRUCTURE_MODE;
23264 case WDI_INFRA_AP_MODE:
23265 return eSIR_INFRA_AP_MODE;
23266 case WDI_IBSS_MODE:
23267 return eSIR_IBSS_MODE;
23268 case WDI_BTAMP_STA_MODE:
23269 return eSIR_BTAMP_STA_MODE;
23270 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023271 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 case WDI_BSS_AUTO_MODE:
23273 return eSIR_AUTO_MODE;
23274 }
23275
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023277}/*WDI_2_HAL_BSS_TYPE*/
23278
23279/*Convert WDI NW type into HAL NW type*/
23280WPT_STATIC WPT_INLINE tSirNwType
23281WDI_2_HAL_NW_TYPE
23282(
23283 WDI_NwType wdiNWType
23284)
23285{
Jeff Johnsone7245742012-09-05 17:12:55 -070023286 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 the chances of getting inlined*/
23288 switch( wdiNWType )
23289 {
23290 case WDI_11A_NW_TYPE:
23291 return eSIR_11A_NW_TYPE;
23292 case WDI_11B_NW_TYPE:
23293 return eSIR_11B_NW_TYPE;
23294 case WDI_11G_NW_TYPE:
23295 return eSIR_11G_NW_TYPE;
23296 case WDI_11N_NW_TYPE:
23297 return eSIR_11N_NW_TYPE;
23298 }
23299
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301}/*WDI_2_HAL_NW_TYPE*/
23302
23303/*Convert WDI chanel bonding type into HAL cb type*/
23304WPT_STATIC WPT_INLINE ePhyChanBondState
23305WDI_2_HAL_CB_STATE
23306(
23307 WDI_PhyChanBondState wdiCbState
23308)
23309{
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 the chances of getting inlined*/
23312 switch ( wdiCbState )
23313 {
23314 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23315 return PHY_SINGLE_CHANNEL_CENTERED;
23316 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23317 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23318 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23319 return PHY_DOUBLE_CHANNEL_CENTERED;
23320 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23321 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023322#ifdef WLAN_FEATURE_11AC
23323 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23324 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23325 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23326 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23327 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23328 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23329 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23330 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23331 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23332 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23333 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23334 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23335 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23336 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23337#endif
23338 case WDI_MAX_CB_STATE:
23339 default:
23340 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023342
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 return PHY_CHANNEL_BONDING_STATE_MAX;
23344}/*WDI_2_HAL_CB_STATE*/
23345
23346/*Convert WDI chanel bonding type into HAL cb type*/
23347WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23348WDI_2_HAL_HT_OPER_MODE
23349(
23350 WDI_HTOperatingMode wdiHTOperMode
23351)
23352{
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 the chances of getting inlined*/
23355 switch ( wdiHTOperMode )
23356 {
23357 case WDI_HT_OP_MODE_PURE:
23358 return eSIR_HT_OP_MODE_PURE;
23359 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23360 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23361 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23362 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23363 case WDI_HT_OP_MODE_MIXED:
23364 return eSIR_HT_OP_MODE_MIXED;
23365 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023366
Jeff Johnson295189b2012-06-20 16:38:30 -070023367 return eSIR_HT_OP_MODE_MAX;
23368}/*WDI_2_HAL_HT_OPER_MODE*/
23369
23370/*Convert WDI mimo PS type into HAL mimo PS type*/
23371WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23372WDI_2_HAL_MIMO_PS
23373(
23374 WDI_HTMIMOPowerSaveState wdiHTOperMode
23375)
23376{
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 the chances of getting inlined*/
23379 switch ( wdiHTOperMode )
23380 {
23381 case WDI_HT_MIMO_PS_STATIC:
23382 return eSIR_HT_MIMO_PS_STATIC;
23383 case WDI_HT_MIMO_PS_DYNAMIC:
23384 return eSIR_HT_MIMO_PS_DYNAMIC;
23385 case WDI_HT_MIMO_PS_NA:
23386 return eSIR_HT_MIMO_PS_NA;
23387 case WDI_HT_MIMO_PS_NO_LIMIT:
23388 return eSIR_HT_MIMO_PS_NO_LIMIT;
23389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023390
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 return eSIR_HT_MIMO_PS_MAX;
23392}/*WDI_2_HAL_MIMO_PS*/
23393
23394/*Convert WDI ENC type into HAL ENC type*/
23395WPT_STATIC WPT_INLINE tAniEdType
23396WDI_2_HAL_ENC_TYPE
23397(
23398 WDI_EncryptType wdiEncType
23399)
23400{
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 the chances of getting inlined*/
23403 switch ( wdiEncType )
23404 {
23405 case WDI_ENCR_NONE:
23406 return eSIR_ED_NONE;
23407
23408 case WDI_ENCR_WEP40:
23409 return eSIR_ED_WEP40;
23410
23411 case WDI_ENCR_WEP104:
23412 return eSIR_ED_WEP104;
23413
23414 case WDI_ENCR_TKIP:
23415 return eSIR_ED_TKIP;
23416
23417 case WDI_ENCR_CCMP:
23418 return eSIR_ED_CCMP;
23419
23420 case WDI_ENCR_AES_128_CMAC:
23421 return eSIR_ED_AES_128_CMAC;
23422#if defined(FEATURE_WLAN_WAPI)
23423 case WDI_ENCR_WPI:
23424 return eSIR_ED_WPI;
23425#endif
23426 default:
23427 return eSIR_ED_NOT_IMPLEMENTED;
23428 }
23429
23430}/*WDI_2_HAL_ENC_TYPE*/
23431
23432/*Convert WDI WEP type into HAL WEP type*/
23433WPT_STATIC WPT_INLINE tAniWepType
23434WDI_2_HAL_WEP_TYPE
23435(
23436 WDI_WepType wdiWEPType
23437)
23438{
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 the chances of getting inlined*/
23441 switch ( wdiWEPType )
23442 {
23443 case WDI_WEP_STATIC:
23444 return eSIR_WEP_STATIC;
23445
23446 case WDI_WEP_DYNAMIC:
23447 return eSIR_WEP_DYNAMIC;
23448 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023449
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 return eSIR_WEP_MAX;
23451}/*WDI_2_HAL_WEP_TYPE*/
23452
23453WPT_STATIC WPT_INLINE tSirLinkState
23454WDI_2_HAL_LINK_STATE
23455(
23456 WDI_LinkStateType wdiLinkState
23457)
23458{
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 the chances of getting inlined*/
23461 switch ( wdiLinkState )
23462 {
23463 case WDI_LINK_IDLE_STATE:
23464 return eSIR_LINK_IDLE_STATE;
23465
23466 case WDI_LINK_PREASSOC_STATE:
23467 return eSIR_LINK_PREASSOC_STATE;
23468
23469 case WDI_LINK_POSTASSOC_STATE:
23470 return eSIR_LINK_POSTASSOC_STATE;
23471
23472 case WDI_LINK_AP_STATE:
23473 return eSIR_LINK_AP_STATE;
23474
23475 case WDI_LINK_IBSS_STATE:
23476 return eSIR_LINK_IBSS_STATE;
23477
23478 case WDI_LINK_BTAMP_PREASSOC_STATE:
23479 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23480
23481 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23482 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23483
23484 case WDI_LINK_BTAMP_AP_STATE:
23485 return eSIR_LINK_BTAMP_AP_STATE;
23486
23487 case WDI_LINK_BTAMP_STA_STATE:
23488 return eSIR_LINK_BTAMP_STA_STATE;
23489
23490 case WDI_LINK_LEARN_STATE:
23491 return eSIR_LINK_LEARN_STATE;
23492
23493 case WDI_LINK_SCAN_STATE:
23494 return eSIR_LINK_SCAN_STATE;
23495
23496 case WDI_LINK_FINISH_SCAN_STATE:
23497 return eSIR_LINK_FINISH_SCAN_STATE;
23498
23499 case WDI_LINK_INIT_CAL_STATE:
23500 return eSIR_LINK_INIT_CAL_STATE;
23501
23502 case WDI_LINK_FINISH_CAL_STATE:
23503 return eSIR_LINK_FINISH_CAL_STATE;
23504
Jeff Johnson295189b2012-06-20 16:38:30 -070023505 case WDI_LINK_LISTEN_STATE:
23506 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023507
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023508 case WDI_LINK_SEND_ACTION_STATE:
23509 return eSIR_LINK_SEND_ACTION_STATE;
23510
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 default:
23512 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023514}
23515
Jeff Johnsone7245742012-09-05 17:12:55 -070023516/*Translate a STA Context from WDI into HAL*/
23517WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023518void
23519WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023520(
Jeff Johnson295189b2012-06-20 16:38:30 -070023521 tConfigStaParams* phalConfigSta,
23522 WDI_ConfigStaReqInfoType* pwdiConfigSta
23523)
23524{
23525 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023526#ifdef WLAN_FEATURE_11AC
23527 /* Get the Version 1 Handler */
23528 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23529 if (WDI_getFwWlanFeatCaps(DOT11AC))
23530 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023531 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 }
23533#endif
23534 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023535 the chances of getting inlined*/
23536
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 wpalMemoryCopy(phalConfigSta->bssId,
23538 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23539
23540 wpalMemoryCopy(phalConfigSta->staMac,
23541 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023542
23543 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23544 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23545 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23546 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23547 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23548 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23549 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23550 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23551 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23552 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23553 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23554 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23555 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23556 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23557 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23558 phalConfigSta->action = pwdiConfigSta->wdiAction;
23559 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23560 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23561 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23562 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23563 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23564 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23565 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023566
Jeff Johnson295189b2012-06-20 16:38:30 -070023567 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23568
Jeff Johnsone7245742012-09-05 17:12:55 -070023569 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 pwdiConfigSta->wdiSupportedRates.opRateMode;
23571 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23572 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23575 }
23576 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23580 }
23581 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23582 {
23583 phalConfigSta->supportedRates.aniLegacyRates[i] =
23584 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23585 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23588 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23589 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23592 }
23593 phalConfigSta->supportedRates.rxHighestDataRate =
23594 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23595
Jeff Johnsone7245742012-09-05 17:12:55 -070023596#ifdef WLAN_FEATURE_11AC
23597 if(phalConfigSta_V1 != NULL)
23598 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023599 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23600 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23601 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23602 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 }
23604#endif
23605
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023607
Jeff Johnsone7245742012-09-05 17:12:55 -070023608#ifdef WLAN_FEATURE_11AC
23609 if(phalConfigSta_V1 != NULL)
23610 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023611 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23612 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023613 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023614 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23615 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23616
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 }
23618#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023619}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023620
23621/*Translate a Rate set info from WDI into HAL*/
23622WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023623WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023624(
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 tSirMacRateSet* pHalRateSet,
23626 WDI_RateSet* pwdiRateSet
23627)
23628{
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23631
23632 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23633 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23634
23635 for ( i = 0; i < pHalRateSet->numRates; i++ )
23636 {
23637 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023639
Jeff Johnson295189b2012-06-20 16:38:30 -070023640}/*WDI_CopyWDIRateSetToHALRateSet*/
23641
23642
23643/*Translate an EDCA Parameter Record from WDI into HAL*/
23644WPT_STATIC WPT_INLINE void
23645WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023646(
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 tSirMacEdcaParamRecord* phalEdcaParam,
23648 WDI_EdcaParamRecord* pWDIEdcaParam
23649)
23650{
Jeff Johnsone7245742012-09-05 17:12:55 -070023651 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 the chances of getting inlined*/
23653
23654 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23655 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23656 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23657 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23658
23659 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23660 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23661 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23662}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23663
23664
23665/*Copy a management frame header from WDI fmt into HAL fmt*/
23666WPT_STATIC WPT_INLINE void
23667WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23668(
23669 tSirMacMgmtHdr* pmacMgmtHdr,
23670 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23671)
23672{
23673 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23674 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23675 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23676 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23677 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23678 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23679 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23680 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23681 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23682 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23683 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23684
23685 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23686 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23687
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 pwdiMacMgmtHdr->bssId, 6);
23694
23695 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23696 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23697 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23698
23699}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23700
23701
23702/*Copy config bss parameters from WDI fmt into HAL fmt*/
23703WPT_STATIC WPT_INLINE void
23704WDI_CopyWDIConfigBSSToHALConfigBSS
23705(
23706 tConfigBssParams* phalConfigBSS,
23707 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23708)
23709{
23710
23711 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023712#ifdef WLAN_FEATURE_11AC
23713 /* Get the Version 1 Handler */
23714 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23715 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023716 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023717#endif
23718
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 wpalMemoryCopy( phalConfigBSS->bssId,
23720 pwdiConfigBSS->macBSSID,
23721 WDI_MAC_ADDR_LEN);
23722
23723#ifdef HAL_SELF_STA_PER_BSS
23724 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23725 pwdiConfigBSS->macSelfAddr,
23726 WDI_MAC_ADDR_LEN);
23727#endif
23728
23729 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23730
23731 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23732 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23733
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 pwdiConfigBSS->ucShortSlotTimeSupported;
23736 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23737 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23738 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23739 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23740 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23743 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23744 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23745 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23746 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23747 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23748 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23749 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23750 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23751 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23752 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23753
Jeff Johnsone7245742012-09-05 17:12:55 -070023754 phalConfigBSS->htOperMode =
23755 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023756
23757 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23758 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23759 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23760 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23761
23762#ifdef WLAN_FEATURE_VOWIFI
23763 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23764#endif
23765
23766 /*! Used 32 as magic number because that is how the ssid is declared inside the
23767 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23770 pwdiConfigBSS->wdiSSID.ucLength : 32;
23771 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023772 pwdiConfigBSS->wdiSSID.sSSID,
23773 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023774
23775 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23776 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023777
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23779 &pwdiConfigBSS->wdiRateSet);
23780
23781 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23782
23783 if(phalConfigBSS->edcaParamsValid)
23784 {
23785 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23786 &pwdiConfigBSS->wdiBEEDCAParams);
23787 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23788 &pwdiConfigBSS->wdiBKEDCAParams);
23789 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23790 &pwdiConfigBSS->wdiVIEDCAParams);
23791 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23792 &pwdiConfigBSS->wdiVOEDCAParams);
23793 }
23794
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796
23797 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23798
23799#ifdef WLAN_FEATURE_VOWIFI_11R
23800
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023803
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 if( phalConfigBSS->extSetStaKeyParamValid )
23805 {
23806 /*-----------------------------------------------------------------------
23807 Copy the STA Key parameters into the HAL message
23808 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23811
Jeff Johnsone7245742012-09-05 17:12:55 -070023812 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23814
23815 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23816
23817 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23818
23819 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23820
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23822 keyIndex++)
23823 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23826 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23827 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23828 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23829 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23830 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023831 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023835 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23837 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 WDI_MAX_KEY_LENGTH);
23840 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 }
23842 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23843 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 sizeof(phalConfigBSS->extSetStaKeyParam) );
23846 }
23847
23848#endif /*WLAN_FEATURE_VOWIFI_11R*/
23849
Jeff Johnsone7245742012-09-05 17:12:55 -070023850#ifdef WLAN_FEATURE_11AC
23851 if(phalConfigBSS_V1 != NULL)
23852 {
23853 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23854 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23855 }
23856#endif
23857
Jeff Johnson295189b2012-06-20 16:38:30 -070023858}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23859
23860
Jeff Johnsone7245742012-09-05 17:12:55 -070023861/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 pointed to by user data */
23863WPT_STATIC WPT_INLINE void
23864WDI_ExtractRequestCBFromEvent
23865(
23866 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 void** ppUserData
23869)
23870{
23871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23872 switch ( pEvent->wdiRequest )
23873 {
23874 case WDI_START_REQ:
23875 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23876 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23877 break;
23878 case WDI_STOP_REQ:
23879 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23880 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23881 break;
23882 case WDI_INIT_SCAN_REQ:
23883 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23884 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23885 break;
23886 case WDI_START_SCAN_REQ:
23887 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23888 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23889 break;
23890 case WDI_END_SCAN_REQ:
23891 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23892 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23893 break;
23894 case WDI_FINISH_SCAN_REQ:
23895 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23896 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23897 break;
23898 case WDI_JOIN_REQ:
23899 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23900 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23901 break;
23902 case WDI_CONFIG_BSS_REQ:
23903 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23904 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23905 break;
23906 case WDI_DEL_BSS_REQ:
23907 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23908 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23909 break;
23910 case WDI_POST_ASSOC_REQ:
23911 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23912 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23913 break;
23914 case WDI_DEL_STA_REQ:
23915 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23916 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23917 break;
23918 case WDI_DEL_STA_SELF_REQ:
23919 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23920 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23921 break;
23922
23923 case WDI_SET_BSS_KEY_REQ:
23924 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23925 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23926 break;
23927 case WDI_RMV_BSS_KEY_REQ:
23928 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23929 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23930 break;
23931 case WDI_SET_STA_KEY_REQ:
23932 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23933 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23934 break;
23935 case WDI_RMV_STA_KEY_REQ:
23936 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23937 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23938 break;
23939 case WDI_ADD_TS_REQ:
23940 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23941 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23942 break;
23943 case WDI_DEL_TS_REQ:
23944 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23945 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23946 break;
23947 case WDI_UPD_EDCA_PRMS_REQ:
23948 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23949 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23950 break;
23951 case WDI_ADD_BA_SESSION_REQ:
23952 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23953 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23954 break;
23955 case WDI_DEL_BA_REQ:
23956 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23957 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23958 break;
23959#ifdef FEATURE_WLAN_CCX
23960 case WDI_TSM_STATS_REQ:
23961 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23962 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23963 break;
23964#endif
23965 case WDI_CH_SWITCH_REQ:
23966 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23967 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23968 break;
23969 case WDI_CONFIG_STA_REQ:
23970 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23971 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23972 break;
23973 case WDI_SET_LINK_ST_REQ:
23974 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23975 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23976 break;
23977 case WDI_GET_STATS_REQ:
23978 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23979 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23980 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023981#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23982 case WDI_GET_ROAM_RSSI_REQ:
23983 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23984 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23985 break;
23986#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023987 case WDI_UPDATE_CFG_REQ:
23988 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23989 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23990 break;
23991 case WDI_ADD_BA_REQ:
23992 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23993 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23994 break;
23995 case WDI_TRIGGER_BA_REQ:
23996 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23997 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23998 break;
23999 case WDI_UPD_BCON_PRMS_REQ:
24000 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24001 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24002 break;
24003 case WDI_SND_BCON_REQ:
24004 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24005 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24006 break;
24007 case WDI_ENTER_BMPS_REQ:
24008 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24009 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24010 break;
24011 case WDI_EXIT_BMPS_REQ:
24012 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24013 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24014 break;
24015 case WDI_ENTER_UAPSD_REQ:
24016 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24017 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24018 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024019 case WDI_EXIT_UAPSD_REQ:
24020 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24021 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24022 break;
24023 case WDI_SET_UAPSD_PARAM_REQ:
24024 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24025 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24026 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_UPDATE_UAPSD_PARAM_REQ:
24028 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24029 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24030 break;
24031 case WDI_CONFIGURE_RXP_FILTER_REQ:
24032 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24033 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24034 break;
24035 case WDI_SET_BEACON_FILTER_REQ:
24036 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24037 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24038 break;
24039 case WDI_REM_BEACON_FILTER_REQ:
24040 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24041 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 case WDI_SET_RSSI_THRESHOLDS_REQ:
24044 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24045 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24046 break;
24047 case WDI_HOST_OFFLOAD_REQ:
24048 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24049 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24050 break;
24051 case WDI_WOWL_ADD_BC_PTRN_REQ:
24052 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24053 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24054 break;
24055 case WDI_WOWL_DEL_BC_PTRN_REQ:
24056 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24057 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24058 break;
24059 case WDI_WOWL_ENTER_REQ:
24060 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24061 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24062 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024063 case WDI_WOWL_EXIT_REQ:
24064 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24065 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24066 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24068 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24069 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24070 break;
24071 case WDI_FLUSH_AC_REQ:
24072 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24073 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24074 break;
24075 case WDI_BTAMP_EVENT_REQ:
24076 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24077 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24078 break;
24079 case WDI_KEEP_ALIVE_REQ:
24080 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24081 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24082 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024083#if defined FEATURE_WLAN_SCAN_PNO
24084 case WDI_SET_PREF_NETWORK_REQ:
24085 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24086 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24087 break;
24088 case WDI_SET_RSSI_FILTER_REQ:
24089 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24090 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24091 break;
24092 case WDI_UPDATE_SCAN_PARAMS_REQ:
24093 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24094 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24095 break;
24096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 case WDI_SET_TX_PER_TRACKING_REQ:
24098 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24099 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024100 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024101#if defined WLAN_FEATURE_PACKET_FILTERING
24102 case WDI_8023_MULTICAST_LIST_REQ:
24103 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24104 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24105 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024106 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24107 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24108 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24109 break;
24110 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24111 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24112 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24113 break;
24114 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24115 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24116 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24117 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070024118#endif
24119 case WDI_SET_POWER_PARAMS_REQ:
24120 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24121 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24122 break;
24123#if defined WLAN_FEATURE_GTK_OFFLOAD
24124 case WDI_GTK_OFFLOAD_REQ:
24125 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24126 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24127 break;
24128 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24129 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24130 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24131 break;
24132#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080024133
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 default:
24135 *ppfnReqCB = NULL;
24136 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024137 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 }
24139}/*WDI_ExtractRequestCBFromEvent*/
24140
24141
24142/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024143 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 frame xtl is enabled for a particular STA.
24145
24146 WDI_PostAssocReq must have been called.
24147
Jeff Johnsone7245742012-09-05 17:12:55 -070024148 @param uSTAIdx: STA index
24149
Jeff Johnson295189b2012-06-20 16:38:30 -070024150 @see WDI_PostAssocReq
24151 @return Result of the function call
24152*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024153wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024154WDI_IsHwFrameTxTranslationCapable
24155(
24156 wpt_uint8 uSTAIdx
24157)
24158{
Jeff Johnsone7245742012-09-05 17:12:55 -070024159 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024160 uma value*/
24161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 ------------------------------------------------------------------------*/
24164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24165 {
24166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24167 "WDI API call before module is initialized - Fail request");
24168
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 }
24171
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024172#ifdef WLAN_SOFTAP_VSTA_FEATURE
24173 if (IS_VSTA_IDX(uSTAIdx))
24174 {
24175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24176 "STA %d is a Virtual STA, "
24177 "HW frame translation disabled", uSTAIdx);
24178 return eWLAN_PAL_FALSE;
24179 }
24180#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024181
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 return gWDICb.bFrameTransEnabled;
24183}/*WDI_IsHwFrameTxTranslationCapable*/
24184
24185#ifdef FEATURE_WLAN_SCAN_PNO
24186/**
24187 @brief WDI_SetPreferredNetworkList
24188
Jeff Johnsone7245742012-09-05 17:12:55 -070024189 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024190 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024191
Jeff Johnson295189b2012-06-20 16:38:30 -070024192 wdiPNOScanCb: callback for passing back the response
24193 of the Set PNO operation received from the
24194 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024195
Jeff Johnson295189b2012-06-20 16:38:30 -070024196 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024197 callback
24198
Jeff Johnson295189b2012-06-20 16:38:30 -070024199 @return Result of the function call
24200*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024201WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024202WDI_SetPreferredNetworkReq
24203(
24204 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24205 WDI_PNOScanCb wdiPNOScanCb,
24206 void* pUserData
24207)
24208{
24209 WDI_EventInfoType wdiEventData = {{0}};
24210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24211
24212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024214 ------------------------------------------------------------------------*/
24215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24216 {
24217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24218 "WDI API call before module is initialized - Fail request");
24219
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 }
24222
24223 /*------------------------------------------------------------------------
24224 Fill in Event data and post to the Main FSM
24225 ------------------------------------------------------------------------*/
24226 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024227 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024228 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 wdiEventData.pUserData = pUserData;
24231
24232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24233}
24234
24235
24236/**
24237 @brief WDI_SetRssiFilterReq
24238
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024241
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 wdiRssiFilterCb: callback for passing back the response
24243 of the Set RSSI Filter operation received from the
24244 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024245
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024247 callback
24248
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 @return Result of the function call
24250*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024251WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024252WDI_SetRssiFilterReq
24253(
24254 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24255 WDI_RssiFilterCb wdiRssiFilterCb,
24256 void* pUserData
24257)
24258{
24259 WDI_EventInfoType wdiEventData = {{0}};
24260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24261
24262 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024264 ------------------------------------------------------------------------*/
24265 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24266 {
24267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24268 "WDI API call before module is initialized - Fail request");
24269
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 }
24272
24273 /*------------------------------------------------------------------------
24274 Fill in Event data and post to the Main FSM
24275 ------------------------------------------------------------------------*/
24276 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 wdiEventData.pUserData = pUserData;
24281
24282 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24283}/*WDI_SetRssiFilterReq*/
24284
24285/**
24286 @brief WDI_UpdateScanParamsReq
24287
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024290
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 wdiUpdateScanParamsCb: callback for passing back the response
24292 of the Set PNO operation received from the
24293 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024294
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 callback
24297
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 @return Result of the function call
24299*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024300WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024301WDI_UpdateScanParamsReq
24302(
24303 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24304 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24305 void* pUserData
24306)
24307{
24308 WDI_EventInfoType wdiEventData = {{0}};
24309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24310
24311 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 ------------------------------------------------------------------------*/
24314 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24315 {
24316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24317 "WDI API call before module is initialized - Fail request");
24318
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 }
24321
24322 /*------------------------------------------------------------------------
24323 Fill in Event data and post to the Main FSM
24324 ------------------------------------------------------------------------*/
24325 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 wdiEventData.pUserData = pUserData;
24330
24331 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24332}
24333
24334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024337
24338 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 pwdiPNOScanReqParams: pointer to the info received
24340 from upper layers
24341 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024342 and its size
24343
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 @return Result of the function call
24345*/
24346
24347WDI_Status
24348WDI_PackPreferredNetworkList
24349(
24350 WDI_ControlBlockType* pWDICtx,
24351 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24352 wpt_uint8** ppSendBuffer,
24353 wpt_uint16* pSize
24354)
24355{
Jeff Johnsone7245742012-09-05 17:12:55 -070024356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 wpt_uint16 usDataOffset = 0;
24358 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024359 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 /*-----------------------------------------------------------------------
24362 Get message buffer
24363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024365 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024367 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 {
24369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024370 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 pwdiPNOScanReqParams);
24372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 }
24375
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024376 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24377
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 /*-------------------------------------------------------------------------
24379 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24380 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024381 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024383 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24385
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024386 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024389 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024390 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24391
24392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024393 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24395 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24396 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24397
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024398 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 {
24400 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024401 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24403
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024404 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024406 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024407
24408 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024409 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024411
24412 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024413 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024415
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024418 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024419 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24420 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24421 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24422 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024423
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024424 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024426 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024427
24428 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024429 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24431
24432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024433 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024434 pPrefNetwListParams->aNetworks[i].ssId.length,
24435 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024436 }
24437
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024438 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24441 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24442 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24443
24444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024446 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24448 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24449
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024450 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024452 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024453 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024454 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24456 }
24457
24458 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024459 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24461 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24462 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024464
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024465 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024466 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024467 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024468
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024469 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24471 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24472 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024473 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024474
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024475 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024477 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024478
24479 /*Set the output values*/
24480 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024482
24483 return WDI_STATUS_SUCCESS;
24484}/*WDI_PackPreferredNetworkList*/
24485
24486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024489
24490 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024491 pwdiPNOScanReqParams: pointer to the info received
24492 from upper layers
24493 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 and its size
24495
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 @return Result of the function call
24497*/
24498
24499WDI_Status
24500WDI_PackPreferredNetworkListNew
24501(
24502 WDI_ControlBlockType* pWDICtx,
24503 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24504 wpt_uint8** ppSendBuffer,
24505 wpt_uint16* pSize
24506)
24507{
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 wpt_uint16 usDataOffset = 0;
24510 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024511 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024512 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513
24514 /*-----------------------------------------------------------------------
24515 Get message buffer
24516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024518 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024519 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024520 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 {
24522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024523 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 pwdiPNOScanReqParams);
24525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024527 }
24528
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024529 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24530
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 /*-------------------------------------------------------------------------
24532 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24533 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024534 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024536 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24538
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024539 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24544
24545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24548 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24549 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24550
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024551 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 {
24553 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024554 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24556
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024557 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024558 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024559 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024560
24561 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024562 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024564
24565 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024566 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024567 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024568
24569 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024570 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024572
Jeff Johnsone7245742012-09-05 17:12:55 -070024573 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024574 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024575 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24577
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024578 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024580 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024581
24582 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024583 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024584 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24585
24586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024587 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024588 pPrefNetwListParams->aNetworks[i].ssId.length,
24589 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024590 }
24591
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024592 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024593 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24595 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24596 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24597
24598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024599 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024600 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24602 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24603
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024604 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024606 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024608 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24610 }
24611
24612 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024613 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24615 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24616 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024618
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024619 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024620 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024621 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024622
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024623 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24625 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24626 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024628
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024629 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024631 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024632
Jeff Johnson295189b2012-06-20 16:38:30 -070024633
24634 /*Set the output values*/
24635 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637
24638 return WDI_STATUS_SUCCESS;
24639}/*WDI_PackPreferredNetworkListNew*/
24640
24641/**
24642 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024643
24644 @param pWDICtx: pointer to the WLAN DAL context
24645 pEventData: pointer to the event information structure
24646
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 @return Result of the function call
24648*/
24649WDI_Status
24650WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024651(
Jeff Johnson295189b2012-06-20 16:38:30 -070024652 WDI_ControlBlockType* pWDICtx,
24653 WDI_EventInfoType* pEventData
24654)
24655{
24656 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24657 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024658 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024659 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024661
24662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 -------------------------------------------------------------------------*/
24665 if (( NULL == pEventData ) ||
24666 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24667 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24668 {
24669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 }
24674
24675 /*-------------------------------------------------------------------------
24676 Pack the PNO request structure based on version
24677 -------------------------------------------------------------------------*/
24678 if ( pWDICtx->wdiPNOVersion > 0 )
24679 {
24680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024681 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 pWDICtx->wdiPNOVersion);
24683
24684 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24685 &pSendBuffer, &usSendSize);
24686 }
24687 else
24688 {
24689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024690 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 pWDICtx->wdiPNOVersion);
24692
24693 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24694 &pSendBuffer, &usSendSize);
24695 }
24696
24697 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24698 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24699 {
24700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024701 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 }
24705
24706 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024707 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024708
24709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024710 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024712 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24713 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024714}
24715
24716/**
24717 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024718
24719 @param pWDICtx: pointer to the WLAN DAL context
24720 pEventData: pointer to the event information structure
24721
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 @see
24723 @return Result of the function call
24724*/
24725WDI_Status
24726WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024727(
Jeff Johnson295189b2012-06-20 16:38:30 -070024728 WDI_ControlBlockType* pWDICtx,
24729 WDI_EventInfoType* pEventData
24730)
24731{
24732 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24733 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024734 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 wpt_uint16 usDataOffset = 0;
24736 wpt_uint16 usSendSize = 0;
24737 wpt_uint8 ucRssiThreshold;
24738
24739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024741 -------------------------------------------------------------------------*/
24742 if (( NULL == pEventData ) ||
24743 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24744 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24745 {
24746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 }
24751
24752 /*-----------------------------------------------------------------------
24753 Get message buffer
24754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 sizeof(ucRssiThreshold),
24757 &pSendBuffer, &usDataOffset, &usSendSize))||
24758 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24759 {
24760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024761 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024762 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 }
24766
24767 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24768
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 wpalMemoryCopy( pSendBuffer+usDataOffset,
24770 &ucRssiThreshold,
24771 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024772
24773 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024774 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024775
24776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024777 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024778 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024779 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24780 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024781}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024782#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24783/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024784 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024785
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024786 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024787 by the Device Interface
24788
24789 wdiRoamOffloadScancb: callback for passing back the response
24790 of the Roam Candidate Lookup Req operation received from the
24791 device
24792
24793 pUserData: user data will be passed back with the
24794 callback
24795 @return Result of the function call
24796*/
24797WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024798WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024799(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024800 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024801 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24802 void* pUserData
24803)
24804{
24805 WDI_EventInfoType wdiEventData = {{0}};
24806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24807
24808 /*------------------------------------------------------------------------
24809 Sanity Check
24810 ------------------------------------------------------------------------*/
24811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24812 {
24813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24814 "WDI API call before module is initialized - Fail request");
24815
24816 return WDI_STATUS_E_NOT_ALLOWED;
24817 }
24818
24819 /*------------------------------------------------------------------------
24820 Fill in Event data and post to the Main FSM
24821 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024822 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24823 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24824 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024825 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24826 wdiEventData.pUserData = pUserData;
24827
24828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24829}
24830
24831void
24832WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24833{
24834 switch (wdiEdType)
24835 {
24836 case WDI_ED_NONE:
24837 *EdType = eED_NONE;
24838 break;
24839 case WDI_ED_WEP40:
24840 case WDI_ED_WEP104:
24841 *EdType = eED_WEP;
24842 break;
24843 case WDI_ED_TKIP:
24844 *EdType = eED_TKIP;
24845 break;
24846 case WDI_ED_CCMP:
24847#ifdef WLAN_FEATURE_11W
24848 case WDI_ED_AES_128_CMAC:
24849#endif
24850 *EdType = eED_CCMP;
24851 break;
24852#ifdef FEATURE_WLAN_WAPI
24853 case WDI_ED_WPI:
24854 *EdType = eED_WPI;
24855 break;
24856#endif
24857 case WDI_ED_ANY:
24858 *EdType = eED_ANY;
24859 break;
24860
24861 default:
24862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24863 "%s: Unknown Encryption Type", __func__);
24864 break;
24865 }
24866}
24867
24868/**
24869 @brief Helper function to pack Start Roam Candidate Lookup
24870 Request parameters
24871
24872 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024873 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024874 from upper layers
24875 ppSendBuffer, pSize - out pointers of the packed buffer
24876 and its size
24877
24878 @return Result of the function call
24879*/
24880
24881WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024882WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024883(
24884 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024885 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024886 wpt_uint8** ppSendBuffer,
24887 wpt_uint16* pSize
24888)
24889{
24890 wpt_uint8* pSendBuffer = NULL;
24891 wpt_uint16 usDataOffset = 0;
24892 wpt_uint16 usSendSize = 0;
24893 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24894 wpt_uint8 i;
24895 /*-----------------------------------------------------------------------
24896 Get message buffer
24897 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024898 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024899 sizeof(tRoamCandidateListParams),
24900 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024901 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024902 {
24903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024904 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024905 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024906 WDI_ASSERT(0);
24907 return WDI_STATUS_E_FAILURE;
24908 }
24909 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024910 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024911 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024912 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024913 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024914 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024915 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024916 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024917 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024918 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024919 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024920
24921 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024922 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024923 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024924 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024925 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24926 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024927 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24928 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24929 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24930 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24931 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24932 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024933 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024934 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24935 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24936 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24937 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24938 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24939 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24940 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24941 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024942 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024943 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24944 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24945 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024946
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24948 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24949 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24950 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24951 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24952 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain5f7589c2013-11-17 22:05:35 -080024953 "HomeAwayTime=%d",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024954 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24955 pRoamCandidateListParams->RoamScanOffloadEnabled,
24956 pRoamCandidateListParams->Command,
24957 pRoamCandidateListParams->StartScanReason,
24958 pRoamCandidateListParams->NeighborScanTimerPeriod,
24959 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24960 pRoamCandidateListParams->NeighborScanChannelMinTime,
24961 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24962 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24963 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24964 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24965 pRoamCandidateListParams->ConnectedNetwork.authentication,
24966 pRoamCandidateListParams->ConnectedNetwork.encryption,
24967 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24968 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24969 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024970 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024971 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024972 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024973 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024974 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24975 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024976 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024977 pRoamCandidateListParams->us24GProbeSize);
24978 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024979 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024980 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024981 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024982 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24983 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024984 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024985 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024986 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24987 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24988 pRoamCandidateListParams->nProbes =
24989 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24990 pRoamCandidateListParams->HomeAwayTime =
24991 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024993 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24994 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024996 }
24997
24998
24999 /*Set the output values*/
25000 *ppSendBuffer = pSendBuffer;
25001 *pSize = usSendSize;
25002 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025003}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025004
25005/**
25006 @brief Process Start Roam Candidate Lookup Request function
25007
25008 @param pWDICtx: pointer to the WLAN DAL context
25009 pEventData: pointer to the event information structure
25010
25011 @return Result of the function call
25012*/
25013WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025014WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025015(
25016 WDI_ControlBlockType* pWDICtx,
25017 WDI_EventInfoType* pEventData
25018)
25019{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025020 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025021 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25022 wpt_uint8* pSendBuffer = NULL;
25023 wpt_uint16 usSendSize = 0;
25024 WDI_Status wdiStatus;
25025 /*-------------------------------------------------------------------------
25026 Sanity check
25027 -------------------------------------------------------------------------*/
25028 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025029 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025030 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25031 {
25032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25033 "%s: Invalid parameters", __func__);
25034 WDI_ASSERT(0);
25035 return WDI_STATUS_E_FAILURE;
25036 }
25037
25038 /*-------------------------------------------------------------------------
25039 Pack the Start Roam Candidate Lookup request structure based on version
25040 -------------------------------------------------------------------------*/
25041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25042 "%s: Packing Roam Candidate Lookup request ", __func__);
25043
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025044 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025045 &pSendBuffer, &usSendSize);
25046
25047 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25048 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25049 {
25050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25051 "%s: failed to pack request parameters", __func__);
25052 WDI_ASSERT(0);
25053 return wdiStatus;
25054 }
25055
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025056 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25057 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025058
25059 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025060 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025061 -------------------------------------------------------------------------*/
25062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025063 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025064}
25065
25066/**
25067 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25068 response is being received over the bus from HAL)
25069
25070 @param pWDICtx: pointer to the WLAN DAL context
25071 pEventData: pointer to the event information structure
25072
25073 @see
25074 @return Result of the function call
25075*/
25076WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025077WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025078(
25079 WDI_ControlBlockType* pWDICtx,
25080 WDI_EventInfoType* pEventData
25081)
25082{
25083 WDI_Status wdiStatus;
25084 eHalStatus halStatus;
25085 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25086
25087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25088
25089 /*-------------------------------------------------------------------------
25090 Sanity check
25091 -------------------------------------------------------------------------*/
25092 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25093 ( NULL == pEventData->pEventData ))
25094 {
25095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25096 "%s: Invalid parameters", __func__);
25097 WDI_ASSERT(0);
25098 return WDI_STATUS_E_FAILURE;
25099 }
25100
25101 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25102
25103 /*-------------------------------------------------------------------------
25104 Extract response and send it to UMAC
25105 -------------------------------------------------------------------------*/
25106 halStatus = *((eHalStatus*)pEventData->pEventData);
25107 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25108
25109 /*Notify UMAC*/
25110 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25111
25112 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070025113}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070025114#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025115
25116/**
25117 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025118
25119 @param pWDICtx: pointer to the WLAN DAL context
25120 pEventData: pointer to the event information structure
25121
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 @see
25123 @return Result of the function call
25124*/
25125WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025126WDI_PackUpdateScanParamsReq
25127(
25128 WDI_ControlBlockType* pWDICtx,
25129 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25130 wpt_uint8** ppSendBuffer,
25131 wpt_uint16* pSize
25132)
25133{
25134 wpt_uint8* pSendBuffer = NULL;
25135 wpt_uint16 usDataOffset = 0;
25136 wpt_uint16 usSendSize = 0;
25137 tUpdateScanParams updateScanParams = {0};
25138
25139
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025141 "Begin WDI Update Scan Parameters Old Style Params");
25142 /*-----------------------------------------------------------------------
25143 Get message buffer
25144 -----------------------------------------------------------------------*/
25145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25146 sizeof(updateScanParams),
25147 &pSendBuffer, &usDataOffset, &usSendSize))||
25148 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25149 {
25150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025151 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025152 pwdiUpdateScanParams);
25153 WDI_ASSERT(0);
25154 return WDI_STATUS_E_FAILURE;
25155 }
25156
25157 //
25158 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25159 //
25160
25161 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25162 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25163
25164 updateScanParams.ucChannelCount =
25165 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25166 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25167 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25168 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25169
25170 wpalMemoryCopy( updateScanParams.aChannels,
25171 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25172 updateScanParams.ucChannelCount);
25173
25174
25175 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25176 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25177 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25178 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25179 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25180
25181 wpalMemoryCopy( pSendBuffer+usDataOffset,
25182 &updateScanParams,
25183 sizeof(updateScanParams));
25184
25185 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25186 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25187
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025189 "End Update Scan Parameters Old Style");
25190
25191 /*Set the output values*/
25192 *ppSendBuffer = pSendBuffer;
25193 *pSize = usSendSize;
25194
25195 return WDI_STATUS_SUCCESS;
25196}
25197
25198/**
25199 @brief Process Update Scan Params function
25200
25201 @param pWDICtx: pointer to the WLAN DAL context
25202 pEventData: pointer to the event information structure
25203
25204 @see
25205 @return Result of the function call
25206*/
25207WDI_Status
25208WDI_PackUpdateScanParamsReqEx
25209(
25210 WDI_ControlBlockType* pWDICtx,
25211 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25212 wpt_uint8** ppSendBuffer,
25213 wpt_uint16* pSize
25214)
25215{
25216 wpt_uint8* pSendBuffer = NULL;
25217 wpt_uint16 usDataOffset = 0;
25218 wpt_uint16 usSendSize = 0;
25219 tUpdateScanParamsEx updateScanParams = {0};
25220
25221
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025222 /*-----------------------------------------------------------------------
25223 Get message buffer
25224 -----------------------------------------------------------------------*/
25225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25226 sizeof(updateScanParams),
25227 &pSendBuffer, &usDataOffset, &usSendSize))||
25228 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25229 {
25230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025231 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025232 pwdiUpdateScanParams);
25233 WDI_ASSERT(0);
25234 return WDI_STATUS_E_FAILURE;
25235 }
25236
25237 //
25238 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25239 //
25240
25241 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25242 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25243
25244 updateScanParams.ucChannelCount =
25245 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25246 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25247 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25248 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25249
25250 wpalMemoryCopy( updateScanParams.aChannels,
25251 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25252 updateScanParams.ucChannelCount);
25253
25254
25255 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25256 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25257 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25258 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25259 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25260
25261 wpalMemoryCopy( pSendBuffer+usDataOffset,
25262 &updateScanParams,
25263 sizeof(updateScanParams));
25264
25265 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25266 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25267
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025268 /*Set the output values*/
25269 *ppSendBuffer = pSendBuffer;
25270 *pSize = usSendSize;
25271
25272 return WDI_STATUS_SUCCESS;
25273}
25274
25275/**
25276 @brief Process Update Scan Params function
25277
25278 @param pWDICtx: pointer to the WLAN DAL context
25279 pEventData: pointer to the event information structure
25280
25281 @see
25282 @return Result of the function call
25283*/
25284WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025285WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025286(
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 WDI_ControlBlockType* pWDICtx,
25288 WDI_EventInfoType* pEventData
25289)
25290{
25291 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25292 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025293 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025294 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025295 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025296
25297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 -------------------------------------------------------------------------*/
25300 if (( NULL == pEventData ) ||
25301 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25302 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25303 {
25304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 }
25309
25310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25311 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025312
25313 //
25314 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25315 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025316 if ( pWDICtx->wlanVersion.revision < 1 )
25317 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025318 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025319 &pSendBuffer, &usSendSize);
25320 }
25321 else
25322 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025323 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25324 &pSendBuffer, &usSendSize);
25325 }
25326
25327 if(WDI_STATUS_SUCCESS != wdiStatus)
25328 {
25329 //memory allocation failed
25330 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025331 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025332
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025334 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025337 wdiUpdateScanParamsCb, pEventData->pUserData,
25338 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025339}
25340
25341/**
25342 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025343
25344 @param pWDICtx: pointer to the WLAN DAL context
25345 pEventData: pointer to the event information structure
25346
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 @see
25348 @return Result of the function call
25349*/
25350WDI_Status
25351WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025352(
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 WDI_ControlBlockType* pWDICtx,
25354 WDI_EventInfoType* pEventData
25355)
25356{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025357 WDI_LowLevelIndType wdiInd;
25358 tpPrefNetwFoundParams pNetwFoundParams;
25359 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025360
25361
25362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 -------------------------------------------------------------------------*/
25365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25366 ( NULL == pEventData->pEventData ))
25367 {
25368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 }
25373
25374 /*-------------------------------------------------------------------------
25375 Extract indication and send it to UMAC
25376 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025377 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25378
25379 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25380 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25381 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25382
25383 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25384 {
25385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25386 "%s: fail to allocate memory", __func__);
25387 return WDI_STATUS_MEM_FAILURE;
25388 }
25389
25390 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25391 (pNetwFoundParams->ssId.length < 32 )?
25392 pNetwFoundParams->ssId.length : 32;
25393 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25394 pNetwFoundParams->ssId.ssId,
25395 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25396 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25397 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25398 pNetwFoundParams->frameLength;
25399 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25400 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25401 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025402
25403 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025404 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025405
Jeff Johnson295189b2012-06-20 16:38:30 -070025406 // DEBUG
25407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025408 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025410 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025412 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25414
ltimariu034f7d62013-01-24 18:54:33 -080025415 if ( pWDICtx->wdiLowLevelIndCB )
25416 {
25417 /*Notify UMAC*/
25418 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25419 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025420
25421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025422}
25423
25424/**
25425 @brief Process PNO Rsp function (called when a
25426 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025427
25428 @param pWDICtx: pointer to the WLAN DAL context
25429 pEventData: pointer to the event information structure
25430
Jeff Johnson295189b2012-06-20 16:38:30 -070025431 @see
25432 @return Result of the function call
25433*/
25434WDI_Status
25435WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025436(
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 WDI_ControlBlockType* pWDICtx,
25438 WDI_EventInfoType* pEventData
25439)
25440{
25441 WDI_Status wdiStatus;
25442 eHalStatus halStatus;
25443 WDI_PNOScanCb wdiPNOScanCb = NULL;
25444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25445
25446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 -------------------------------------------------------------------------*/
25449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25450 ( NULL == pEventData->pEventData ))
25451 {
25452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 }
25457
25458
Jeff Johnsone7245742012-09-05 17:12:55 -070025459 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025460
25461 /*-------------------------------------------------------------------------
25462 Extract response and send it to UMAC
25463 -------------------------------------------------------------------------*/
25464 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025465 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025466
25467 /*Notify UMAC*/
25468 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25469
Jeff Johnsone7245742012-09-05 17:12:55 -070025470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025471}/*WDI_ProcessSetPreferredNetworkRsp*/
25472
25473/**
25474 @brief Process RSSI Filter Rsp function (called when a
25475 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025476
25477 @param pWDICtx: pointer to the WLAN DAL context
25478 pEventData: pointer to the event information structure
25479
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 @see
25481 @return Result of the function call
25482*/
25483WDI_Status
25484WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025485(
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 WDI_ControlBlockType* pWDICtx,
25487 WDI_EventInfoType* pEventData
25488)
25489{
25490 WDI_Status wdiStatus;
25491 eHalStatus halStatus;
25492 WDI_RssiFilterCb wdiRssiFilterCb;
25493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25494
25495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 -------------------------------------------------------------------------*/
25498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25499 ( NULL == pEventData->pEventData ))
25500 {
25501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 }
25506
Jeff Johnsone7245742012-09-05 17:12:55 -070025507 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508
25509 /*-------------------------------------------------------------------------
25510 Extract response and send it to UMAC
25511 -------------------------------------------------------------------------*/
25512 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025513 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025514
25515 /*Notify UMAC*/
25516 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25517
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025519}/*WDI_ProcessSetRssiFilterRsp*/
25520
25521/**
25522 @brief Process Update Scan Params Rsp function (called when a
25523 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025524
25525 @param pWDICtx: pointer to the WLAN DAL context
25526 pEventData: pointer to the event information structure
25527
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 @see
25529 @return Result of the function call
25530*/
25531WDI_Status
25532WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025533(
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 WDI_ControlBlockType* pWDICtx,
25535 WDI_EventInfoType* pEventData
25536)
25537{
25538 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025539 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25543
25544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 -------------------------------------------------------------------------*/
25547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25548 ( NULL == pEventData->pEventData ))
25549 {
25550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025554 }
25555
25556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025557 "%s: Process UPD scan params ptr : %p",
25558 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025559
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025561
25562 /*-------------------------------------------------------------------------
25563 Extract response and send it to UMAC
25564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25566 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 sizeof(halUpdScanParams.status));
25568
25569 uStatus = halUpdScanParams.status;
25570
25571 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573
25574 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025576
Jeff Johnsone7245742012-09-05 17:12:55 -070025577 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025578
25579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 halUpdScanParams.status);
25582
25583 /*Notify UMAC*/
25584 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25585
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025587}
25588#endif // FEATURE_WLAN_SCAN_PNO
25589
25590#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025592WDI_8023MulticastListReq
25593(
25594 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25595 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25596 void* pUserData
25597)
25598{
25599 WDI_EventInfoType wdiEventData;
25600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25601
25602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025603 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025604
25605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025606 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025607 ------------------------------------------------------------------------*/
25608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25609 {
25610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25611 "WDI API call before module is initialized - Fail request");
25612
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025614 }
25615
25616 /*------------------------------------------------------------------------
25617 Fill in Event data and post to the Main FSM
25618 ------------------------------------------------------------------------*/
25619 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025622 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025623 wdiEventData.pUserData = pUserData;
25624
25625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25626}
25627
Jeff Johnsone7245742012-09-05 17:12:55 -070025628WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025629WDI_ReceiveFilterSetFilterReq
25630(
25631 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25632 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25633 void* pUserData
25634)
25635{
25636 WDI_EventInfoType wdiEventData;
25637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25638
25639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025640 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025641
25642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025644 ------------------------------------------------------------------------*/
25645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25646 {
25647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25648 "WDI API call before module is initialized - Fail request");
25649
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 }
25652
25653 /*------------------------------------------------------------------------
25654 Fill in Event data and post to the Main FSM
25655 ------------------------------------------------------------------------*/
25656 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025657 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25658 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025659 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25660 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 wdiEventData.pUserData = pUserData;
25663
25664
25665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25666}
25667
Jeff Johnsone7245742012-09-05 17:12:55 -070025668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025669WDI_FilterMatchCountReq
25670(
25671 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25672 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25673 void* pUserData
25674)
25675{
25676 WDI_EventInfoType wdiEventData;
25677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25678
25679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025680 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025681
25682 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025683 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 ------------------------------------------------------------------------*/
25685 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25686 {
25687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25688 "WDI API call before module is initialized - Fail request");
25689
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 }
25692
25693 /*------------------------------------------------------------------------
25694 Fill in Event data and post to the Main FSM
25695 ------------------------------------------------------------------------*/
25696 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025697 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025698 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025699 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 wdiEventData.pUserData = pUserData;
25701
25702
25703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25704}
25705
Jeff Johnsone7245742012-09-05 17:12:55 -070025706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025707WDI_ReceiveFilterClearFilterReq
25708(
25709 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25710 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25711 void* pUserData
25712)
25713{
25714 WDI_EventInfoType wdiEventData;
25715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25716
25717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025718 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025719
25720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025722 ------------------------------------------------------------------------*/
25723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25724 {
25725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25726 "WDI API call before module is initialized - Fail request");
25727
Jeff Johnsone7245742012-09-05 17:12:55 -070025728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 }
25730
25731 /*------------------------------------------------------------------------
25732 Fill in Event data and post to the Main FSM
25733 ------------------------------------------------------------------------*/
25734 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025737 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025738 wdiEventData.pUserData = pUserData;
25739
25740
25741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25742}
25743
25744/**
25745 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025746
25747 @param pWDICtx: pointer to the WLAN DAL context
25748 pEventData: pointer to the event information structure
25749
Jeff Johnson295189b2012-06-20 16:38:30 -070025750 @see
25751 @return Result of the function call
25752*/
25753WDI_Status
25754WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025755(
Jeff Johnson295189b2012-06-20 16:38:30 -070025756 WDI_ControlBlockType* pWDICtx,
25757 WDI_EventInfoType* pEventData
25758)
25759{
25760 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25761 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025762 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025763 wpt_uint16 usDataOffset = 0;
25764 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025765 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025766 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025767 wpt_uint8 ucCurrentBSSSesIdx = 0;
25768 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025769
25770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025771 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025772
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025773 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25774 if( NULL == pRcvFltMcAddrListType )
25775 {
25776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25777 "Failed to alloc in WDI_Process8023MulticastListReq");
25778 return WDI_STATUS_E_FAILURE;
25779 }
25780
Jeff Johnson295189b2012-06-20 16:38:30 -070025781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025783 -------------------------------------------------------------------------*/
25784 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025785 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025787 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025788 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25789 {
25790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025791 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025792 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025794 return WDI_STATUS_E_FAILURE;
25795 }
25796
25797 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25798 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25799 &pBSSSes);
25800 if ( NULL == pBSSSes )
25801 {
25802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025803 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025804 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 }
25807
25808 /*-----------------------------------------------------------------------
25809 Get message buffer
25810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25812 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 sizeof(tHalRcvFltMcAddrListType),
25814 &pSendBuffer, &usDataOffset, &usSendSize))||
25815 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25816 {
25817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25818 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025819 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 pEventData, pwdiFltPktSetMcListReqParamsType,
25821 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025822 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025825 }
25826
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025827 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025829 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025831 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25833 sizeof(tSirMacAddr));
25834 }
25835
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025836 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025838 pRcvFltMcAddrListType,
25839 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025840
25841 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025842 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025843
25844
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025845 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025847 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025850 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025851 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025852}
25853
25854/**
25855 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025856
25857 @param pWDICtx: pointer to the WLAN DAL context
25858 pEventData: pointer to the event information structure
25859
Jeff Johnson295189b2012-06-20 16:38:30 -070025860 @see
25861 @return Result of the function call
25862*/
25863WDI_Status
25864WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025865(
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 WDI_ControlBlockType* pWDICtx,
25867 WDI_EventInfoType* pEventData
25868)
25869{
25870 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25871 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025872 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025873 wpt_uint16 usDataOffset = 0;
25874 wpt_uint16 usSendSize = 0;
25875 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025876 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025877 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 wpt_uint8 ucCurrentBSSSesIdx = 0;
25879 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025880 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25881 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025882
25883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025884 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025885
25886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 -------------------------------------------------------------------------*/
25889 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25894 {
25895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 return WDI_STATUS_E_FAILURE;
25899 }
25900
25901 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25902 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25903 &pBSSSes);
25904 if ( NULL == pBSSSes )
25905 {
25906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025907 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025909 }
25910
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025911 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25912 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025913
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025914 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25915 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25916 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25917
25918 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25919 usSessRcvPktFilterCfgSize);
25920
25921 if(NULL == pSessRcvPktFilterCfg)
25922 {
25923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25924 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025925 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025926 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025927 WDI_ASSERT(0);
25928 return WDI_STATUS_E_FAILURE;
25929 }
25930
25931 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25932
25933 /*-----------------------------------------------------------------------
25934 Get message buffer
25935 -----------------------------------------------------------------------*/
25936
25937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25938 usSessRcvPktFilterCfgSize,
25939 &pSendBuffer, &usDataOffset, &usSendSize))||
25940 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25941 {
25942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25943 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025944 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025945 pEventData, pwdiSetRcvPktFilterReqInfo,
25946 wdiReceiveFilterSetFilterCb);
25947 WDI_ASSERT(0);
25948 wpalMemoryFree(pSessRcvPktFilterCfg);
25949 return WDI_STATUS_E_FAILURE;
25950 }
25951
25952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025953 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025954 usSendSize,pSessRcvPktFilterCfg);
25955
25956 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25957 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25958 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25959 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25960
25961 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25962
25963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25964 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25965 pSessRcvPktFilterCfg->filterType);
25966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25967 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25968 pSessRcvPktFilterCfg->coleasceTime);
25969
25970 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25971 {
25972 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25973 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25974 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25975 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25976 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25977 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25978 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25979 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25980
25981 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25982 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25983 8);
25984 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25985 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25986 8);
25987
25988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025989 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025990 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25991 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25992
25993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025994 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025995 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25996 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25997
25998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080025999 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026000 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26001 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26002 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26003 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26004 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26005 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26006
26007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026008 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026009 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26010 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26011 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26012 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26013 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26014 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26015 }
26016
26017 wpalMemoryCopy( pSendBuffer+usDataOffset,
26018 pSessRcvPktFilterCfg,
26019 usSessRcvPktFilterCfgSize);
26020
26021
26022 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26023 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26024
26025 wpalMemoryFree(pSessRcvPktFilterCfg);
26026
26027 }
26028 /*If SLM_SESSIONIZATION is not supported then do this */
26029 else
26030 {
26031 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26032 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26033 * sizeof(tHalRcvPktFilterParams));
26034
26035 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026036 usRcvPktFilterCfgSize);
26037
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026038 if(NULL == pRcvPktFilterCfg)
26039 {
26040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26041 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026042 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026043 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026044 WDI_ASSERT(0);
26045 return WDI_STATUS_E_FAILURE;
26046 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026047
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026048 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026049
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026050 /*-----------------------------------------------------------------------
26051 Get message buffer
26052 -----------------------------------------------------------------------*/
26053 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026054 usRcvPktFilterCfgSize,
26055 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026056 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26057 {
26058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026060 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026061 pEventData, pwdiSetRcvPktFilterReqInfo,
26062 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026063 WDI_ASSERT(0);
26064 wpalMemoryFree(pRcvPktFilterCfg);
26065 return WDI_STATUS_E_FAILURE;
26066 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026067
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 usSendSize,usRcvPktFilterCfgSize);
26071
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026072 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26073 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26074 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26075 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026076
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026078 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026081 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026082 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026083
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026084 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26085 {
26086 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26087 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26088 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26089 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26090 pRcvPktFilterCfg->paramsData[i].dataOffset =
26091 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26092 pRcvPktFilterCfg->paramsData[i].dataLength =
26093 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026094
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026095 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26097 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026098 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26100 8);
26101
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026103 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26106
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026108 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026109 pRcvPktFilterCfg->paramsData[i].dataOffset,
26110 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026111
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026113 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026114 pRcvPktFilterCfg->paramsData[i].compareData[0],
26115 pRcvPktFilterCfg->paramsData[i].compareData[1],
26116 pRcvPktFilterCfg->paramsData[i].compareData[2],
26117 pRcvPktFilterCfg->paramsData[i].compareData[3],
26118 pRcvPktFilterCfg->paramsData[i].compareData[4],
26119 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026120
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080026122 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026123 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26124 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26125 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26126 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26127 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26128 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26129 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026130
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026131 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026132 pRcvPktFilterCfg,
26133 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026134
26135
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026136 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26137 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026140 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026141 wpalMemoryFree(pRcvPktFilterCfg);
26142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026144 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026147 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026148 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026149}
26150
26151/**
26152 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026153
26154 @param pWDICtx: pointer to the WLAN DAL context
26155 pEventData: pointer to the event information structure
26156
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 @see
26158 @return Result of the function call
26159*/
26160WDI_Status
26161WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026162(
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 WDI_ControlBlockType* pWDICtx,
26164 WDI_EventInfoType* pEventData
26165)
26166{
26167 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26168 NULL;
26169 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26170 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 wpt_uint16 usDataOffset = 0;
26173 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026174 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26175 wpt_uint8 ucCurrentBSSSesIdx = 0;
26176 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026177
26178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026179 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026180
26181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 -------------------------------------------------------------------------*/
26184 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026187 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26189 {
26190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026194 }
26195
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026196 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26197 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26198 &pBSSSes);
26199 if ( NULL == pBSSSes )
26200 {
26201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026202 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026203 return WDI_STATUS_E_FAILURE;
26204 }
26205
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 /*-----------------------------------------------------------------------
26207 Get message buffer
26208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26210 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026211 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026213 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 {
26215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26216 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026217 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026218 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26219 wdiFilterMatchCountCb);
26220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 }
26223
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026224 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26225 wpalMemoryCopy( pSendBuffer+usDataOffset,
26226 &rcvFltPktMatchCntReqParam,
26227 sizeof(rcvFltPktMatchCntReqParam));
26228
Jeff Johnson295189b2012-06-20 16:38:30 -070026229 //
26230 // Don't need to fill send buffer other than header
26231 //
26232 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026233 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026234
26235
26236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026239 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26240 wdiFilterMatchCountCb,
26241 pEventData->pUserData,
26242 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026243}
26244
26245/**
26246 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026247
26248 @param pWDICtx: pointer to the WLAN DAL context
26249 pEventData: pointer to the event information structure
26250
Jeff Johnson295189b2012-06-20 16:38:30 -070026251 @see
26252 @return Result of the function call
26253*/
26254WDI_Status
26255WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026256(
Jeff Johnson295189b2012-06-20 16:38:30 -070026257 WDI_ControlBlockType* pWDICtx,
26258 WDI_EventInfoType* pEventData
26259)
Jeff Johnsone7245742012-09-05 17:12:55 -070026260{
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26262 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 wpt_uint16 usDataOffset = 0;
26265 wpt_uint16 usSendSize = 0;
26266 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026267 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026268 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026269
26270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026271 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026272
26273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026275 -------------------------------------------------------------------------*/
26276 if (( NULL == pEventData ) ||
26277 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26278 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026279 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26281 {
26282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026285 return WDI_STATUS_E_FAILURE;
26286 }
26287
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026288 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026289 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26290 &pBSSSes);
26291 if ( NULL == pBSSSes )
26292 {
26293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026294 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 }
26297
26298 /*-----------------------------------------------------------------------
26299 Get message buffer
26300 -----------------------------------------------------------------------*/
26301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026302 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 sizeof(tHalRcvFltPktClearParam),
26304 &pSendBuffer, &usDataOffset, &usSendSize))||
26305 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26306 {
26307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26308 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026309 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026310 pEventData, pwdiRcvFltPktClearReqParamsType,
26311 wdiRcvFltPktClearFilterCb);
26312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 }
26315
26316
26317 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026318 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026319 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026320 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026321
Jeff Johnsone7245742012-09-05 17:12:55 -070026322 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26323 wpalMemoryCopy( pSendBuffer+usDataOffset,
26324 &rcvFltPktClearParam,
26325 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026326
26327 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026328 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026329
26330
26331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026332 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026333 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026334 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026335 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026336 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026337}
26338
26339/**
26340 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026341
26342 @param pWDICtx: pointer to the WLAN DAL context
26343 pEventData: pointer to the event information structure
26344
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 @see
26346 @return Result of the function call
26347*/
26348WDI_Status
26349WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026350(
Jeff Johnson295189b2012-06-20 16:38:30 -070026351 WDI_ControlBlockType* pWDICtx,
26352 WDI_EventInfoType* pEventData
26353)
26354{
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 eHalStatus halStatus;
26356 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026357 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26358 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26360
26361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026362 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026363
26364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026366 -------------------------------------------------------------------------*/
26367 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26368 ( NULL == pEventData->pEventData ))
26369 {
26370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026374 }
26375
Jeff Johnsone7245742012-09-05 17:12:55 -070026376 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026377
26378 /*-------------------------------------------------------------------------
26379 Extract response and send it to UMAC
26380 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026381 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26382 {
26383 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26384 pEventData->pEventData,
26385 sizeof(halRcvFltPktSetMcListRsp));
26386
26387 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26388 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26389 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26390 halRcvFltPktSetMcListRsp.bssIdx;
26391 }
26392 else
26393 {
26394 halStatus = *((eHalStatus*)pEventData->pEventData);
26395 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26396 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026397
26398 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026399 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026400
Jeff Johnsone7245742012-09-05 17:12:55 -070026401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026402}
26403
26404/**
26405 @brief Process Set Rsp function (called when a
26406 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026407
26408 @param pWDICtx: pointer to the WLAN DAL context
26409 pEventData: pointer to the event information structure
26410
Jeff Johnson295189b2012-06-20 16:38:30 -070026411 @see
26412 @return Result of the function call
26413*/
26414WDI_Status
26415WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026416(
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 WDI_ControlBlockType* pWDICtx,
26418 WDI_EventInfoType* pEventData
26419)
26420{
Jeff Johnson295189b2012-06-20 16:38:30 -070026421 eHalStatus halStatus;
26422 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026423 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26424 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26426
26427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026428 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026429
26430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 -------------------------------------------------------------------------*/
26433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26434 ( NULL == pEventData->pEventData ))
26435 {
26436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026440 }
26441
26442 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026443 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026444
26445 /*-------------------------------------------------------------------------
26446 Extract response and send it to UMAC
26447 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026448 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26449 {
26450 wpalMemoryCopy( &halSetPktFilterRspParams,
26451 pEventData->pEventData,
26452 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026453
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026454 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26455 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26456 }
26457 else
26458 {
26459 halStatus = *((eHalStatus*)pEventData->pEventData);
26460 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26461 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026463 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026464
Jeff Johnsone7245742012-09-05 17:12:55 -070026465 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026466}
26467
26468/**
26469 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026470
26471 @param pWDICtx: pointer to the WLAN DAL context
26472 pEventData: pointer to the event information structure
26473
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 @see
26475 @return Result of the function call
26476*/
26477WDI_Status
26478WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026479(
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 WDI_ControlBlockType* pWDICtx,
26481 WDI_EventInfoType* pEventData
26482)
26483{
Jeff Johnson295189b2012-06-20 16:38:30 -070026484 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026485 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026486 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26487 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026488
26489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26490
26491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026492 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026493
26494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 -------------------------------------------------------------------------*/
26497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26498 ( NULL == pEventData->pEventData ))
26499 {
26500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026504 }
26505
Jeff Johnsone7245742012-09-05 17:12:55 -070026506 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026507
26508 /*-------------------------------------------------------------------------
26509 Extract response and send it to UMAC
26510 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026511 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26512 {
26513 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26514 pEventData->pEventData,
26515 sizeof(halRcvFltrPktMatachRsp));
26516
26517 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26518 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26519 }
26520 else
26521 {
26522 halStatus = *((eHalStatus*)pEventData->pEventData);
26523 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26524 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026525
26526 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026527 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026528
Jeff Johnsone7245742012-09-05 17:12:55 -070026529 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026530}
26531
26532/**
26533 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026534
26535 @param pWDICtx: pointer to the WLAN DAL context
26536 pEventData: pointer to the event information structure
26537
Jeff Johnson295189b2012-06-20 16:38:30 -070026538 @see
26539 @return Result of the function call
26540*/
26541WDI_Status
26542WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026543(
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 WDI_ControlBlockType* pWDICtx,
26545 WDI_EventInfoType* pEventData
26546)
26547{
Jeff Johnson295189b2012-06-20 16:38:30 -070026548 eHalStatus halStatus;
26549 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026550 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26551 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26553
26554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026555 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026556
26557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 -------------------------------------------------------------------------*/
26560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26561 ( NULL == pEventData->pEventData ))
26562 {
26563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026567 }
26568
26569 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026570 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026571
26572 /*-------------------------------------------------------------------------
26573 Extract response and send it to UMAC
26574 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026575 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26576 {
26577 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26578 pEventData->pEventData,
26579 sizeof(halRcvFltPktClearRspMsg));
26580
26581 wdiRcvFltPktClearRspParamsType.wdiStatus =
26582 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26583 wdiRcvFltPktClearRspParamsType.bssIdx =
26584 halRcvFltPktClearRspMsg.bssIdx;
26585 }
26586 else
26587 {
26588 halStatus = *((eHalStatus*)pEventData->pEventData);
26589 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26590 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026591
26592 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026593 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026594
Jeff Johnsone7245742012-09-05 17:12:55 -070026595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026596}
26597#endif // WLAN_FEATURE_PACKET_FILTERING
26598
26599/**
26600 @brief Process Shutdown Rsp function
26601 There is no shutdown response comming from HAL
26602 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026603
Jeff Johnson295189b2012-06-20 16:38:30 -070026604 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026605 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026606
26607 @see
26608 @return Result of the function call
26609*/
26610WDI_Status
26611WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026612(
Jeff Johnson295189b2012-06-20 16:38:30 -070026613 WDI_ControlBlockType* pWDICtx,
26614 WDI_EventInfoType* pEventData
26615)
26616{
26617 /*There is no shutdown response comming from HAL - function just kept for
26618 simmetry */
26619 WDI_ASSERT(0);
26620 return WDI_STATUS_SUCCESS;
26621}/*WDI_ProcessShutdownRsp*/
26622
26623/**
26624 @brief WDI_SetPowerParamsReq
26625
Jeff Johnsone7245742012-09-05 17:12:55 -070026626 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026627 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026628
Jeff Johnson295189b2012-06-20 16:38:30 -070026629 wdiPowerParamsCb: callback for passing back the response
26630 of the Set Power Params operation received from the
26631 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026632
Jeff Johnson295189b2012-06-20 16:38:30 -070026633 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026634 callback
26635
Jeff Johnson295189b2012-06-20 16:38:30 -070026636 @return Result of the function call
26637*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026638WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026639WDI_SetPowerParamsReq
26640(
26641 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26642 WDI_SetPowerParamsCb wdiPowerParamsCb,
26643 void* pUserData
26644)
26645{
26646 WDI_EventInfoType wdiEventData;
26647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26648
26649 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026650 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 ------------------------------------------------------------------------*/
26652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26653 {
26654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26655 "WDI API call before module is initialized - Fail request");
26656
Jeff Johnsone7245742012-09-05 17:12:55 -070026657 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026658 }
26659
26660 /*------------------------------------------------------------------------
26661 Fill in Event data and post to the Main FSM
26662 ------------------------------------------------------------------------*/
26663 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026664 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026665 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026666 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026667 wdiEventData.pUserData = pUserData;
26668
26669 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26670}/*WDI_SetPowerParamsReq*/
26671
26672/**
26673 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026674
26675 @param pWDICtx: pointer to the WLAN DAL context
26676 pEventData: pointer to the event information structure
26677
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 @see
26679 @return Result of the function call
26680*/
26681WDI_Status
26682WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026683(
Jeff Johnson295189b2012-06-20 16:38:30 -070026684 WDI_ControlBlockType* pWDICtx,
26685 WDI_EventInfoType* pEventData
26686)
26687{
26688 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26689 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026691 wpt_uint16 usDataOffset = 0;
26692 wpt_uint16 usSendSize = 0;
26693 tSetPowerParamsType powerParams;
26694
26695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 -------------------------------------------------------------------------*/
26698 if (( NULL == pEventData ) ||
26699 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26700 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26701 {
26702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026706 }
26707
26708 /*-----------------------------------------------------------------------
26709 Get message buffer
26710 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026712 sizeof(powerParams),
26713 &pSendBuffer, &usDataOffset, &usSendSize))||
26714 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26715 {
26716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026717 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026718 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026721 }
26722
26723 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026724 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026725 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26726
26727 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026728 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26730
26731 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026732 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026733 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26734
26735 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026736 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026737 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26738
26739 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026740 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026741 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26742
26743 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026744 powerParams.uBETInterval =
26745 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026746
Yue Ma0da19492013-05-13 17:01:29 -070026747 /* MAX LI for modulated DTIM */
26748 powerParams.uMaxLIModulatedDTIM =
26749 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026750
26751 wpalMemoryCopy( pSendBuffer+usDataOffset,
26752 &powerParams,
26753 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026754
26755 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026756 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026757
26758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026759 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026761 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26762 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026763}
26764
26765/**
26766 @brief Process Power Params Rsp function (called when a
26767 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026768
26769 @param pWDICtx: pointer to the WLAN DAL context
26770 pEventData: pointer to the event information structure
26771
Jeff Johnson295189b2012-06-20 16:38:30 -070026772 @see
26773 @return Result of the function call
26774*/
26775WDI_Status
26776WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026777(
Jeff Johnson295189b2012-06-20 16:38:30 -070026778 WDI_ControlBlockType* pWDICtx,
26779 WDI_EventInfoType* pEventData
26780)
26781{
26782 WDI_Status wdiStatus;
26783 eHalStatus halStatus;
26784 WDI_SetPowerParamsCb wdiPowerParamsCb;
26785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26786
26787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 -------------------------------------------------------------------------*/
26790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26791 ( NULL == pEventData->pEventData ))
26792 {
26793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026797 }
26798
Jeff Johnsone7245742012-09-05 17:12:55 -070026799 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026800
26801 /*-------------------------------------------------------------------------
26802 Extract response and send it to UMAC
26803 -------------------------------------------------------------------------*/
26804 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026805 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026806
26807 /*Notify UMAC*/
26808 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26809
Jeff Johnsone7245742012-09-05 17:12:55 -070026810 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026811}/*WDI_ProcessSetPowerParamsRsp*/
26812
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026813/**
26814 @brief WDI_dhcpStartInd
26815 Host will send an event to the FW when DHCP is initiated
26816
26817 @param
26818 WDI_DHCPInd: DHCP Indication
26819 @see
26820 @return Result of the function call
26821*/
26822WDI_Status
26823WDI_dhcpStartInd
26824(
26825 WDI_DHCPInd *wdiDHCPInd
26826)
26827{
26828 WDI_EventInfoType wdiEventData;
26829
26830 /*------------------------------------------------------------------------
26831 Sanity Check
26832 ------------------------------------------------------------------------*/
26833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26834 {
26835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26836 "WDI API call before module is initialized - Fail request");
26837
26838 return WDI_STATUS_E_NOT_ALLOWED;
26839 }
26840
26841 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26842 wdiEventData.pEventData = wdiDHCPInd;
26843 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26844 wdiEventData.pCBfnc = NULL;
26845 wdiEventData.pUserData = NULL;
26846
26847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26848}
26849
26850
26851/**
26852 @brief WDI_dhcpStopInd
26853 Host will send an event to the FW when DHCP is completed
26854
26855 @param
26856 WDI_DHCPInd: DHCP Indication
26857 @see
26858 @return Result of the function call
26859*/
26860WDI_Status
26861WDI_dhcpStopInd
26862(
26863 WDI_DHCPInd *wdiDHCPInd
26864)
26865{
26866 WDI_EventInfoType wdiEventData;
26867
26868 /*------------------------------------------------------------------------
26869 Sanity Check
26870 ------------------------------------------------------------------------*/
26871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26872 {
26873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26874 "WDI API call before module is initialized - Fail request");
26875
26876 return WDI_STATUS_E_NOT_ALLOWED;
26877 }
26878
26879 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26880 wdiEventData.pEventData = wdiDHCPInd;
26881 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26882 wdiEventData.pCBfnc = NULL;
26883 wdiEventData.pUserData = NULL;
26884
26885 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26886}
26887
26888
26889/**
26890 @brief Process DHCP Start Indication message and post it to HAL
26891
26892 @param pWDICtx: pointer to the WLAN DAL context
26893 pEventData: pointer to the event information structure
26894
26895 @see
26896 @return Result of the function call
26897*/
26898WDI_Status
26899WDI_ProcessDHCPStartInd
26900(
26901 WDI_ControlBlockType* pWDICtx,
26902 WDI_EventInfoType* pEventData
26903)
26904{
26905 wpt_uint8* pSendBuffer = NULL;
26906 wpt_uint16 usDataOffset = 0;
26907 wpt_uint16 usSendSize = 0;
26908 wpt_uint16 usLen = 0;
26909 WDI_DHCPInd* pwdiDHCPInd = NULL;
26910 tDHCPInfo* pDHCPInfo;
26911
26912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26913
26914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26915 "%s", __func__);
26916
26917 /*-------------------------------------------------------------------------
26918 Sanity check
26919 -------------------------------------------------------------------------*/
26920 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26921 {
26922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26923 "%s: Invalid parameters", __func__);
26924 WDI_ASSERT(0);
26925 return WDI_STATUS_E_FAILURE;
26926 }
26927 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26928 /*-----------------------------------------------------------------------
26929 Get message buffer
26930 -----------------------------------------------------------------------*/
26931
26932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26933 WDI_DHCP_START_IND,
26934 sizeof(tDHCPInfo),
26935 &pSendBuffer, &usDataOffset, &usSendSize))||
26936 ( usSendSize < (usDataOffset + usLen )))
26937 {
26938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26939 "Unable to get send buffer in DHCP Start req %p ",
26940 pEventData);
26941 WDI_ASSERT(0);
26942 return WDI_STATUS_E_FAILURE;
26943 }
26944
26945 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26946 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26947 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26948 WDI_MAC_ADDR_LEN);
26949
26950 pWDICtx->pReqStatusUserData = NULL;
26951 pWDICtx->pfncRspCB = NULL;
26952
26953 /*-------------------------------------------------------------------------
26954 Send DHCP Start Indication to HAL
26955 -------------------------------------------------------------------------*/
26956 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26957
26958}/*WDI_ProcessDHCPStartInd*/
26959
26960/**
26961 @brief Process DHCP Stop indication message and post it to HAL
26962
26963 @param pWDICtx: pointer to the WLAN DAL context
26964 pEventData: pointer to the event information structure
26965
26966 @see
26967 @return Result of the function call
26968*/
26969WDI_Status
26970WDI_ProcessDHCPStopInd
26971(
26972 WDI_ControlBlockType* pWDICtx,
26973 WDI_EventInfoType* pEventData
26974)
26975{
26976 wpt_uint8* pSendBuffer = NULL;
26977 wpt_uint16 usDataOffset = 0;
26978 wpt_uint16 usSendSize = 0;
26979 wpt_uint16 usLen = 0;
26980 WDI_DHCPInd* pwdiDHCPInd = NULL;
26981 tDHCPInfo* pDHCPInfo;
26982
26983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26984
26985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26986 "%s", __func__);
26987
26988 /*-------------------------------------------------------------------------
26989 Sanity check
26990 -------------------------------------------------------------------------*/
26991
26992 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26993 {
26994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26995 "%s: Invalid parameters", __func__);
26996 WDI_ASSERT(0);
26997 return WDI_STATUS_E_FAILURE;
26998 }
26999 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27000 /*-----------------------------------------------------------------------
27001 Get message buffer
27002 -----------------------------------------------------------------------*/
27003
27004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27005 WDI_DHCP_STOP_IND,
27006 sizeof(tDHCPInfo),
27007 &pSendBuffer, &usDataOffset, &usSendSize))||
27008 ( usSendSize < (usDataOffset + usLen )))
27009 {
27010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27011 "Unable to get send buffer in DHCP Start req %p ",
27012 pEventData);
27013 WDI_ASSERT(0);
27014 return WDI_STATUS_E_FAILURE;
27015 }
27016
27017 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27018 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27019 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27020 WDI_MAC_ADDR_LEN);
27021
27022 pWDICtx->pReqStatusUserData = NULL;
27023 pWDICtx->pfncRspCB = NULL;
27024 /*-------------------------------------------------------------------------
27025 Send DHCP Stop indication to HAL
27026 -------------------------------------------------------------------------*/
27027 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27028
27029}/*WDI_ProcessDHCPStopInd*/
27030
27031
Jeff Johnson295189b2012-06-20 16:38:30 -070027032#ifdef WLAN_FEATURE_GTK_OFFLOAD
27033/**
27034 @brief WDI_GTKOffloadReq will be called when the upper MAC
27035 wants to set GTK Rekey Counter while in power save. Upon
27036 the call of this API the WLAN DAL will pack and send a
27037 HAL GTK offload request message to the lower RIVA
27038 sub-system if DAL is in state STARTED.
27039
27040 In state BUSY this request will be queued. Request won't
27041 be allowed in any other state.
27042
27043 WDI_PostAssocReq must have been called.
27044
27045 @param pwdiGtkOffloadParams: the GTK offload as specified
27046 by the Device Interface
27047
27048 wdiGtkOffloadCb: callback for passing back the response
27049 of the GTK offload operation received from the device
27050
27051 pUserData: user data will be passed back with the
27052 callback
27053
27054 @see WDI_PostAssocReq
27055 @return Result of the function call
27056*/
27057WDI_Status
27058WDI_GTKOffloadReq
27059(
27060 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27061 WDI_GtkOffloadCb wdiGtkOffloadCb,
27062 void* pUserData
27063)
27064{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027065 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27067
27068 /*------------------------------------------------------------------------
27069 Sanity Check
27070 ------------------------------------------------------------------------*/
27071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27072 {
27073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27074 "WDI API call before module is initialized - Fail request");
27075
27076 return WDI_STATUS_E_NOT_ALLOWED;
27077 }
27078
27079 /*------------------------------------------------------------------------
27080 Fill in Event data and post to the Main FSM
27081 ------------------------------------------------------------------------*/
27082 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27083 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027084 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027085 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27086 wdiEventData.pUserData = pUserData;
27087
27088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27089}
27090
27091
27092/**
27093 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27094 MAC wants to get GTK Rekey Counter while in power save.
27095 Upon the call of this API the WLAN DAL will pack and
27096 send a HAL GTK offload request message to the lower RIVA
27097 sub-system if DAL is in state STARTED.
27098
27099 In state BUSY this request will be queued. Request won't
27100 be allowed in any other state.
27101
27102 WDI_PostAssocReq must have been called.
27103
27104 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27105 Information Message as specified by the
27106 Device Interface
27107
27108 wdiGtkOffloadGetInfoCb: callback for passing back the
27109 response of the GTK offload operation received from the
27110 device
27111
27112 pUserData: user data will be passed back with the
27113 callback
27114
27115 @see WDI_PostAssocReq
27116 @return Result of the function call
27117*/
27118WDI_Status
27119WDI_GTKOffloadGetInfoReq
27120(
27121 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27122 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27123 void* pUserData
27124)
27125{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027126 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27128
27129 /*------------------------------------------------------------------------
27130 Sanity Check
27131 ------------------------------------------------------------------------*/
27132 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27133 {
27134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27135 "WDI API call before module is initialized - Fail request");
27136
27137 return WDI_STATUS_E_NOT_ALLOWED;
27138 }
27139
27140 /*------------------------------------------------------------------------
27141 Fill in Event data and post to the Main FSM
27142 ------------------------------------------------------------------------*/
27143 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27144 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27145 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27146 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27147 wdiEventData.pUserData = pUserData;
27148
27149 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27150}
27151
27152
27153/**
27154 @brief Process set GTK Offload Request function
27155
27156 @param pWDICtx: pointer to the WLAN DAL context
27157 pEventData: pointer to the event information structure
27158
27159 @see
27160 @return Result of the function call
27161*/
27162WDI_Status
27163WDI_ProcessGTKOffloadReq
27164(
27165 WDI_ControlBlockType* pWDICtx,
27166 WDI_EventInfoType* pEventData
27167)
27168{
27169 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27170 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27171 wpt_uint8* pSendBuffer = NULL;
27172 wpt_uint16 usDataOffset = 0;
27173 wpt_uint16 usSendSize = 0;
27174 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027175 wpt_uint8 ucCurrentSessionId = 0;
27176 WDI_BSSSessionType* pBSSSes = NULL;
27177
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27179
27180 /*-------------------------------------------------------------------------
27181 Sanity check
27182 -------------------------------------------------------------------------*/
27183 if (( NULL == pEventData ) ||
27184 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27185 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27186 {
27187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027189 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027190 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027191 }
27192
27193 /*-----------------------------------------------------------------------
27194 Get message buffer
27195 -----------------------------------------------------------------------*/
27196 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27197 sizeof(gtkOffloadReqParams),
27198 &pSendBuffer, &usDataOffset, &usSendSize))||
27199 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27200 {
27201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027202 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027203 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27204 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027205 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027206 }
27207
27208 //
27209 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27210 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027211 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27212 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27213 &pBSSSes);
27214 if ( NULL == pBSSSes )
27215 {
27216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027217 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027218 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027219 }
27220
27221 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27222
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27224 // Copy KCK
27225 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27226 // Copy KEK
27227 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27228 // Copy KeyReplayCounter
27229 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27230
27231 wpalMemoryCopy( pSendBuffer+usDataOffset,
27232 &gtkOffloadReqParams,
27233 sizeof(gtkOffloadReqParams));
27234
27235 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27236 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27237
27238 /*-------------------------------------------------------------------------
27239 Send Get STA Request to HAL
27240 -------------------------------------------------------------------------*/
27241 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27242 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027243
27244fail:
27245 // Release the message buffer so we don't leak
27246 wpalMemoryFree(pSendBuffer);
27247
27248failRequest:
27249 //WDA should have failure check to avoid the memory leak
27250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027251}
27252
27253
27254/**
27255 @brief Process GTK Offload Get Information Request function
27256
27257 @param pWDICtx: pointer to the WLAN DAL context
27258 pEventData: pointer to the event information structure
27259
27260 @see
27261 @return Result of the function call
27262*/
27263WDI_Status
27264WDI_ProcessGTKOffloadGetInfoReq
27265(
27266 WDI_ControlBlockType* pWDICtx,
27267 WDI_EventInfoType* pEventData
27268)
27269{
27270 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27271 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27272 wpt_uint8* pSendBuffer = NULL;
27273 wpt_uint16 usDataOffset = 0;
27274 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027275 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27276 wpt_uint8 ucCurrentSessionId = 0;
27277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027278
27279 /*-------------------------------------------------------------------------
27280 Sanity check
27281 -------------------------------------------------------------------------*/
27282 if (( NULL == pEventData ) ||
27283 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27284 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27285 {
27286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027289 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 }
27291
27292 /*-----------------------------------------------------------------------
27293 Get message buffer
27294 -----------------------------------------------------------------------*/
27295 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027296 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027297 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027298 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027299 {
27300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027301 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027302 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27303 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027304 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027305 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027306 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27307 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27308 &pBSSSes);
27309 if ( NULL == pBSSSes )
27310 {
27311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027312 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027313 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027314 }
27315 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027316
27317 //
27318 // Don't need to fill send buffer other than header
27319 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027320 wpalMemoryCopy( pSendBuffer+usDataOffset,
27321 &halGtkOffloadGetInfoReqParams,
27322 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027323
27324 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27325 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27326
27327 /*-------------------------------------------------------------------------
27328 Send Get STA Request to HAL
27329 -------------------------------------------------------------------------*/
27330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27331 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027332fail:
27333 // Release the message buffer so we don't leak
27334 wpalMemoryFree(pSendBuffer);
27335
27336failRequest:
27337 //WDA should have failure check to avoid the memory leak
27338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027339}
27340
27341/**
27342 @brief Process host offload Rsp function (called when a
27343 response is being received over the bus from HAL)
27344
27345 @param pWDICtx: pointer to the WLAN DAL context
27346 pEventData: pointer to the event information structure
27347
27348 @see
27349 @return Result of the function call
27350*/
27351WDI_Status
27352WDI_ProcessGtkOffloadRsp
27353(
27354 WDI_ControlBlockType* pWDICtx,
27355 WDI_EventInfoType* pEventData
27356)
27357{
Jeff Johnson295189b2012-06-20 16:38:30 -070027358 eHalStatus halStatus;
27359 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027360 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27361 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027362
27363 /*-------------------------------------------------------------------------
27364 Sanity check
27365 -------------------------------------------------------------------------*/
27366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27367 ( NULL == pEventData->pEventData))
27368 {
27369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027371 WDI_ASSERT(0);
27372 return WDI_STATUS_E_FAILURE;
27373 }
27374
Wilson Yangcf2cf012013-10-10 23:13:38 -070027375 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27376
Jeff Johnson295189b2012-06-20 16:38:30 -070027377 /*-------------------------------------------------------------------------
27378 Extract response and send it to UMAC
27379 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027380 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27381 {
27382 wpalMemoryCopy( &halGtkOffloadRspParams,
27383 pEventData->pEventData,
27384 sizeof(halGtkOffloadRspParams));
27385
27386 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027387 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027388 wdiGtkOffloadRsparams.bssIdx =
27389 halGtkOffloadRspParams.bssIdx;
27390 }
27391 else
27392 {
27393 halStatus = *((eHalStatus*)pEventData->pEventData);
27394 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027396
27397 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027398 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027399
27400 return WDI_STATUS_SUCCESS;
27401}
27402
27403/**
27404 @brief Process GTK Offload Get Information Response function
27405
27406 @param pWDICtx: pointer to the WLAN DAL context
27407 pEventData: pointer to the event information structure
27408
27409 @see
27410 @return Result of the function call
27411*/
27412WDI_Status
27413WDI_ProcessGTKOffloadGetInfoRsp
27414(
27415 WDI_ControlBlockType* pWDICtx,
27416 WDI_EventInfoType* pEventData
27417)
27418{
Jeff Johnson295189b2012-06-20 16:38:30 -070027419 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027420 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027421 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27422 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027423 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027424
Jeff Johnson295189b2012-06-20 16:38:30 -070027425
27426 /*-------------------------------------------------------------------------
27427 Sanity check
27428 -------------------------------------------------------------------------*/
27429 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27430 ( NULL == pEventData->pEventData ))
27431 {
27432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 WDI_ASSERT(0);
27435 return WDI_STATUS_E_FAILURE;
27436 }
27437
Wilson Yangcf2cf012013-10-10 23:13:38 -070027438 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27439
27440 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027441 Extract response and send it to UMAC
27442 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027443 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27444 {
27445 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27446 pEventData->pEventData,
27447 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027448
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027449 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027450 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027451 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27452 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27453 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27454 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27455 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27456 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27457 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27458 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027459
27460 wpalMutexAcquire(&pWDICtx->wptMutex);
27461 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27462 &pBSSSes);
27463
27464 if ( NULL == pBSSSes )
27465 {
27466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27467 "Association sequence for this BSS does not exist or "
27468 "association no longer in progress - mysterious HAL response");
27469 wpalMutexRelease(&pWDICtx->wptMutex);
27470 return WDI_STATUS_E_NOT_ALLOWED;
27471 }
27472
27473 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27474 sizeof (wpt_macAddr));
27475 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027476 }
27477 else
27478 {
27479 halStatus = *((eHalStatus*)pEventData->pEventData);
27480 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27481 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027482 /*Notify UMAC*/
27483 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27484 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027485 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027486
27487 return WDI_STATUS_SUCCESS;
27488}
27489#endif // WLAN_FEATURE_GTK_OFFLOAD
27490
27491#ifdef WLAN_WAKEUP_EVENTS
27492WDI_Status
27493WDI_ProcessWakeReasonInd
27494(
27495 WDI_ControlBlockType* pWDICtx,
27496 WDI_EventInfoType* pEventData
27497)
27498{
27499 WDI_LowLevelIndType *pWdiInd;
27500 tpWakeReasonParams pWakeReasonParams;
27501 wpt_uint32 allocSize = 0;
27502
27503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027504 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027505
27506 /*-------------------------------------------------------------------------
27507 Sanity check
27508 -------------------------------------------------------------------------*/
27509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27510 ( NULL == pEventData->pEventData ))
27511 {
27512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027514 WDI_ASSERT( 0 );
27515 return WDI_STATUS_E_FAILURE;
27516 }
27517
27518 /*-------------------------------------------------------------------------
27519 Extract indication and send it to UMAC
27520 -------------------------------------------------------------------------*/
27521 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27522
27523 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27524
27525 //Allocate memory for WDI_WakeReasonIndType structure
27526 pWdiInd = wpalMemoryAllocate(allocSize) ;
27527
27528 if(NULL == pWdiInd)
27529 {
27530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027531 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027532 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027533 WDI_ASSERT(0);
27534 return WDI_STATUS_E_FAILURE;
27535 }
27536
27537 wpalMemoryZero(pWdiInd, allocSize);
27538
27539 /* Fill in the indication parameters*/
27540 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27541 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27542 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27543 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27544 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27545 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27546 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27547 &(pWakeReasonParams->aDataStart[0]),
27548 pWakeReasonParams->ulStoredDataLen);
27549
ltimariu034f7d62013-01-24 18:54:33 -080027550
27551 if ( pWDICtx->wdiLowLevelIndCB )
27552 {
27553 /*Notify UMAC*/
27554 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27555 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027556
27557 //Free memory allocated for WDI_WakeReasonIndType structure
27558 wpalMemoryFree(pWdiInd);
27559
27560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027561 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027562
27563 return WDI_STATUS_SUCCESS;
27564}
27565#endif // WLAN_WAKEUP_EVENTS
27566
27567void WDI_GetWcnssCompiledApiVersion
27568(
27569 WDI_WlanVersionType *pWcnssApiVersion
27570)
27571{
27572 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27573 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27574 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27575 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27576}
27577
27578/**
27579 @brief Process Set TM Level Rsp function (called when a
27580 response is being received over the bus from HAL)
27581
27582 @param pWDICtx: pointer to the WLAN DAL context
27583 pEventData: pointer to the event information structure
27584
27585 @see
27586 @return Result of the function call
27587*/
27588WDI_Status
27589WDI_ProcessSetTmLevelRsp
27590(
27591 WDI_ControlBlockType* pWDICtx,
27592 WDI_EventInfoType* pEventData
27593)
27594{
27595 WDI_Status wdiStatus;
27596 eHalStatus halStatus;
27597 WDI_SetTmLevelCb wdiSetTmLevelCb;
27598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27599
27600 /*-------------------------------------------------------------------------
27601 Sanity check
27602 -------------------------------------------------------------------------*/
27603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27604 ( NULL == pEventData->pEventData ))
27605 {
27606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027608 WDI_ASSERT(0);
27609 return WDI_STATUS_E_FAILURE;
27610 }
27611
27612 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27613
27614 /*-------------------------------------------------------------------------
27615 Extract response and send it to UMAC
27616 -------------------------------------------------------------------------*/
27617 halStatus = *((eHalStatus*)pEventData->pEventData);
27618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27619
27620 /*Notify UMAC*/
27621 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27622
27623 return WDI_STATUS_SUCCESS;
27624}/*WDI_ProcessSetTmLevelRsp*/
27625
27626/**
27627 @brief Process Set Thermal Mitigation level Changed request
27628
27629 @param pWDICtx: pointer to the WLAN DAL context
27630 pEventData: pointer to the event information structure
27631
27632 @see
27633 @return Result of the function call
27634*/
27635WDI_Status
27636WDI_ProcessSetTmLevelReq
27637(
27638 WDI_ControlBlockType* pWDICtx,
27639 WDI_EventInfoType* pEventData
27640)
27641{
27642 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27643 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27644 wpt_uint8* pSendBuffer = NULL;
27645 wpt_uint16 usDataOffset = 0;
27646 wpt_uint16 usSendSize = 0;
27647 tSetThermalMitgationType halTmMsg;
27648
27649 /*-------------------------------------------------------------------------
27650 Sanity check
27651 -------------------------------------------------------------------------*/
27652 if (( NULL == pEventData ) ||
27653 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27654 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27655 {
27656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027658 WDI_ASSERT(0);
27659 return WDI_STATUS_E_FAILURE;
27660 }
27661
27662 /*-----------------------------------------------------------------------
27663 Get message buffer
27664 -----------------------------------------------------------------------*/
27665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27666 sizeof(halTmMsg),
27667 &pSendBuffer, &usDataOffset, &usSendSize))||
27668 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27669 {
27670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027671 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027672 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27673 WDI_ASSERT(0);
27674 return WDI_STATUS_E_FAILURE;
27675 }
27676
27677 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27678 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27679
27680 wpalMemoryCopy( pSendBuffer+usDataOffset,
27681 &halTmMsg,
27682 sizeof(halTmMsg));
27683
27684 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27685 pWDICtx->pfncRspCB = NULL;
27686 /*-------------------------------------------------------------------------
27687 Send Get STA Request to HAL
27688 -------------------------------------------------------------------------*/
27689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27690 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27691}
27692
27693/* Fill the value from the global features enabled array to the global capabilities
27694 * bitmap struct
27695 */
27696static void
27697FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27698{
27699 wpt_int8 i;
27700 for (i=0; i<len; i++)
27701 {
27702 setFeatCaps(fCaps, enabledFeat[i]);
27703 }
27704}
27705
27706/**
27707 @brief WDI_featureCapsExchangeReq
27708 Post feature capability bitmap exchange event.
27709 Host will send its own capability to FW in this req and
27710 expect FW to send its capability back as a bitmap in Response
27711
27712 @param
27713
27714 wdiFeatureCapsExchangeCb: callback called on getting the response.
27715 It is kept to mantain similarity between WDI reqs and if needed, can
27716 be used in future. Currently, It is set to NULL
27717
27718 pUserData: user data will be passed back with the
27719 callback
27720
27721 @see
27722 @return Result of the function call
27723*/
27724WDI_Status
27725WDI_featureCapsExchangeReq
27726(
27727 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27728 void* pUserData
27729)
27730{
27731 WDI_EventInfoType wdiEventData;
27732 wpt_int32 fCapsStructSize;
27733
27734 /*------------------------------------------------------------------------
27735 Sanity Check
27736 ------------------------------------------------------------------------*/
27737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27738 {
27739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27740 "WDI API call before module is initialized - Fail request");
27741
27742 return WDI_STATUS_E_NOT_ALLOWED;
27743 }
27744
27745 /* Allocate memory separately for global variable carrying FW caps */
27746 fCapsStructSize = sizeof(tWlanFeatCaps);
27747 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27748 if ( NULL == gpHostWlanFeatCaps )
27749 {
27750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027751 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027752 WDI_ASSERT(0);
27753 return WDI_STATUS_MEM_FAILURE;
27754 }
27755
27756 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27757
27758 /*------------------------------------------------------------------------
27759 Fill in Event data and post to the Main FSM
27760 ------------------------------------------------------------------------*/
27761 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27762 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027764 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027765 gpHostWlanFeatCaps->featCaps[0],
27766 gpHostWlanFeatCaps->featCaps[1],
27767 gpHostWlanFeatCaps->featCaps[2],
27768 gpHostWlanFeatCaps->featCaps[3]
27769 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27771 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027772 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27773 wdiEventData.pEventData = gpHostWlanFeatCaps;
27774 wdiEventData.uEventDataSize = fCapsStructSize;
27775 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27776 wdiEventData.pUserData = pUserData;
27777
27778 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27779}
27780
27781/**
Yathishd8713192012-12-10 14:21:35 -080027782 @brief Disable Active mode offload in Host
27783
27784 @param void
27785 @see
27786 @return void
27787*/
27788void
27789WDI_disableCapablityFeature(wpt_uint8 feature_index)
27790{
27791 supportEnabledFeatures[feature_index] = 0;
27792 return;
27793}
27794
27795/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027796 @brief Process Host-FW Capability Exchange Request function
27797
27798 @param pWDICtx: pointer to the WLAN DAL context
27799 pEventData: pointer to the event information structure
27800
27801 @see
27802 @return Result of the function call
27803*/
27804WDI_Status
27805WDI_ProcessFeatureCapsExchangeReq
27806(
27807 WDI_ControlBlockType* pWDICtx,
27808 WDI_EventInfoType* pEventData
27809)
27810{
27811 wpt_uint8* pSendBuffer = NULL;
27812 wpt_uint16 usDataOffset = 0;
27813 wpt_uint16 usSendSize = 0;
27814 wpt_uint16 usLen = 0;
27815
27816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27817
27818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027819 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027820
27821 /*-------------------------------------------------------------------------
27822 Sanity check
27823 -------------------------------------------------------------------------*/
27824 /* Call back function is NULL since not required for cap exchange req */
27825 if (( NULL == pEventData ) ||
27826 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27827 {
27828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027830 WDI_ASSERT(0);
27831 return WDI_STATUS_E_FAILURE;
27832 }
27833
27834 /*-----------------------------------------------------------------------
27835 Get message buffer
27836 -----------------------------------------------------------------------*/
27837 usLen = sizeof(tWlanFeatCaps);
27838
27839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27840 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27841 usLen,
27842 &pSendBuffer, &usDataOffset, &usSendSize))||
27843 ( usSendSize < (usDataOffset + usLen )))
27844 {
27845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027846 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027847 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27848 WDI_ASSERT(0);
27849 return WDI_STATUS_E_FAILURE;
27850 }
27851
27852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027853 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027854 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27855 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27856 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27857 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27858 );
27859
27860 /* Copy host caps after the offset in the send buffer */
27861 wpalMemoryCopy( pSendBuffer+usDataOffset,
27862 (tWlanFeatCaps *)pEventData->pEventData,
27863 usLen);
27864
27865 /*-------------------------------------------------------------------------
27866 Send Start Request to HAL
27867 -------------------------------------------------------------------------*/
27868 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27869 (WDI_StartRspCb)pEventData->pCBfnc,
27870 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27871
27872}/*WDI_ProcessFeatureCapsExchangeReq*/
27873
27874/**
27875 @brief Process Host-FW Capability Exchange Response function
27876
27877 @param pWDICtx: pointer to the WLAN DAL context
27878 pEventData: pointer to the event information structure
27879
27880 @see
27881 @return Result of the function call
27882*/
27883WDI_Status
27884WDI_ProcessFeatureCapsExchangeRsp
27885(
27886 WDI_ControlBlockType* pWDICtx,
27887 WDI_EventInfoType* pEventData
27888)
27889{
27890 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27891 wpt_int32 fCapsStructSize;
27892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27893
27894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027895 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027896
27897 /*-------------------------------------------------------------------------
27898 Sanity check
27899 -------------------------------------------------------------------------*/
27900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27901 ( NULL == pEventData->pEventData ))
27902 {
27903 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027906 WDI_ASSERT(0);
27907 return WDI_STATUS_E_FAILURE;
27908 }
27909
27910 /* Allocate memory separately for global variable carrying FW caps */
27911 fCapsStructSize = sizeof(tWlanFeatCaps);
27912 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27913 if ( NULL == gpFwWlanFeatCaps )
27914 {
27915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027916 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 WDI_ASSERT(0);
27918 return WDI_STATUS_MEM_FAILURE;
27919 }
27920
27921 /*-------------------------------------------------------------------------
27922 Unpack HAL Response Message - the header was already extracted by the
27923 main Response Handling procedure
27924 -------------------------------------------------------------------------*/
27925 /*-------------------------------------------------------------------------
27926 Extract response and send it to UMAC
27927 -------------------------------------------------------------------------*/
27928
27929 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27930 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain5f7589c2013-11-17 22:05:35 -080027932 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027933 gpFwWlanFeatCaps->featCaps[0],
27934 gpFwWlanFeatCaps->featCaps[1],
27935 gpFwWlanFeatCaps->featCaps[2],
27936 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027937 );
27938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27939 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027940 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27941
27942 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27943 if (wdiFeatureCapsExchangeCb != NULL)
27944 wdiFeatureCapsExchangeCb(NULL, NULL);
27945
27946 return WDI_STATUS_SUCCESS;
27947}
27948
Mohit Khanna4a70d262012-09-11 16:30:12 -070027949#ifdef WLAN_FEATURE_11AC
27950WDI_Status
27951WDI_ProcessUpdateVHTOpModeRsp
27952(
27953 WDI_ControlBlockType* pWDICtx,
27954 WDI_EventInfoType* pEventData
27955)
27956{
27957 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27958 WDI_Status wdiStatus;
27959 eHalStatus halStatus;
27960
27961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27962
27963 /*-------------------------------------------------------------------------
27964 Sanity check
27965 -------------------------------------------------------------------------*/
27966 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27967 ( NULL == pEventData->pEventData))
27968 {
27969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027970 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027971 WDI_ASSERT(0);
27972 return WDI_STATUS_E_FAILURE;
27973 }
27974 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27975
27976 /*-------------------------------------------------------------------------
27977 Extract response and send it to UMAC
27978 -------------------------------------------------------------------------*/
27979 halStatus = *((eHalStatus*)pEventData->pEventData);
27980 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27981
27982 /*Notify UMAC*/
27983 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27984
27985 return WDI_STATUS_SUCCESS;
27986}
27987#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027988/**
27989 @brief WDI_getHostWlanFeatCaps
27990 WDI API that returns whether the feature passed to it as enum value in
27991 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27992 variable storing host capability bitmap to find this. This can be used by
27993 other moduels to decide certain things like call different APIs based on
27994 whether a particular feature is supported.
27995
27996 @param
27997
27998 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27999
28000 @see
28001 @return
28002 0 - if the feature is NOT supported in host
28003 any non-zero value - if the feature is SUPPORTED in host.
28004*/
28005wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28006{
28007 wpt_uint8 featSupported = 0;
28008 if (gpHostWlanFeatCaps != NULL)
28009 {
28010 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28011 }
28012 else
28013 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028015 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028016 }
28017 return featSupported;
28018}
28019
28020/**
28021 @brief WDI_getFwWlanFeatCaps
28022 WDI API that returns whether the feature passed to it as enum value in
28023 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28024 variable storing host capability bitmap to find this. This can be used by
28025 other moduels to decide certain things like call different APIs based on
28026 whether a particular feature is supported.
28027
28028 @param
28029
28030 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28031 in wlan_hal_msg.h.
28032
28033 @see
28034 @return
28035 0 - if the feature is NOT supported in FW
28036 any non-zero value - if the feature is SUPPORTED in FW.
28037*/
28038wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28039{
28040 wpt_uint8 featSupported = 0;
28041 if (gpFwWlanFeatCaps != NULL)
28042 {
28043 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28044 }
28045 else
28046 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028048 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028049 }
28050 return featSupported;
28051}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028052
28053#ifdef WLAN_FEATURE_11AC
28054WDI_Status
28055WDI_ProcessUpdateVHTOpModeReq
28056(
28057 WDI_ControlBlockType* pWDICtx,
28058 WDI_EventInfoType* pEventData
28059)
28060{
28061 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28062 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28063 wpt_uint8* pSendBuffer = NULL;
28064 wpt_uint16 usDataOffset = 0;
28065 wpt_uint16 usSendSize = 0;
28066
28067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28068
28069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028070 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028071
28072 /*-------------------------------------------------------------------------
28073 Sanity check
28074 -------------------------------------------------------------------------*/
28075 if (( NULL == pEventData ) ||
28076 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28077 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28078 {
28079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028080 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028081 WDI_ASSERT(0);
28082 return WDI_STATUS_E_FAILURE;
28083 }
28084
28085 /*-----------------------------------------------------------------------
28086 Get message buffer
28087 -----------------------------------------------------------------------*/
28088 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28089 sizeof(WDI_UpdateVHTOpMode),
28090 &pSendBuffer, &usDataOffset, &usSendSize))||
28091 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28092 {
28093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28094 "Unable to get send buffer in update vht opMode req");
28095 WDI_ASSERT(0);
28096 return WDI_STATUS_E_FAILURE;
28097 }
28098
28099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028100 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028101
28102 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28103 sizeof(WDI_UpdateVHTOpMode));
28104
28105 /*-------------------------------------------------------------------------
28106 Send Start Request to HAL
28107 -------------------------------------------------------------------------*/
28108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28109 wdiVHTOpModeCb,
28110 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28111
28112}
28113
28114WDI_Status
28115WDI_UpdateVHTOpModeReq
28116(
28117 WDI_UpdateVHTOpMode *pData,
28118 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28119 void* pUserData
28120)
28121{
28122 WDI_EventInfoType wdiEventData;
28123
28124 /*------------------------------------------------------------------------
28125 Sanity Check
28126 ------------------------------------------------------------------------*/
28127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28128 {
28129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28130 "WDI API call before module is initialized - Fail request");
28131
28132 return WDI_STATUS_E_NOT_ALLOWED;
28133 }
28134
28135 /*------------------------------------------------------------------------
28136 Fill in Event data and post to the Main FSM
28137 ------------------------------------------------------------------------*/
28138 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28139 wdiEventData.pEventData = pData;
28140 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28141 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28142 wdiEventData.pUserData = pUserData;
28143
28144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain5f7589c2013-11-17 22:05:35 -080028145 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028146
28147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28148
28149}
28150#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028151
28152/**
28153 @brief WDI_TransportChannelDebug -
28154 Display DXE Channel debugging information
28155 User may request to display DXE channel snapshot
28156 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028157
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080028158 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028159 @param enableStallDetect : Enable stall detect feature
28160 This feature will take effect to data performance
28161 Not integrate till fully verification
28162 @see
28163 @return none
28164*/
28165void WDI_TransportChannelDebug
28166(
28167 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028168 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028169)
28170{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028171 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028172 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028173}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028174/**
28175 @brief WDI_SsrTimerCB
28176 Callback function for SSR timer, if this is called then the graceful
28177 shutdown for Riva did not happen.
28178
28179 @param pUserData : user data to timer
28180
28181 @see
28182 @return none
28183*/
28184void
28185WDI_SsrTimerCB
28186(
28187 void *pUserData
28188)
28189{
28190 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28192
28193 if (NULL == pWDICtx )
28194 {
28195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028196 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028197 WDI_ASSERT(0);
28198 return;
28199 }
28200 wpalRivaSubystemRestart();
28201
28202 return;
28203
28204}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028205
28206/**
28207 @brief WDI_SetEnableSSR -
28208 This API is called to enable/disable SSR on WDI timeout.
28209
28210 @param enableSSR : enable/disable SSR
28211
28212 @see
28213 @return none
28214*/
28215void WDI_SetEnableSSR(wpt_boolean enableSSR)
28216{
28217 gWDICb.bEnableSSR = enableSSR;
28218}
Leo Chang00bc9132013-08-01 19:21:11 -070028219
28220
28221#ifdef FEATURE_WLAN_LPHB
28222/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028223 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028224 This function will be invoked when FW detects low power
28225 heart beat failure
28226
28227 @param pWDICtx : wdi context
28228 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028229 @see
28230 @return Result of the function call
28231*/
28232WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028233WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028234(
28235 WDI_ControlBlockType* pWDICtx,
28236 WDI_EventInfoType* pEventData
28237)
28238{
28239 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028240 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28242
28243 /*-------------------------------------------------------------------------
28244 Sanity check
28245 -------------------------------------------------------------------------*/
28246 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28247 (NULL == pEventData->pEventData))
28248 {
28249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28250 "%s: Invalid parameters", __func__);
28251 WDI_ASSERT(0);
28252 return WDI_STATUS_E_FAILURE;
28253 }
28254
28255 /*-------------------------------------------------------------------------
28256 Extract indication and send it to UMAC
28257 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028258 wpalMemoryCopy(&lphbIndicationParam,
28259 pEventData->pEventData,
28260 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028261
Leo Chang8d19a5f2013-09-26 13:32:26 -070028262 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028263 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028264 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028265 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028266 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028267 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028268 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028269 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028270 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028271 /*Notify UMAC*/
28272 if (pWDICtx->wdiLowLevelIndCB)
28273 {
28274 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28275 }
28276
28277 return WDI_STATUS_SUCCESS;
28278}
28279
28280/**
28281 @brief WDI_ProcessLphbCfgRsp -
28282 LPHB configuration response from FW
28283
28284 @param pWDICtx : wdi context
28285 pEventData : indication data
28286
28287 @see
28288 @return Result of the function call
28289*/
28290WDI_Status WDI_ProcessLphbCfgRsp
28291(
28292 WDI_ControlBlockType* pWDICtx,
28293 WDI_EventInfoType* pEventData
28294)
28295{
28296 WDI_Status wdiStatus;
28297 eHalStatus halStatus;
28298 WDI_LphbCfgCb wdiLphbCfgCb;
28299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28300
28301 /*-------------------------------------------------------------------------
28302 Sanity check
28303 -------------------------------------------------------------------------*/
28304 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28305 (NULL == pEventData->pEventData))
28306 {
28307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28308 "%s: Invalid parameters", __func__);
28309 WDI_ASSERT(0);
28310 return WDI_STATUS_E_FAILURE;
28311 }
28312
28313 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28314
28315 /*-------------------------------------------------------------------------
28316 Extract response and send it to UMAC
28317 -------------------------------------------------------------------------*/
28318 halStatus = *((eHalStatus*)pEventData->pEventData);
28319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28320
28321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28322 "LPHB Cfg Rsp Return status %d", wdiStatus);
28323 /*Notify UMAC*/
28324 if (NULL != wdiLphbCfgCb)
28325 {
28326 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28327 }
28328
28329 return WDI_STATUS_SUCCESS;
28330}
28331
28332/**
28333 @brief WDI_ProcessLPHBConfReq -
28334 LPHB configuration request to FW
28335
28336 @param pWDICtx : wdi context
28337 pEventData : indication data
28338
28339 @see
28340 @return none
28341*/
28342WDI_Status WDI_ProcessLPHBConfReq
28343(
28344 WDI_ControlBlockType* pWDICtx,
28345 WDI_EventInfoType* pEventData
28346)
28347{
28348 WDI_LPHBReq *pLphbReqParams;
28349 WDI_Status wdiStatus;
28350 wpt_uint8* pSendBuffer = NULL;
28351 wpt_uint16 usDataOffset = 0;
28352 wpt_uint16 usSendSize = 0;
28353 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28355
28356 /*-------------------------------------------------------------------------
28357 Sanity check
28358 -------------------------------------------------------------------------*/
28359 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28360 {
28361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28362 "%s: Invalid parameters in Suspend ind",__func__);
28363 WDI_ASSERT(0);
28364 return WDI_STATUS_E_FAILURE;
28365 }
28366
28367 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28368
28369 /*-----------------------------------------------------------------------
28370 Get message buffer
28371 -----------------------------------------------------------------------*/
28372 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28373 WDI_LPHB_CFG_REQ,
28374 sizeof(tHalLowPowerHeartBeatReqMsg),
28375 &pSendBuffer, &usDataOffset, &usSendSize))||
28376 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28377 {
28378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28379 "Unable to get send buffer in LPHB Ind ");
28380 WDI_ASSERT(0);
28381 return WDI_STATUS_E_FAILURE;
28382 }
28383
28384 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28385 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28386
28387 halLphbReqRarams->lowPowerHeartBeatCmdType =
28388 (tANI_U16)(++pLphbReqParams->cmd);
28389 switch ((tANI_U16)pLphbReqParams->cmd)
28390 {
28391 case WDI_LPHB_SET_EN_PARAMS_INDID:
28392 halLphbReqRarams->sessionIdx =
28393 pLphbReqParams->params.lphbEnableReq.session;
28394 halLphbReqRarams->options.control.heartBeatEnable =
28395 pLphbReqParams->params.lphbEnableReq.enable;
28396 halLphbReqRarams->options.control.heartBeatType =
28397 pLphbReqParams->params.lphbEnableReq.item;
28398 break;
28399
28400 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28401 halLphbReqRarams->sessionIdx =
28402 pLphbReqParams->params.lphbTcpParamReq.session;
28403 halLphbReqRarams->options.tcpParams.timeOutSec =
28404 pLphbReqParams->params.lphbTcpParamReq.timeout;
28405 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28406 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28407 sizeof(v_U32_t));
28408 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28409 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28410 sizeof(v_U32_t));
28411
28412 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28413 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28414 WDI_MAC_ADDR_LEN);
28415
28416 halLphbReqRarams->options.tcpParams.hostPort =
28417 pLphbReqParams->params.lphbTcpParamReq.src_port;
28418 halLphbReqRarams->options.tcpParams.destPort =
28419 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028420 halLphbReqRarams->options.tcpParams.timePeriodSec =
28421 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28422 halLphbReqRarams->options.tcpParams.tcpSn =
28423 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028424 break;
28425
28426 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28427 halLphbReqRarams->sessionIdx =
28428 pLphbReqParams->params.lphbTcpFilterReq.session;
28429 halLphbReqRarams->options.tcpUdpFilter.offset =
28430 pLphbReqParams->params.lphbTcpFilterReq.offset;
28431 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28432 pLphbReqParams->params.lphbTcpFilterReq.length;
28433 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28434 pLphbReqParams->params.lphbTcpFilterReq.filter,
28435 WDI_LPHB_FILTER_LEN);
28436 break;
28437
28438 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28439 halLphbReqRarams->sessionIdx =
28440 pLphbReqParams->params.lphbUdpParamReq.session;
28441 halLphbReqRarams->options.udpParams.timeOutSec =
28442 pLphbReqParams->params.lphbUdpParamReq.timeout;
28443 halLphbReqRarams->options.udpParams.timePeriodSec =
28444 pLphbReqParams->params.lphbUdpParamReq.interval;
28445 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28446 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28447 sizeof(v_U32_t));
28448 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28449 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28450 sizeof(v_U32_t));
28451
28452 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28453 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28454 WDI_MAC_ADDR_LEN);
28455
28456 halLphbReqRarams->options.udpParams.hostPort =
28457 pLphbReqParams->params.lphbUdpParamReq.src_port;
28458 halLphbReqRarams->options.udpParams.destPort =
28459 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28460 break;
28461
28462 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28463 halLphbReqRarams->sessionIdx =
28464 pLphbReqParams->params.lphbUdpFilterReq.session;
28465 halLphbReqRarams->options.tcpUdpFilter.offset =
28466 pLphbReqParams->params.lphbUdpFilterReq.offset;
28467 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28468 pLphbReqParams->params.lphbUdpFilterReq.length;
28469 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28470 pLphbReqParams->params.lphbUdpFilterReq.filter,
28471 WDI_LPHB_FILTER_LEN);
28472 break;
28473
28474 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28475 /* NA */
28476 break;
28477
28478 default:
28479 break;
28480 }
28481
28482 /*-------------------------------------------------------------------------
28483 Send Suspend Request to HAL
28484 -------------------------------------------------------------------------*/
28485 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28486 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28487
28488 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28489 usSendSize, pWDICtx->pfncRspCB,
28490 pWDICtx->pReqStatusUserData,
28491 WDI_LPHB_CFG_RESP);
28492
28493 return wdiStatus;
28494}
28495
28496/**
28497 @brief WDI_LPHBConfReq -
28498 LPHB configuration request API
28499
28500 @param lphbconfParam : configuration parameter
28501 usrData : client context
28502 lphbCfgCb : callback function pointer
28503
28504 @see
28505 @return Success or fail status code
28506*/
28507WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28508 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28509{
28510 WDI_EventInfoType wdiEventData;
28511
28512 /*------------------------------------------------------------------------
28513 Sanity Check
28514 ------------------------------------------------------------------------*/
28515 if (eWLAN_PAL_FALSE == gWDIInitialized)
28516 {
28517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28518 "WDI API call before module is initialized - Fail request");
28519
28520 return WDI_STATUS_E_NOT_ALLOWED;
28521 }
28522
28523 /*------------------------------------------------------------------------
28524 Fill in Event data and post to the Main FSM
28525 ------------------------------------------------------------------------*/
28526 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28527 wdiEventData.pEventData = lphbconfParam;
28528 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28529 wdiEventData.pCBfnc = lphbCfgCb;
28530 wdiEventData.pUserData = usrData;
28531
28532 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28533}
28534#endif /* FEATURE_WLAN_LPHB */
28535
Ravi Joshi96d77342013-07-23 08:37:49 -070028536/**
28537 @brief WDI_ProcessIbssPeerInactivityInd
28538 Process peer inactivity indication coming from HAL
28539
28540 @param pWDICtx: pointer to the WLAN DAL context
28541 pEventData: pointer to the event information structure
28542 @see
28543 @return Result of the function call
28544*/
28545WDI_Status
28546WDI_ProcessIbssPeerInactivityInd
28547(
28548 WDI_ControlBlockType* pWDICtx,
28549 WDI_EventInfoType* pEventData
28550)
28551{
28552 WDI_LowLevelIndType wdiInd;
28553 tIbssPeerInactivityIndMsg halIbssIndMsg;
28554
28555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28556
28557 /*-------------------------------------------------------------------------
28558 Sanity check
28559 -------------------------------------------------------------------------*/
28560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28561 ( NULL == pEventData->pEventData ))
28562 {
28563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28564 "%s: Invalid parameters", __func__);
28565 WDI_ASSERT( 0 );
28566 return WDI_STATUS_E_FAILURE;
28567 }
28568
28569 /*-------------------------------------------------------------------------
28570 Extract indication and send it to UMAC
28571 -------------------------------------------------------------------------*/
28572 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28573 pEventData->pEventData,
28574 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28575
28576 /*Fill in the indication parameters*/
28577 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28578
28579 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28580 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28581
28582 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28583 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28584
28585 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28586 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28587 sizeof(tSirMacAddr));
28588
28589 /*Notify UMAC*/
28590 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28591
28592 return WDI_STATUS_SUCCESS;
28593
28594} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028595
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028596/**
28597*@brief WDI_RateUpdateInd will be called when the upper MAC
28598 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028599
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028600
28601 @param wdiRateUpdateIndParams:
28602
28603
28604 @see
28605 @return Result of the function call
28606*/
28607WDI_Status
28608WDI_RateUpdateInd
28609(
28610 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28611)
28612{
28613 WDI_EventInfoType wdiEventData;
28614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28615
28616 /*------------------------------------------------------------------------
28617 Sanity Check
28618 ------------------------------------------------------------------------*/
28619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28620 {
28621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28622 "WDI API call before module is initialized - Fail request");
28623
28624 return WDI_STATUS_E_NOT_ALLOWED;
28625 }
28626
28627 /*------------------------------------------------------------------------
28628 Fill in Event data and post to the Main FSM
28629 ------------------------------------------------------------------------*/
28630 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28631 wdiEventData.pEventData = wdiRateUpdateIndParams;
28632 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28633 wdiEventData.pCBfnc = NULL;
28634 wdiEventData.pUserData = NULL;
28635
28636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28637
28638}/* WDI_RateUpdateInd */
28639
28640/**
28641 @brief Process Rate Update Indication and post it to HAL
28642
28643 @param pWDICtx: pointer to the WLAN DAL context
28644 pEventData: pointer to the event information structure
28645
28646 @see
28647 @return Result of the function call
28648*/
28649WDI_Status
28650WDI_ProcessRateUpdateInd
28651(
28652 WDI_ControlBlockType* pWDICtx,
28653 WDI_EventInfoType* pEventData
28654)
28655{
28656 wpt_uint8* pSendBuffer = NULL;
28657 wpt_uint16 usDataOffset = 0;
28658 wpt_uint16 usSendSize = 0;
28659 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28660 tHalRateUpdateInd *pRateUpdateInd;
28661 WDI_Status wdiStatus;
28662
28663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28664
28665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28666 "%s", __func__);
28667
28668 /*-------------------------------------------------------------------------
28669 Sanity check
28670 -------------------------------------------------------------------------*/
28671 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28672 {
28673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28674 "%s: Invalid parameters", __func__);
28675 WDI_ASSERT(0);
28676 return WDI_STATUS_E_FAILURE;
28677 }
28678 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28679 /*-----------------------------------------------------------------------
28680 Get message buffer
28681 -----------------------------------------------------------------------*/
28682
28683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28684 WDI_RATE_UPDATE_IND,
28685 sizeof(tHalRateUpdateParams),
28686 &pSendBuffer, &usDataOffset, &usSendSize))||
28687 ( usSendSize < (usDataOffset +
28688 sizeof(tHalRateUpdateParams) )))
28689 {
28690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28691 "Unable to get send buffer in Rate Update Indication %p ",
28692 pEventData);
28693 WDI_ASSERT(0);
28694 return WDI_STATUS_E_FAILURE;
28695 }
28696
28697 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28698
28699 /* Copy the bssid */
28700 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28701 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28702
28703 /* Copy the tx flags */
28704 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28705 pwdiRateUpdateInd->ucastDataRateTxFlag;
28706 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28707 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28708 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28709 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28710 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28711 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28712
28713 /* Copy the tx rates */
28714 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28715 pwdiRateUpdateInd->ucastDataRate;
28716 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28717 pwdiRateUpdateInd->reliableMcastDataRate;
28718 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28719 pwdiRateUpdateInd->mcastDataRate24GHz;
28720 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28721 pwdiRateUpdateInd->mcastDataRate5GHz;
28722
28723 /*-------------------------------------------------------------------------
28724 Send Rate Update Indication to HAL
28725 -------------------------------------------------------------------------*/
28726 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28727 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28728
28729 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28730
28731 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28732 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28733
28734} /* WDI_ProcessRateUpdateInd */
28735
28736#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028737/**
28738 @brief Process stop batch indication from WDA
28739
28740 @param pWDICtx: pointer to the WLAN DAL context
28741 pEventData: pointer to the event information structure
28742
28743 @see
28744 @return Result of the function call
28745*/
28746WDI_Status
28747WDI_ProcessStopBatchScanInd
28748(
28749 WDI_ControlBlockType* pWDICtx,
28750 WDI_EventInfoType* pEventData
28751)
28752{
28753 wpt_uint8* pSendBuffer = NULL;
28754 wpt_uint16 usDataOffset = 0;
28755 wpt_uint16 usSendSize = 0;
28756 WDI_Status wdiStatus;
28757 tHalBatchScanStopIndParam *pHalInd = NULL;
28758 WDI_StopBatchScanIndType *pWdiInd = NULL;
28759
28760
28761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28762
28763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28764 "%s", __func__);
28765
28766 /*-------------------------------------------------------------------------
28767 Sanity check
28768 -------------------------------------------------------------------------*/
28769
28770 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28771 {
28772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28773 "%s: Invalid parameters", __func__);
28774 WDI_ASSERT(0);
28775 return WDI_STATUS_E_FAILURE;
28776 }
28777 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28778 /*-----------------------------------------------------------------------
28779 Get message buffer
28780 -----------------------------------------------------------------------*/
28781
28782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28783 WDI_STOP_BATCH_SCAN_IND,
28784 sizeof(tHalBatchScanStopIndParam),
28785 &pSendBuffer, &usDataOffset, &usSendSize))||
28786 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28787 {
28788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28789 "Unable to get send buffer in stop batch scan ind %p ",
28790 pEventData);
28791 WDI_ASSERT(0);
28792 return WDI_STATUS_E_FAILURE;
28793 }
28794
28795 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28796 pHalInd->param = pWdiInd->param;
28797
28798 pWDICtx->pReqStatusUserData = NULL;
28799 pWDICtx->pfncRspCB = NULL;
28800 /*-------------------------------------------------------------------------
28801 Send Stop batch scan indication to HAL
28802 -------------------------------------------------------------------------*/
28803 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28804 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28805}
28806
28807/**
28808 @brief This API is called to trigger batch scan results from FW
28809
28810 @param pWDICtx: pointer to the WLAN DAL context
28811 pEventData: pointer to the event information structure
28812
28813 @see
28814 @return Result of the function call
28815*/
28816WDI_Status
28817WDI_ProcessTriggerBatchScanResultInd
28818(
28819 WDI_ControlBlockType* pWDICtx,
28820 WDI_EventInfoType* pEventData
28821)
28822{
28823 WDI_Status wdiStatus;
28824 wpt_uint8* pSendBuffer = NULL;
28825 wpt_uint16 usDataOffset = 0;
28826 wpt_uint16 usSendSize = 0;
28827 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28828 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28829
28830
28831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28832
28833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28834 "%s", __func__);
28835
28836 /*-------------------------------------------------------------------------
28837 Sanity check
28838 -------------------------------------------------------------------------*/
28839
28840 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28841 {
28842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28843 "%s: Invalid parameters", __func__);
28844 WDI_ASSERT(0);
28845 return WDI_STATUS_E_FAILURE;
28846 }
28847 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28848 /*-----------------------------------------------------------------------
28849 Get message buffer
28850 -----------------------------------------------------------------------*/
28851
28852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28853 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28854 sizeof(tHalBatchScanTriggerResultParam),
28855 &pSendBuffer, &usDataOffset, &usSendSize))||
28856 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28857 {
28858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28859 "Unable to get send buffer in stop batch scan ind %p ",
28860 pEventData);
28861 WDI_ASSERT(0);
28862 return WDI_STATUS_E_FAILURE;
28863 }
28864
28865 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28866 pHalInd->param = pWdiInd->param;
28867
28868 pWDICtx->pReqStatusUserData = NULL;
28869 pWDICtx->pfncRspCB = NULL;
28870 /*-------------------------------------------------------------------------
28871 Send trigger batch scan result indication to HAL
28872 -------------------------------------------------------------------------*/
28873 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28874 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28875}
28876
28877
28878/**
28879 @brief Process set batch scan response from FW
28880
28881 @param pWDICtx: pointer to the WLAN DAL context
28882 pEventData: pointer to the event information structure
28883
28884 @see
28885 @return Result of the function call
28886*/
28887WDI_Status
28888WDI_ProcessSetBatchScanRsp
28889(
28890 WDI_ControlBlockType* pWDICtx,
28891 WDI_EventInfoType* pEventData
28892)
28893{
28894 WDI_SetBatchScanCb wdiSetBatchScanCb;
28895 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28896
28897 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28899
28900 /*sanity check*/
28901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28902 ( NULL == pEventData->pEventData))
28903 {
28904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28905 "%s: Invalid parameters", __func__);
28906 WDI_ASSERT(0);
28907 return WDI_STATUS_E_FAILURE;
28908 }
28909
28910 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28911 if ( NULL == wdiSetBatchScanCb)
28912 {
28913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28914 "%s: call back function is NULL", __func__);
28915 WDI_ASSERT(0);
28916 return WDI_STATUS_E_FAILURE;
28917 }
28918
28919 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28920
28921 if (NULL == pSetBatchScanRsp)
28922 {
28923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028924 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028925 pWDICtx, pEventData, pEventData->pEventData);
28926 WDI_ASSERT(0);
28927 return WDI_STATUS_E_FAILURE;
28928 }
28929
28930 /*extract response and send it to UMAC*/
28931 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28932
28933 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28934
28935 /*Notify UMAC*/
28936 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28937
28938 wpalMemoryFree(pSetBatchScanRsp);
28939
28940 return WDI_STATUS_SUCCESS;
28941}/*WDI_ProcessSetBatchScanRsp*/
28942
28943/**
28944 @brief Process batch scan result indication from FW
28945
28946 @param pWDICtx: pointer to the WLAN DAL context
28947 pEventData: pointer to the event information structure
28948
28949 @see
28950 @return Result of the function call
28951*/
28952WDI_Status
28953WDI_ProcessBatchScanResultInd
28954(
28955 WDI_ControlBlockType* pWDICtx,
28956 WDI_EventInfoType* pEventData
28957)
28958{
28959 void *pBatchScanResultInd;
28960 WDI_LowLevelIndType wdiInd;
28961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28962
28963 /*sanity check*/
28964 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28965 ( NULL == pEventData->pEventData))
28966 {
28967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28968 "%s: Invalid parameters", __func__);
28969 WDI_ASSERT(0);
28970 return WDI_STATUS_E_FAILURE;
28971 }
28972
28973 /*extract response and send it to UMAC*/
28974 pBatchScanResultInd = (void *)pEventData->pEventData;
28975
28976 /*Fill in the indication parameters*/
28977 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28978
28979 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28980
28981 /*Notify UMAC*/
28982 if (pWDICtx->wdiLowLevelIndCB)
28983 {
28984 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28985 }
28986 else
28987 {
28988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28989 "%s: WDILowLevelIndCb is null", __func__);
28990 WDI_ASSERT(0);
28991 return WDI_STATUS_E_FAILURE;
28992 }
28993
28994 return WDI_STATUS_SUCCESS;
28995} /*End of WDI_ProcessBatchScanResultInd*/
28996
28997/**
28998 @brief WDI_ProcessSetBatchScanReq -
28999 Set batch scan request to FW
29000
29001 @param pWDICtx : wdi context
29002 pEventData : indication data
29003
29004 @see
29005 @return none
29006*/
29007WDI_Status WDI_ProcessSetBatchScanReq
29008(
29009 WDI_ControlBlockType* pWDICtx,
29010 WDI_EventInfoType* pEventData
29011)
29012{
29013 WDI_SetBatchScanReqType *pWdiReq;
29014 WDI_Status wdiStatus;
29015 wpt_uint8* pSendBuffer = NULL;
29016 wpt_uint16 usDataOffset = 0;
29017 wpt_uint16 usSendSize = 0;
29018 tHalBatchScanSetParams *pHalReq;
29019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29020
29021 /*sanity check*/
29022 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29023 {
29024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29025 "%s: Invalid parameters in set batch scan request", __func__);
29026 WDI_ASSERT(0);
29027 return WDI_STATUS_E_FAILURE;
29028 }
29029
29030
29031 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29032
29033
29034 /*get message buffer*/
29035 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29036 WDI_SET_BATCH_SCAN_REQ,
29037 sizeof(tHalBatchScanSetParams),
29038 &pSendBuffer, &usDataOffset, &usSendSize))||
29039 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29040 {
29041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29042 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29043 WDI_ASSERT(0);
29044 return WDI_STATUS_E_FAILURE;
29045 }
29046
29047 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29048
29049 pHalReq->rtt = pWdiReq->rtt;
29050 pHalReq->rfBand = pWdiReq->rfBand;
29051 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29052 pHalReq->scanInterval = pWdiReq->scanFrequency;
29053 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29054
29055 /*send set batch scan request to fw*/
29056 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29057 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29058
29059 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29060 usSendSize, pWDICtx->pfncRspCB,
29061 pWDICtx->pReqStatusUserData,
29062 WDI_SET_BATCH_SCAN_RESP);
29063
29064 return wdiStatus;
29065}
29066
29067/**
29068 @brief WDI_SetBatchScanReq
29069 This API is called to set batch scan request in FW
29070
29071 @param pBatchScanReqParam : pointer to set batch scan re param
29072 usrData : Client context
29073 setBatchScanRspCb : set batch scan resp callback
29074 @see
29075 @return SUCCESS or FAIL
29076*/
29077WDI_Status WDI_SetBatchScanReq
29078(
29079 void *pBatchScanReqParam,
29080 void *usrData,
29081 WDI_SetBatchScanCb setBatchScanRspCb
29082)
29083{
29084 WDI_EventInfoType wdiEventData;
29085
29086 /*sanity check*/
29087 if (eWLAN_PAL_FALSE == gWDIInitialized)
29088 {
29089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29090 "WDI API call before module is initialized - Fail request");
29091
29092 return WDI_STATUS_E_NOT_ALLOWED;
29093 }
29094
29095 /* fill in event data and post to the main FSM */
29096 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29097 wdiEventData.pEventData = pBatchScanReqParam;
29098 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29099 wdiEventData.pCBfnc = setBatchScanRspCb;
29100 wdiEventData.pUserData = usrData;
29101
29102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29103}
29104
29105/**
29106 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29107
29108 @param None
29109
29110 @see
29111
29112 @return Status of the request
29113*/
29114WDI_Status
29115WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29116{
29117 WDI_EventInfoType wdiEventData;
29118
29119 /*-------------------------------------------------------------------------
29120 Sanity Check
29121 ------------------------------------------------------------------------*/
29122 if (eWLAN_PAL_FALSE == gWDIInitialized)
29123 {
29124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29125 "WDI API call before module is initialized - Fail request!");
29126
29127 return WDI_STATUS_E_NOT_ALLOWED;
29128 }
29129
29130 /*-------------------------------------------------------------------------
29131 Fill in Event data and post to the Main FSM
29132 ------------------------------------------------------------------------*/
29133 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29134 wdiEventData.pEventData = pWdiReq;
29135 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29136 wdiEventData.pCBfnc = NULL;
29137 wdiEventData.pUserData = NULL;
29138
29139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29140}
29141
29142/**
29143 @brief WDI_TriggerBatchScanResultInd
29144 This API is called to pull batch scan result from FW
29145
29146 @param pWdiReq : pointer to get batch scan ind param
29147 @see
29148 @return SUCCESS or FAIL
29149*/
29150WDI_Status WDI_TriggerBatchScanResultInd
29151(
29152 WDI_TriggerBatchScanResultIndType *pWdiReq
29153)
29154{
29155 WDI_EventInfoType wdiEventData;
29156 /*-------------------------------------------------------------------------
29157 Sanity Check
29158 ------------------------------------------------------------------------*/
29159 if (eWLAN_PAL_FALSE == gWDIInitialized)
29160 {
29161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29162 "WDI API call before module is initialized - Fail request!");
29163
29164 return WDI_STATUS_E_NOT_ALLOWED;
29165 }
29166
29167 /*-------------------------------------------------------------------------
29168 Fill in Event data and post to the Main FSM
29169 ------------------------------------------------------------------------*/
29170 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29171 wdiEventData.pEventData = pWdiReq;
29172 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29173 wdiEventData.pCBfnc = NULL;
29174 wdiEventData.pUserData = NULL;
29175
29176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29177}
Rajeev3db91f12013-10-05 11:03:42 +053029178#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Changd95d6622013-12-15 15:18:55 -080029179
29180#ifdef FEATURE_WLAN_CH_AVOID
29181/**
29182 @brief v -WDI_ProcessChAvoidInd
29183
29184
29185 @param pWDICtx : wdi context
29186 pEventData : indication data
29187 @see
29188 @return Result of the function call
29189*/
29190WDI_Status
29191WDI_ProcessChAvoidInd
29192(
29193 WDI_ControlBlockType* pWDICtx,
29194 WDI_EventInfoType* pEventData
29195)
29196{
29197 WDI_LowLevelIndType wdiInd;
29198 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29199 wpt_uint16 rangeLoop;
29200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29201
29202 /*-------------------------------------------------------------------------
29203 Sanity check
29204 -------------------------------------------------------------------------*/
29205 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29206 (NULL == pEventData->pEventData))
29207 {
29208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29209 "%s: Invalid parameters", __func__);
29210 WDI_ASSERT(0);
29211 return WDI_STATUS_E_FAILURE;
29212 }
29213
29214 /*-------------------------------------------------------------------------
29215 Extract indication and send it to UMAC
29216 -------------------------------------------------------------------------*/
29217 wpalMemoryCopy(&chAvoidIndicationParam,
29218 pEventData->pEventData,
29219 sizeof(tHalAvoidFreqRangeIndParams));
29220
29221 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29222 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29223 chAvoidIndicationParam.avoidCnt;
29224 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29225 (void *)chAvoidIndicationParam.avoidRange,
29226 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29227 sizeof(WDI_ChAvoidFreqType));
29228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29229 "%s: band count %d", __func__,
29230 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29231 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29232 {
29233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29234 "%s: srart freq %d, end freq %d", __func__,
29235 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29236 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29237 }
29238
29239 /*Notify UMAC*/
29240 if (pWDICtx->wdiLowLevelIndCB)
29241 {
29242 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29243 }
29244
29245 return WDI_STATUS_SUCCESS;
29246}
29247#endif /* FEATURE_WLAN_CH_AVOID */
29248